because I got bored of customising my CV for every job
1services:
2 db:
3 image: postgres:16-alpine
4 environment:
5 POSTGRES_USER: ${POSTGRES_USER:-cv}
6 POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-cv}
7 POSTGRES_DB: ${POSTGRES_DB:-cv}
8 ports:
9 - "${DB_PORT:-5432}:5432"
10 volumes:
11 - db-data:/var/lib/postgresql/data
12 healthcheck:
13 test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-cv} -d ${POSTGRES_DB:-cv}"]
14 interval: 10s
15 timeout: 5s
16 retries: 3
17
18 server:
19 build:
20 context: .
21 dockerfile: apps/server/Dockerfile
22 environment:
23 PORT: ${SERVER_PORT:-3000}
24 JWT_SECRET: ${JWT_SECRET:-your-super-secret-jwt-key-here}
25 JWT_ACCESS_TOKEN_EXPIRY: ${JWT_ACCESS_TOKEN_EXPIRY:-15m}
26 JWT_REFRESH_TOKEN_EXPIRY: ${JWT_REFRESH_TOKEN_EXPIRY:-7d}
27 DATABASE_URL: ${DATABASE_URL:-postgresql://cv:cv@db:5432/cv}
28 ENCRYPTION_KEY: ${ENCRYPTION_KEY}
29 RESEND_API_KEY: ${RESEND_API_KEY}
30 depends_on:
31 db:
32 condition: service_healthy
33 ports:
34 - "${SERVER_PORT:-3000}:3000"
35 volumes:
36 - ./apps/server/src:/app/apps/server/src
37 - ./apps/server/prisma:/app/apps/server/prisma
38 - ./packages:/app/packages
39 - npm-cache:/root/.npm
40 command: sh -c "npm run prisma:deploy --workspace=@cv/server && npm run dev --workspace=@cv/server"
41 healthcheck:
42 test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
43 interval: 15s
44 timeout: 5s
45 retries: 3
46 start_period: 30s
47
48 client:
49 build:
50 context: .
51 dockerfile: apps/client/Dockerfile
52 target: development
53 environment:
54 VITE_SERVER_URL: ${VITE_SERVER_URL:-http://localhost:3000}
55 VITE_DOCS_URL: ${VITE_DOCS_URL:-http://localhost:3001}
56 GRAPHQL_SCHEMA_URL: ${GRAPHQL_SCHEMA_URL:-http://server:3000/graphql}
57 depends_on:
58 server:
59 condition: service_healthy
60 ports:
61 - "${CLIENT_PORT:-5173}:5173"
62 volumes:
63 - ./apps/client/src:/app/apps/client/src
64 - ./packages:/app/packages
65 - npm-cache:/root/.npm
66 command: sh -c "npm run codegen --workspace=@cv/client && npm run dev --workspace=@cv/client"
67 healthcheck:
68 test: ["CMD", "curl", "-f", "http://localhost:5173"]
69 interval: 15s
70 timeout: 5s
71 retries: 3
72 start_period: 20s
73
74 docs:
75 build:
76 context: .
77 dockerfile: apps/docs/Dockerfile
78 target: development
79 environment:
80 VITE_CLIENT_URL: ${VITE_CLIENT_URL:-http://localhost:5173}
81 VITE_SERVER_URL: ${VITE_SERVER_URL:-http://localhost:3000}
82 ports:
83 - "${DOCS_PORT:-3001}:3001"
84 volumes:
85 - ./apps/docs/src:/app/apps/docs/src
86 - ./apps/docs/content:/app/apps/docs/content
87 - ./packages:/app/packages
88 - npm-cache:/root/.npm
89 healthcheck:
90 test: ["CMD", "curl", "-f", "http://localhost:3001"]
91 interval: 15s
92 timeout: 5s
93 retries: 3
94 start_period: 20s
95
96volumes:
97 db-data:
98 npm-cache: