Skip to content

Commit 52f27b2

Browse files
committed
refactor: update Dockerfile and docker-compose for improved structure and PostgreSQL integration
1 parent 1110144 commit 52f27b2

5 files changed

Lines changed: 1707 additions & 2085 deletions

File tree

Dockerfile

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1-
FROM node:22
2-
WORKDIR /app
3-
RUN npm i -g pnpm
4-
COPY package*.json .
5-
RUN pnpm i
1+
FROM node:slim
2+
3+
RUN apt-get update -y \
4+
&& apt-get install -y openssl
5+
6+
WORKDIR /usr/src/app
7+
8+
COPY package.json pnpm-lock.yaml ./
9+
10+
RUN npm install -g pnpm
11+
612
COPY . .
7-
ARG JWT_SECRET="secret"
8-
ARG ADMIN_LOGIN="secret"
9-
ENV JWT_SECRET=${JWT_SECRET}
10-
ENV ADMIN_LOGIN=${ADMIN_LOGIN}
11-
RUN pnpm npx prisma generate
12-
RUN pnpm build
13-
EXPOSE 3000
14-
CMD ["node", "build/index.js", "--host", "0.0.0.0"]
13+
14+
RUN pnpm install
15+
16+
CMD ["sh", "-c", "pnpm run db:deploy && pnpm run build && pnpm run preview --host"]

docker-compose.yaml

Lines changed: 49 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,56 @@
11
services:
2-
web:
3-
image: docker.io/node:20.9.0-alpine3.18
4-
container_name: hintable-web
2+
postgres_db:
3+
image: postgres:15
4+
hostname: postgres_db
5+
container_name: postgres_db
6+
restart: always
57
environment:
6-
- ORIGIN=http://localhost:5173
8+
POSTGRES_DB: postgres
9+
POSTGRES_USER: postgres
10+
env_file:
11+
- .env.prod
12+
ports:
13+
- '5432:5432'
14+
networks:
15+
- prisma-network
16+
healthcheck:
17+
test: ["CMD-SHELL", "pg_isready -U postgres -d postgres"]
18+
interval: 5s
19+
timeout: 2s
20+
retries: 20
21+
22+
server:
23+
build:
24+
context: .
25+
dockerfile: Dockerfile
726
ports:
827
- '4173:4173'
28+
stdin_open: true
29+
tty: true # Keeps the container running for debugging
30+
depends_on:
31+
postgres_db:
32+
condition: service_healthy
933
env_file:
10-
- .env
34+
- .env.prod
35+
networks:
36+
- prisma-network
37+
prisma-studio:
38+
image: node:lts-alpine3.17
39+
working_dir: /usr/src/app
1140
volumes:
12-
- ./:/app
13-
- /app/node_modules/
14-
- /app/.pnpm-store/
15-
working_dir: /app
16-
command: sh -c "npm i -g pnpm@8.12.1 && pnpm install && pnpm run db:deploy && pnpm run build && pnpm run preview --host"
17-
depends_on:
18-
- db
19-
db:
20-
image: docker.io/postgres:13
21-
restart: always
22-
container_name: hintable-postgres
23-
environment:
24-
POSTGRES_USER: user
25-
POSTGRES_PASSWORD: pass
26-
POSTGRES_DB: db
41+
- .:/usr/src/app
42+
command: npx prisma studio --port 5555 --browser none
2743
ports:
28-
- '5432:5432'
29-
volumes:
30-
- /var/lib/postgresql/data
44+
- "5555:5555"
45+
env_file:
46+
- .env.prod
47+
networks:
48+
- prisma-network
49+
depends_on:
50+
postgres_db:
51+
condition: service_healthy
52+
server:
53+
condition: service_started
54+
networks:
55+
prisma-network:
56+
name: prisma-network

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
},
88
"scripts": {
99
"dev": "vite dev",
10-
"db:deploy": "prisma migrate deploy",
10+
"db:deploy": "prisma migrate deploy && prisma generate",
1111
"build": "vite build",
1212
"preview": "vite preview",
1313
"test": "playwright test",
@@ -17,6 +17,7 @@
1717
"lint": "prettier --check . && eslint .",
1818
"format": "prettier --write .",
1919
"seed": "node src/seed.js"
20+
2021
},
2122
"devDependencies": {
2223
"@fontsource-variable/montserrat": "^5.1.0",

0 commit comments

Comments
 (0)