96 lines
3.2 KiB
YAML
96 lines
3.2 KiB
YAML
version: "3.9"
|
||
|
||
services:
|
||
# ─────────────────────── Databases & Caches ───────────────────────
|
||
postgres:
|
||
image: postgres:16-alpine
|
||
restart: unless-stopped
|
||
environment:
|
||
POSTGRES_USER: postgres
|
||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
||
POSTGRES_DB: postgres
|
||
volumes:
|
||
- postgres-data:/var/lib/postgresql/data
|
||
networks: [backend]
|
||
|
||
redis:
|
||
image: redis:7-alpine
|
||
restart: unless-stopped
|
||
command: ["redis-server", "--requirepass", "${REDIS_PASSWORD}"]
|
||
volumes:
|
||
- redis-data:/data
|
||
networks: [backend]
|
||
|
||
minio:
|
||
image: minio/minio:RELEASE.2024-04-18T19-09-19Z
|
||
restart: unless-stopped
|
||
environment:
|
||
MINIO_ROOT_USER: ${MINIO_ROOT_USER}
|
||
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}
|
||
command: server /data --console-address ":9001"
|
||
volumes:
|
||
- minio-data:/data
|
||
networks: [backend]
|
||
|
||
# ─────────────────────── Medusa processes ───────────────────────
|
||
medusa-server:
|
||
build:
|
||
context: ./server
|
||
dockerfile: Server.Dockerfile # path relative to repo root
|
||
depends_on: [postgres, redis, minio]
|
||
restart: unless-stopped
|
||
environment:
|
||
# Core DB / cache
|
||
DATABASE_URL: postgres://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres?ssl_mode=disable
|
||
REDIS_URL: redis://default:${REDIS_PASSWORD}@redis:6379/0
|
||
# S3 (MinIO) storage
|
||
S3_ENDPOINT: http://minio:9000
|
||
S3_REGION: ${S3_REGION:-us-east-1}
|
||
S3_BUCKET: ${S3_BUCKET}
|
||
S3_ACCESS_KEY_ID: ${MINIO_ROOT_USER}
|
||
S3_SECRET_ACCESS_KEY: ${MINIO_ROOT_PASSWORD}
|
||
# Medusa‑specific
|
||
MEDUSA_BACKEND_URL: ${MEDUSA_BACKEND_URL:-http://localhost:9000}
|
||
MEDUSA_WORKER_MODE: server
|
||
DISABLE_MEDUSA_ADMIN: "false"
|
||
COOKIE_SECRET: ${COOKIE_SECRET}
|
||
JWT_SECRET: ${JWT_SECRET}
|
||
# CORS etc.
|
||
ADMIN_CORS: ${ADMIN_CORS}
|
||
STORE_CORS: ${STORE_CORS}
|
||
AUTH_CORS: ${AUTH_CORS}
|
||
# Any other keys (Stripe, Resend, …)
|
||
STRIPE_API_KEY: ${STRIPE_API_KEY}
|
||
STRIPE_WEBHOOK_SECRET: ${STRIPE_WEBHOOK_SECRET}
|
||
RESEND_API_KEY: ${RESEND_API_KEY}
|
||
RESEND_FROM_EMAIL: ${RESEND_FROM_EMAIL}
|
||
networks: [backend]
|
||
|
||
medusa-worker:
|
||
build:
|
||
context: ./server
|
||
dockerfile: Worker.Dockerfile
|
||
depends_on: [postgres, redis, medusa-server]
|
||
restart: unless-stopped
|
||
environment:
|
||
DATABASE_URL: postgres://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres?ssl_mode=disable
|
||
REDIS_URL: redis://default:${REDIS_PASSWORD}@redis:6379/0
|
||
S3_ENDPOINT: http://minio:9000
|
||
S3_REGION: ${S3_REGION:-us-east-1}
|
||
S3_BUCKET: ${S3_BUCKET}
|
||
S3_ACCESS_KEY_ID: ${MINIO_ROOT_USER}
|
||
S3_SECRET_ACCESS_KEY: ${MINIO_ROOT_PASSWORD}
|
||
MEDUSA_WORKER_MODE: worker
|
||
DISABLE_MEDUSA_ADMIN: "true"
|
||
networks: [backend]
|
||
|
||
# ────────────────────────── Shared Stuff ──────────────────────────
|
||
volumes:
|
||
postgres-data:
|
||
redis-data:
|
||
minio-data:
|
||
|
||
networks:
|
||
backend:
|
||
driver: bridge
|