Files
ditto.site/docker-compose.yml
2026-06-29 15:11:48 -07:00

83 lines
2.1 KiB
YAML

# Local dev dependencies for the ditto.site service.
# Postgres is the database AND the job queue (pg-boss). MinIO (S3-compatible blob
# store) is added with M4. Bring up with: `docker compose up -d`.
services:
postgres:
image: postgres:16
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: ditto_site
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 5s
retries: 10
minio:
image: minio/minio
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
ports:
- "9000:9000"
- "9001:9001"
volumes:
- miniodata:/data
healthcheck:
test: ["CMD", "mc", "ready", "local"]
interval: 5s
timeout: 5s
retries: 10
# The app services (build from this repo). Enable with `--profile app`:
# docker compose --profile app up --build
api:
profiles: ["app"]
build:
context: .
dockerfile: docker/api.Dockerfile
environment:
DATABASE_URL: postgresql://postgres:postgres@postgres:5432/ditto_site
S3_ENDPOINT: http://minio:9000
S3_BUCKET: ditto-site-artifacts
S3_ACCESS_KEY_ID: minioadmin
S3_SECRET_ACCESS_KEY: minioadmin
S3_FORCE_PATH_STYLE: "true"
PORT: "8787"
ports:
- "8787:8787"
depends_on:
postgres:
condition: service_healthy
minio:
condition: service_started
worker:
profiles: ["app"]
build:
context: .
dockerfile: docker/worker.Dockerfile
environment:
DATABASE_URL: postgresql://postgres:postgres@postgres:5432/ditto_site
S3_ENDPOINT: http://minio:9000
S3_BUCKET: ditto-site-artifacts
S3_ACCESS_KEY_ID: minioadmin
S3_SECRET_ACCESS_KEY: minioadmin
S3_FORCE_PATH_STYLE: "true"
CACHE_STALE_AFTER: 24h
depends_on:
postgres:
condition: service_healthy
minio:
condition: service_started
volumes:
pgdata: {}
miniodata: {}