idconvert/docker-compose.yml

100 lines
3.4 KiB
YAML

services:
# ── PocketBase ──────────────────────────────────────────────────────────────
pocketbase:
image: ghcr.io/muchobien/pocketbase:latest
restart: unless-stopped
ports:
- '8090:8090'
volumes:
- pocketbase_data:/pb/pb_data
- ./pb_hooks:/pb/pb_hooks
healthcheck:
test: ['CMD', 'wget', '-qO-', 'http://localhost:8090/api/health']
interval: 10s
timeout: 5s
retries: 5
# ── MinIO ───────────────────────────────────────────────────────────────────
minio:
image: minio/minio:latest
restart: unless-stopped
command: server /data --console-address ':9001'
ports:
- '9000:9000' # S3 API
- '9001:9001' # MinIO console
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
volumes:
- minio_data:/data
healthcheck:
test: ['CMD', 'mc', 'ready', 'local']
interval: 10s
timeout: 5s
retries: 5
# ── MinIO bucket setup (one-shot) ───────────────────────────────────────────
minio_init:
image: minio/mc:latest
depends_on:
minio:
condition: service_healthy
entrypoint: >
/bin/sh -c "
mc alias set local http://minio:9000 minioadmin minioadmin &&
mc mb --ignore-existing local/idconvert &&
mc anonymous set download local/idconvert &&
mc ilm rule add --expiry-days 1 local/idconvert
"
# ── Backend ─────────────────────────────────────────────────────────────────
backend:
build:
context: ./backend
dockerfile: Dockerfile
restart: unless-stopped
ports:
- '8000:8000'
environment:
POCKETBASE_URL: http://pocketbase:8090
S3_ENDPOINT_URL: http://minio:9000
S3_BUCKET: idconvert
S3_REGION: us-east-1
AWS_ACCESS_KEY_ID: minioadmin
AWS_SECRET_ACCESS_KEY: minioadmin
FRONTEND_ORIGIN: http://localhost:3000
STRIPE_SECRET_KEY: ${STRIPE_SECRET_KEY:-}
STRIPE_WEBHOOK_SECRET: ${STRIPE_WEBHOOK_SECRET:-}
POCKETBASE_ADMIN_TOKEN: ${POCKETBASE_ADMIN_TOKEN:-}
depends_on:
pocketbase:
condition: service_healthy
minio:
condition: service_healthy
healthcheck:
test: ['CMD', 'wget', '-qO-', 'http://localhost:8000/health']
interval: 15s
timeout: 5s
retries: 5
# ── Frontend ─────────────────────────────────────────────────────────────────
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
restart: unless-stopped
ports:
- '3000:3000'
environment:
NUXT_PUBLIC_API_BASE: http://localhost:8000
NUXT_PUBLIC_POCKETBASE_URL: http://localhost:8090
NUXT_PUBLIC_STRIPE_PUBLISHABLE_KEY: ${STRIPE_PUBLISHABLE_KEY:-}
depends_on:
backend:
condition: service_healthy
volumes:
pocketbase_data:
minio_data: