feat: self host packaging (HBE-166) (#41)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
This commit is contained in:
@@ -1,13 +1,17 @@
|
||||
FROM node:lts
|
||||
FROM node:18.8.0 AS builder
|
||||
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
# # Install pnpm
|
||||
RUN npm i -g pnpm
|
||||
|
||||
COPY .env .
|
||||
COPY pnpm-lock.yaml .
|
||||
RUN pnpm fetch
|
||||
|
||||
ENV APP_PORT=${PORT}
|
||||
ENV DB_URL=${DATABASE_URL}
|
||||
|
||||
# # PNPM package install
|
||||
COPY ./packages/hoppscotch-backend .
|
||||
RUN pnpm i --filter hoppscotch-backend
|
||||
@@ -15,12 +19,20 @@ RUN pnpm i --filter hoppscotch-backend
|
||||
# Prisma bits
|
||||
RUN pnpm exec prisma generate
|
||||
|
||||
FROM builder AS dev
|
||||
|
||||
EXPOSE 3170
|
||||
EXPOSE 9229
|
||||
|
||||
ENV APP_PORT=${PORT}
|
||||
ENV DB_URL=${DATABASE_URL}
|
||||
ENV PRODUCTION=true
|
||||
ENV PRODUCTION = false
|
||||
|
||||
CMD ["pnpm", "run", "start"]
|
||||
|
||||
EXPOSE 3170
|
||||
|
||||
|
||||
FROM builder AS prod
|
||||
|
||||
ENV PRODUCTION = true
|
||||
|
||||
CMD ["pnpm", "run", "start:prod"]
|
||||
|
||||
EXPOSE 3170
|
||||
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
version: '3.0'
|
||||
services:
|
||||
local:
|
||||
build:
|
||||
dockerfile: packages/hoppscotch-backend/Dockerfile
|
||||
context: ../../
|
||||
|
||||
env_file:
|
||||
- .env
|
||||
command: [ "pnpm", "run", "start:dev" ]
|
||||
environment:
|
||||
- PRODUCTION=false
|
||||
- DATABASE_URL=postgresql://postgres:testpass@dev-db:5432/hoppscotch?connect_timeout=300
|
||||
- PORT=3000
|
||||
volumes:
|
||||
- .:/usr/src/app
|
||||
- /usr/src/app/node_modules/
|
||||
depends_on:
|
||||
- dev-db
|
||||
ports:
|
||||
- "3170:3000"
|
||||
- "9229:9229"
|
||||
|
||||
dev-db:
|
||||
image: postgres
|
||||
ports:
|
||||
- "5432:5432"
|
||||
environment:
|
||||
POSTGRES_PASSWORD: testpass
|
||||
POSTGRES_DB: hoppscotch
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "hoppscotch-backend",
|
||||
"version": "0.0.1",
|
||||
"version": "2023.4.0",
|
||||
"description": "",
|
||||
"author": "",
|
||||
"private": true,
|
||||
|
||||
@@ -76,7 +76,7 @@ export class AdminService {
|
||||
template: 'code-your-own',
|
||||
variables: {
|
||||
inviteeEmail: inviteeEmail,
|
||||
magicLink: `${process.env.APP_DOMAIN}`,
|
||||
magicLink: `${process.env.VITE_BASE_URL}`,
|
||||
},
|
||||
});
|
||||
} catch (e) {
|
||||
|
||||
@@ -94,9 +94,9 @@ export class AuthService {
|
||||
*/
|
||||
private async generateRefreshToken(userUid: string) {
|
||||
const refreshTokenPayload: RefreshTokenPayload = {
|
||||
iss: process.env.APP_DOMAIN,
|
||||
iss: process.env.VITE_BASE_URL,
|
||||
sub: userUid,
|
||||
aud: [process.env.APP_DOMAIN],
|
||||
aud: [process.env.VITE_BASE_URL],
|
||||
};
|
||||
|
||||
const refreshToken = await this.jwtService.sign(refreshTokenPayload, {
|
||||
@@ -126,9 +126,9 @@ export class AuthService {
|
||||
*/
|
||||
async generateAuthTokens(userUid: string) {
|
||||
const accessTokenPayload: AccessTokenPayload = {
|
||||
iss: process.env.APP_DOMAIN,
|
||||
iss: process.env.VITE_BASE_URL,
|
||||
sub: userUid,
|
||||
aud: [process.env.APP_DOMAIN],
|
||||
aud: [process.env.VITE_BASE_URL],
|
||||
};
|
||||
|
||||
const refreshToken = await this.generateRefreshToken(userUid);
|
||||
@@ -217,7 +217,7 @@ export class AuthService {
|
||||
template: 'code-your-own',
|
||||
variables: {
|
||||
inviteeEmail: email,
|
||||
magicLink: `${process.env.APP_DOMAIN}/magic-link?token=${generatedTokens.token}`,
|
||||
magicLink: `${process.env.VITE_BASE_URL}/magic-link?token=${generatedTokens.token}`,
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
@@ -21,6 +21,12 @@ import { UserSettingsResolver } from './user-settings/user-settings.resolver';
|
||||
import { UserResolver } from './user/user.resolver';
|
||||
import { Logger } from '@nestjs/common';
|
||||
import { AdminResolver } from './admin/admin.resolver';
|
||||
import { TeamEnvsTeamResolver } from './team-environments/team.resolver';
|
||||
import { TeamTeamInviteExtResolver } from './team-invitation/team-teaminvite-ext.resolver';
|
||||
import { UserRequestUserCollectionResolver } from './user-request/resolvers/user-collection.resolver';
|
||||
import { UserEnvsUserResolver } from './user-environment/user.resolver';
|
||||
import { UserHistoryUserResolver } from './user-history/user.resolver';
|
||||
import { UserSettingsUserResolver } from './user-settings/user.resolver';
|
||||
|
||||
/**
|
||||
* All the resolvers present in the application.
|
||||
@@ -31,18 +37,25 @@ const RESOLVERS = [
|
||||
AdminResolver,
|
||||
ShortcodeResolver,
|
||||
TeamResolver,
|
||||
TeamEnvsTeamResolver,
|
||||
TeamMemberResolver,
|
||||
TeamCollectionResolver,
|
||||
TeamTeamInviteExtResolver,
|
||||
TeamEnvironmentsResolver,
|
||||
TeamEnvsTeamResolver,
|
||||
TeamInvitationResolver,
|
||||
TeamRequestResolver,
|
||||
UserResolver,
|
||||
UserCollectionResolver,
|
||||
UserEnvironmentsResolver,
|
||||
UserEnvsUserResolver,
|
||||
UserHistoryUserResolver,
|
||||
UserHistoryResolver,
|
||||
UserCollectionResolver,
|
||||
UserRequestResolver,
|
||||
UserRequestUserCollectionResolver,
|
||||
UserSettingsResolver,
|
||||
UserSettingsUserResolver,
|
||||
];
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user