aac4ee6e43
Store uploaded files under data/uploads for both the app and Caddy instead of the named Docker volume. Update .gitignore to keep runtime data out of Git while preserving the uploads directory placeholder.
62 lines
1.4 KiB
YAML
62 lines
1.4 KiB
YAML
services:
|
|
db:
|
|
image: postgres:16-alpine
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_USER: ${POSTGRES_USER:-ecommerce}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-ecommerce_password}
|
|
POSTGRES_DB: ${POSTGRES_DB:-ecommerce}
|
|
volumes:
|
|
- ./data/db:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ecommerce"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 10
|
|
|
|
app:
|
|
build:
|
|
context: ./app
|
|
dockerfile: Dockerfile
|
|
restart: unless-stopped
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
env_file: .env
|
|
environment:
|
|
DATABASE_URL: postgresql://${POSTGRES_USER:-ecommerce}:${POSTGRES_PASSWORD:-ecommerce_password}@db:5432/${POSTGRES_DB:-ecommerce}
|
|
expose:
|
|
- "3000"
|
|
volumes:
|
|
- ./data/uploads:/app/public/uploads
|
|
|
|
mailpit:
|
|
image: axllent/mailpit:latest
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8025:8025"
|
|
|
|
caddy:
|
|
image: caddy:2-alpine
|
|
restart: unless-stopped
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
volumes:
|
|
- ./Caddyfile:/etc/caddy/Caddyfile:ro
|
|
- ./data/caddy/data:/data
|
|
- ./data/caddy/config:/config
|
|
- ./data/uploads:/srv/uploads
|
|
depends_on:
|
|
- app
|
|
|
|
stripe-cli:
|
|
image: stripe/stripe-cli:latest
|
|
command: listen --forward-to http://app:3000/api/webhooks/stripe --api-key ${STRIPE_SECRET_KEY}
|
|
depends_on:
|
|
- app
|
|
restart: unless-stopped
|
|
profiles:
|
|
- dev
|
|
|