Use a named SQLite volume, healthcheck, and clearer production env examples. Co-authored-by: Cursor <cursoragent@cursor.com>
38 lines
905 B
YAML
38 lines
905 B
YAML
services:
|
|
backend:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
image: child-gold-land-backend:latest
|
|
container_name: child-gold-land-backend
|
|
ports:
|
|
- "${PORT:-3000}:3000"
|
|
env_file:
|
|
- .env.docker
|
|
environment:
|
|
NODE_ENV: production
|
|
PORT: 3000
|
|
HOST: 0.0.0.0
|
|
DB_PATH: /app/data/app.db
|
|
volumes:
|
|
# Persistent SQLite storage (WAL/SHM live here too).
|
|
# On server, replace with e.g. /var/lib/child-gold-land/data:/app/data
|
|
- sqlite_data:/app/data
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test:
|
|
[
|
|
"CMD",
|
|
"node",
|
|
"-e",
|
|
"fetch('http://127.0.0.1:3000/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))",
|
|
]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 20s
|
|
|
|
volumes:
|
|
sqlite_data:
|
|
name: child-gold-land-sqlite
|