71 lines
1.6 KiB
YAML
71 lines
1.6 KiB
YAML
services:
|
|
app:
|
|
build: .
|
|
restart: unless-stopped
|
|
volumes:
|
|
# Mount media directory for book covers
|
|
- media:/app/media
|
|
# Mount instance directory for config and database persistence
|
|
- instance:/app/instance
|
|
# Mount shared directory for static files that Caddy can access
|
|
- static:/shared/static
|
|
# Mount caddy_file for Caddy configuration
|
|
- caddy_file:/app/caddy
|
|
expose:
|
|
- "5000"
|
|
environment:
|
|
- FLASK_ENV=production
|
|
- GOOGLE_BOOKS_API_KEY=${GOOGLE_BOOKS_API_KEY}
|
|
networks:
|
|
- hxbooks
|
|
# Health check to ensure app is ready
|
|
healthcheck:
|
|
test:
|
|
[
|
|
"CMD-SHELL",
|
|
"wget --no-verbose --tries=1 --spider http://127.0.0.1:5000/ || exit 1",
|
|
]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 30s
|
|
|
|
caddy:
|
|
image: caddy:2-alpine
|
|
restart: unless-stopped
|
|
ports:
|
|
- "5123:443"
|
|
volumes:
|
|
# Caddyfile configuration
|
|
- caddy_file:/etc/caddy
|
|
# Media files served directly by Caddy
|
|
- media:/var/www/media:ro
|
|
# Static files served directly by Caddy (populated by app container)
|
|
- static:/var/www/static:ro
|
|
# Caddy data for TLS certificates
|
|
- caddy_data:/data
|
|
- caddy_config:/config
|
|
networks:
|
|
- hxbooks
|
|
depends_on:
|
|
app:
|
|
condition: service_healthy
|
|
|
|
networks:
|
|
hxbooks:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
media:
|
|
driver: local
|
|
instance:
|
|
driver: local
|
|
static:
|
|
driver: local
|
|
caddy_data:
|
|
driver: local
|
|
caddy_config:
|
|
driver: local
|
|
caddy_file:
|
|
driver: local
|