-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
126 lines (120 loc) · 3.65 KB
/
docker-compose.yml
File metadata and controls
126 lines (120 loc) · 3.65 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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
services:
postgres:
image: imresamu/postgis:18-3.6.1-trixie # PostGIS 3.6 + PostgreSQL 18, arm64 support
container_name: freundebuch-postgres
environment:
POSTGRES_DB: freundebuch_dev
POSTGRES_USER: freundebuch
POSTGRES_PASSWORD: dev_password
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql
healthcheck:
test: ["CMD-SHELL", "pg_isready -U freundebuch -d freundebuch_dev"]
interval: 10s
timeout: 5s
retries: 5
backend:
build:
context: .
dockerfile: docker/Dockerfile.backend
container_name: freundebuch-backend
depends_on:
postgres:
condition: service_healthy
environment:
DATABASE_URL: postgresql://freundebuch:dev_password@postgres:5432/freundebuch_dev
DATABASE_POOL_MIN: 2
DATABASE_POOL_MAX: 10
NODE_ENV: development
PORT: 3000
FRONTEND_URL: http://localhost:8080
JWT_SECRET: invisible-carrot-black-drums-medium
JWT_EXPIRY: 604800
SESSION_SECRET: invisible-carrot-black-drums-medium
LOG_LEVEL: debug
ZIPCODEBASE_API_KEY: c1716d60-e731-11f0-b6a5-e7c811a3e296
# PostGIS Address Lookup (enable after running OSM import)
POSTGIS_ADDRESS_ENABLED: ${POSTGIS_ADDRESS_ENABLED:-false}
POSTGIS_ADDRESS_DACH_ONLY: ${POSTGIS_ADDRESS_DACH_ONLY:-true}
BETTER_AUTH_SECRET: ${BETTER_AUTH_SECRET:-dev-better-auth-secret-change-in-prod}
WEBAUTHN_RP_ID: ${WEBAUTHN_RP_ID:-localhost}
ports:
- "3000:3000"
volumes:
- ./apps/backend:/app/apps/backend
- /app/apps/backend/node_modules
- ./packages:/app/packages
- /app/packages/shared/node_modules
- /app/node_modules
command: pnpm --filter backend run dev
frontend:
build:
context: .
dockerfile: docker/Dockerfile.frontend
container_name: freundebuch-frontend
depends_on:
- backend
environment:
PUBLIC_API_URL: http://localhost:3000
INTERNAL_API_URL: http://backend:3000
ports:
- "5173:5173"
volumes:
- ./apps/frontend:/app/apps/frontend
- /app/apps/frontend/node_modules
- ./packages:/app/packages
- /app/packages/shared/node_modules
- /app/node_modules
command: pnpm --filter frontend run dev
sabredav:
build:
context: .
dockerfile: docker/Dockerfile.sabredav
container_name: freundebuch-sabredav
depends_on:
postgres:
condition: service_healthy
environment:
DATABASE_URL: postgresql://freundebuch:dev_password@postgres:5432/freundebuch_dev
volumes:
- ./apps/sabredav:/app
healthcheck:
test: ["CMD-SHELL", "pidof php-fpm > /dev/null || exit 1"]
interval: 5s
timeout: 3s
retries: 3
start_period: 5s
nginx:
image: nginx:alpine
container_name: freundebuch-nginx
depends_on:
backend:
condition: service_started
frontend:
condition: service_started
sabredav:
condition: service_healthy
ports:
- "8080:80"
volumes:
- ./docker/nginx.dev.conf:/etc/nginx/nginx.conf:ro
# OSM address data import (run manually with --profile import)
osm-import:
build:
context: .
dockerfile: docker/Dockerfile.osm-import
container_name: freundebuch-osm-import
profiles:
- import # Only runs when explicitly requested
environment:
DATABASE_URL: postgresql://freundebuch:dev_password@postgres:5432/freundebuch_dev
volumes:
- osm_data:/app/data # Persist downloaded PBF files
depends_on:
postgres:
condition: service_healthy
volumes:
postgres_data:
osm_data: # Cached OSM PBF files for imports