feat(prod): co-deploy postgres and minio in production compose

This commit is contained in:
Karbé Architect 2026-05-30 18:36:38 +00:00
parent b8d14d8f9d
commit 6898649898
3 changed files with 87 additions and 11 deletions

View file

@ -1,4 +1,61 @@
services:
postgres:
image: postgres:16-alpine
container_name: karbe-postgres
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB:-karbe}
POSTGRES_USER: ${POSTGRES_USER:-karbe}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD must be set}
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"]
interval: 10s
timeout: 5s
retries: 10
start_period: 20s
networks:
- karbe
minio:
image: minio/minio:RELEASE.2026-05-24T17-08-30Z
container_name: karbe-minio
restart: unless-stopped
environment:
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-karbe}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:?MINIO_ROOT_PASSWORD must be set}
command: server /data --console-address ":9001"
volumes:
- minio_data:/data
healthcheck:
test: ["CMD", "curl", "-fsS", "http://127.0.0.1:9000/minio/health/live"]
interval: 30s
timeout: 5s
retries: 5
start_period: 20s
networks:
- karbe
minio-init:
image: minio/mc:RELEASE.2026-05-21T01-59-54Z
container_name: karbe-minio-init
depends_on:
minio:
condition: service_healthy
restart: "no"
entrypoint: >
/bin/sh -c "
mc alias set karbe http://minio:9000 $$MINIO_ROOT_USER $$MINIO_ROOT_PASSWORD &&
mc mb -p karbe/$$S3_BUCKET || true
"
environment:
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-karbe}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:?MINIO_ROOT_PASSWORD must be set}
S3_BUCKET: ${S3_BUCKET:-karbe-medias}
networks:
- karbe
app:
build:
context: .
@ -7,6 +64,13 @@ services:
restart: unless-stopped
env_file:
- .env.production
depends_on:
postgres:
condition: service_healthy
minio:
condition: service_healthy
minio-init:
condition: service_completed_successfully
networks:
- karbe
healthcheck:
@ -38,5 +102,7 @@ networks:
name: karbe-net
volumes:
postgres_data:
minio_data:
caddy_data:
caddy_config: