Skip to content

Commit d1232a4

Browse files
committed
chore(docker): Update user service
Signed-off-by: SeeuSim <[email protected]>
1 parent c63107e commit d1232a4

File tree

12 files changed

+91
-72
lines changed

12 files changed

+91
-72
lines changed

backend/collaboration/docker-compose.yml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,12 @@ services:
2929
ports:
3030
- "9003:8001"
3131
command: node dist/index.js
32+
env_file:
33+
- ./.env.local
3234
environment:
3335
# Docker Compose Specific
3436
- EXPRESS_DB_HOST=collab-db
3537
- EXPRESS_DB_PORT=5432
36-
# Env File vars
37-
- POSTGRES_DB=${POSTGRES_DB}
38-
- POSTGRES_USER=${POSTGRES_USER}
39-
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
4038
depends_on:
4139
- collab-db
4240
volumes:

backend/question/docker-compose.yml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,14 @@ services:
2929
ports:
3030
- "9002:8001"
3131
command: node dist/index.js
32+
env_file:
33+
- ./.env.local
3234
environment:
3335
# Docker Compose Specific
3436
- EXPRESS_DB_HOST=question-db
3537
- EXPRESS_DB_PORT=5432
36-
# Env File vars
37-
- POSTGRES_DB=${POSTGRES_DB}
38-
- POSTGRES_USER=${POSTGRES_USER}
39-
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
4038
depends_on:
4139
- question-db
40+
4241
volumes:
4342
question-db-docker:

backend/user/.env.local

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1+
EXPRESS_ENV="local"
12
EXPRESS_DB_HOST="localhost"
23
EXPRESS_DB_PORT=5431
34
POSTGRES_DB="user"
45
POSTGRES_USER="peerprep-user-express"
56
POSTGRES_PASSWORD="69/X8JxtAVsM+0YHT4RR5D7Ahf7bTobI4EED64FrzIU="
67
PGDATA="/data/user-db"
8+
9+
EXPRESS_JWT_SECRET_KEY="jd+9qlXA0a3YsmVf2KJgyiJ3SprIR318IAwhRXck4Y8="

backend/user/docker-compose.yml

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,42 @@
1+
# Command: docker-compose --env-file .env.local up -d
2+
13
services:
2-
postgres:
3-
hostname: postgres
4+
user-db:
5+
hostname: "user-db"
46
image: postgres:16.4
5-
container_name: "user_db"
7+
container_name: "user-db"
68
build:
79
context: ./src/lib/db
8-
environment:
9-
POSTGRES_DB: "User"
10-
POSTGRES_USER: "user"
11-
POSTGRES_PASSWORD: "user"
12-
PGDATA: "/data/user-db"
10+
env_file:
11+
- ./.env.local
1312
volumes:
14-
- "user-db-docker:/data/user-db"
13+
- "user-db-docker:${PGDATA}"
1514
# - ./init.sql:/docker-entrypoint-initdb.d/init.sql
1615
ports:
17-
- "5431:5432"
16+
- "${EXPRESS_DB_PORT}:5432"
1817
restart: unless-stopped
1918

20-
express:
19+
user-express:
2120
image: "user-express"
2221
container_name: "user-express"
2322
build:
2423
context: ./
2524
dockerfile: ./express.Dockerfile
2625
target: build
26+
args:
27+
# For building with the correct env vars
28+
- env=${EXPRESS_ENV}
2729
ports:
2830
- "9001:8001"
2931
command: node dist/index.js
32+
env_file:
33+
- ./.env.local
34+
environment:
35+
# Docker Compose Specific
36+
- EXPRESS_DB_HOST=user-db
37+
- EXPRESS_DB_PORT=5432
3038
depends_on:
31-
postgres:
32-
condition: service_started
33-
restart: true
39+
- user-db
3440

3541
volumes:
3642
user-db-docker:

backend/user/drizzle.config.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
import { defineConfig } from 'drizzle-kit';
22

3+
const config = {
4+
host: process.env.EXPRESS_DB_HOST!,
5+
port: Number.parseInt(process.env.EXPRESS_DB_PORT!),
6+
database: process.env.POSTGRES_DB!,
7+
user: process.env.POSTGRES_USER,
8+
password: process.env.POSTGRES_PASSWORD,
9+
};
10+
311
export default defineConfig({
412
schema: './src/lib/db/schema.ts',
513
out: './drizzle',
614
dialect: 'postgresql',
7-
dbCredentials: {
8-
host: 'localhost',
9-
port: 5431,
10-
database: 'User',
11-
user: 'user',
12-
password: 'user',
13-
},
15+
dbCredentials: config,
1416
});

backend/user/drizzle.migrate.mts

Lines changed: 0 additions & 18 deletions
This file was deleted.

backend/user/drizzle.migrate.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import postgres from 'postgres';
2+
import { drizzle } from 'drizzle-orm/postgres-js';
3+
import { migrate } from 'drizzle-orm/postgres-js/migrator';
4+
5+
const config = {
6+
host: process.env.EXPRESS_DB_HOST!,
7+
port: Number.parseInt(process.env.EXPRESS_DB_PORT!),
8+
database: process.env.POSTGRES_DB,
9+
user: process.env.POSTGRES_USER,
10+
password: process.env.POSTGRES_PASSWORD,
11+
};
12+
const migrationConnection = postgres({ ...config, max: 1 });
13+
14+
const db = drizzle(migrationConnection);
15+
16+
const main = async () => {
17+
await migrate(db, { migrationsFolder: 'drizzle' });
18+
await migrationConnection.end();
19+
};
20+
21+
void main();

backend/user/express.Dockerfile

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
FROM node:lts-alpine AS build
2-
WORKDIR /data/user-express
2+
WORKDIR /data/question-express
33
COPY package*.json ./
44
RUN npm install
55
COPY . .
66
RUN npm run build
77

88
FROM node:lts-alpine AS production
9-
WORKDIR /data/user-express
10-
COPY --from=build /data/user-express/package*.json ./
9+
WORKDIR /data/question-express
10+
COPY --from=build /data/question-express/package*.json ./
1111
RUN npm ci --omit=dev
12-
COPY --from=build --chown=node:node /data/user-express/dist ./dist
12+
COPY --from=build --chown=node:node /data/question-express/dist ./dist
13+
14+
ARG env
15+
COPY ".env.${env}" .
1316
EXPOSE 8001
14-
ENTRYPOINT ["node", "dist/index.js"]
17+
CMD [ "npm", "run", "start" ]

backend/user/package.json

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@
33
"version": "1.0.0",
44
"main": "dist/index.js",
55
"scripts": {
6-
"dev": "nodemon src/index.ts | pino-pretty",
7-
"build": "tsc",
8-
"start": "node dist/index.js",
6+
"dev": "env-cmd -f .env.local nodemon src/index.ts | pino-pretty",
7+
"build": "env-cmd -f .env.local tsc && tsc-alias",
8+
"start": "env-cmd -f .env.local node dist/index.js",
9+
"build:prod": "env-cmd -f .env.prod tsc && tsc-alias",
10+
"start:prod": "env-cmd -f .env.local node dist/index.js",
11+
"db:generate": "env-cmd -f .env.local drizzle-kit generate",
12+
"db:migrate": "env-cmd -f .env.local tsx drizzle.migrate.ts",
13+
"db:inspect": "env-cmd -f .env.local drizzle-kit studio",
914
"fmt": "prettier --config .prettierrc src --write",
10-
"db:generate": "drizzle-kit generate",
11-
"db:migrate": "tsx drizzle.migrate.mts",
12-
"db:inspect": "drizzle-kit studio",
1315
"test": "echo \"Error: no test specified\" && exit 1"
1416
},
1517
"keywords": [],
@@ -19,6 +21,7 @@
1921
"dependencies": {
2022
"bcrypt": "^5.1.1",
2123
"drizzle-orm": "^0.33.0",
24+
"env-cmd": "^10.1.0",
2225
"express": "^4.21.0",
2326
"express-rate-limit": "^7.4.0",
2427
"helmet": "^7.1.0",
@@ -40,6 +43,7 @@
4043
"pino-pretty": "^11.2.2",
4144
"regenerator-runtime": "^0.14.1",
4245
"ts-node": "^10.9.2",
46+
"tsc-alias": "^1.8.10",
4347
"tsconfig-paths": "^4.2.0"
4448
}
4549
}

backend/user/src/config.ts

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,9 @@
1-
export const JWT_SECRET_KEY = 'secret';
1+
export const JWT_SECRET_KEY = process.env.EXPRESS_JWT_SECRET_KEY!;
22

3-
const DB_HOST = 'localhost';
4-
const DB_PORT = 5431;
5-
const DB_NAME = 'User';
6-
const DB_USER = 'user';
7-
const DB_PASSWORD = 'user';
83
export const dbConfig = {
9-
host: DB_HOST,
10-
port: DB_PORT,
11-
database: DB_NAME,
12-
user: DB_USER,
13-
password: DB_PASSWORD,
4+
host: process.env.EXPRESS_DB_HOST!,
5+
port: Number.parseInt(process.env.EXPRESS_DB_PORT!),
6+
database: process.env.POSTGRES_DB!,
7+
user: process.env.POSTGRES_USER,
8+
password: process.env.POSTGRES_PASSWORD,
149
};

0 commit comments

Comments
 (0)