infra: .dockerignore, remove exposed port, healthcheck, pin caddy

- add repo-root .dockerignore (target, node_modules, .git, dist)
- colony: expose instead of ports (internal network only)
- colony: healthcheck via /api/health
- caddy: pin to 2.11, mount Caddyfile read-only
- caddy: depends_on service_healthy

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-29 20:30:27 +02:00
parent 17cca7b077
commit 49131a38e0
2 changed files with 21 additions and 5 deletions

9
.dockerignore Normal file
View File

@@ -0,0 +1,9 @@
target/
**/node_modules/
**/dist/
.git/
*.db
*.db-wal
*.db-shm
.claude/
docs/

View File

@@ -9,23 +9,30 @@ services:
- DATABASE_URL=sqlite:/data/colony.db?mode=rwc
volumes:
- colony_data:/data
ports:
- "3001:3001"
# No ports exposed — Caddy reverse proxies on internal network
expose:
- "3001"
restart: always
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3001/api/health"]
interval: 10s
timeout: 3s
retries: 3
caddy:
image: caddy:latest
image: caddy:2.11
container_name: colony-caddy
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy_data:/data
- caddy_config:/config
restart: always
depends_on:
- colony
colony:
condition: service_healthy
volumes:
colony_data: