-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
92 lines (88 loc) · 2.76 KB
/
Copy pathdocker-compose.yml
File metadata and controls
92 lines (88 loc) · 2.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
services:
postgres:
image: postgres:16-alpine
container_name: starter-postgres
ports:
- '5433:5432'
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
POSTGRES_DB: starter_db
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ['CMD-SHELL', 'pg_isready -U postgres']
interval: 5s
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
container_name: starter-redis
ports:
- '6380:6379'
volumes:
- redis_data:/data
healthcheck:
test: ['CMD', 'redis-cli', 'ping']
interval: 5s
timeout: 5s
retries: 5
api:
profiles: ['container-dev']
image: node:20-alpine
container_name: starter-api-dev
working_dir: /app
volumes:
- .:/app:delegated
# Keep Linux dependencies outside the Windows bind mount. Named volumes
# are reused when the container is recreated; anonymous volumes here
# would accumulate several GB on every recreate.
- root_node_modules:/app/node_modules
- server_node_modules:/app/apps/server/node_modules
- client_node_modules:/app/apps/client/node_modules
- admin_node_modules:/app/apps/admin/node_modules
- contracts_node_modules:/app/packages/contracts/node_modules
- database_node_modules:/app/packages/database/node_modules
- eslint_config_node_modules:/app/packages/eslint-config/node_modules
- types_node_modules:/app/packages/types/node_modules
- typescript_config_node_modules:/app/packages/typescript-config/node_modules
command: sh -c "corepack enable pnpm && pnpm install && npx prisma generate --schema=packages/database/prisma/schema.prisma && cd apps/server && pnpm run dev"
ports:
- '3002:3002'
env_file:
- ./apps/server/.env
environment:
DATABASE_URL: postgresql://postgres:password@postgres:5432/starter_db?schema=public
REDIS_HOST: redis
REDIS_PORT: 6379
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
maildev:
image: maildev/maildev:2.1.0
container_name: starter-maildev
ports:
- '1083:1080'
- '1025:1025'
healthcheck:
# The image default probes localhost, which resolves to IPv6 on some
# Docker hosts while Maildev listens on IPv4. Pin the loopback family.
test: ['CMD', 'wget', '--spider', '-q', 'http://127.0.0.1:1080/']
interval: 10s
timeout: 5s
retries: 12
start_period: 10s
volumes:
postgres_data:
redis_data:
root_node_modules:
server_node_modules:
client_node_modules:
admin_node_modules:
contracts_node_modules:
database_node_modules:
eslint_config_node_modules:
types_node_modules:
typescript_config_node_modules: