services: db: image: mariadb:11 restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-fosterflow} MYSQL_DATABASE: fosterflow MYSQL_USER: fosterflow MYSQL_PASSWORD: ${DB_PASSWORD:-fosterflow} ports: - "3306:3306" volumes: - db_data:/var/lib/mysql healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] interval: 10s timeout: 5s retries: 5 app: build: . restart: unless-stopped depends_on: db: condition: service_healthy environment: DATABASE_URL: mysql://fosterflow:${DB_PASSWORD:-fosterflow}@db:3306/fosterflow SESSION_SECRET: ${SESSION_SECRET:-change-me-in-production} PUBLIC_SITE_URL: ${PUBLIC_SITE_URL:-http://localhost:3000} UPLOAD_DIR: /app/uploads PORT: 3000 env_file: - .env ports: - "3000:3000" volumes: - uploads:/app/uploads caddy: image: caddy:2-alpine restart: unless-stopped ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - caddy_data:/data - caddy_config:/config volumes: db_data: uploads: caddy_data: caddy_config: