2026-05-30 15:41:59 +01:00
|
|
|
services:
|
2026-06-27 16:14:31 +01:00
|
|
|
# ---------- PostgreSQL ----------
|
2026-05-30 15:41:59 +01:00
|
|
|
db:
|
|
|
|
|
image: postgres:16
|
|
|
|
|
env_file: .env
|
|
|
|
|
volumes:
|
|
|
|
|
- pgdata:/var/lib/postgresql/data
|
2026-06-27 16:14:31 +01:00
|
|
|
networks:
|
|
|
|
|
- yavsc-internal
|
|
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD-SHELL", "pg_isready -U \"$$POSTGRES_USER\" -d \"$$POSTGRES_DB\""]
|
|
|
|
|
interval: 10s
|
|
|
|
|
timeout: 5s
|
|
|
|
|
retries: 5
|
|
|
|
|
start_period: 20s
|
2026-05-30 15:41:59 +01:00
|
|
|
|
2026-06-27 16:14:31 +01:00
|
|
|
# ---------- Yavsc.Org (front web) ----------
|
2026-06-27 16:32:48 +01:00
|
|
|
# Construit depuis le stage `web-runtime` du Dockerfile multi-stage.
|
|
|
|
|
# ASPNETCORE_URLS=http://+:5000 (HTTP seul en dev). Pour activer
|
|
|
|
|
# HTTPS en prod, décommenter le port 5001, monter /etc/letsencrypt
|
|
|
|
|
# en volume, et configurer Kestrel:Certificates dans
|
|
|
|
|
# appsettings-org.json (cf. CONTRIBUTING.md).
|
2026-05-30 15:41:59 +01:00
|
|
|
web:
|
|
|
|
|
build:
|
|
|
|
|
context: .
|
2026-06-27 16:32:48 +01:00
|
|
|
dockerfile: Dockerfile
|
|
|
|
|
target: web-runtime
|
2026-05-30 15:41:59 +01:00
|
|
|
args:
|
2026-06-27 16:32:48 +01:00
|
|
|
BUILD_ENV_TAG: debian12-dotnet10-android36-v1
|
2026-06-27 16:14:31 +01:00
|
|
|
secrets:
|
|
|
|
|
- yavsc_appsettings
|
2026-05-30 15:41:59 +01:00
|
|
|
env_file: .env
|
|
|
|
|
ports:
|
|
|
|
|
- "5000:5000"
|
2026-06-27 16:14:31 +01:00
|
|
|
# - "5001:5001" # HTTPS : décommenter avec le volume letsencrypt
|
2026-05-30 15:41:59 +01:00
|
|
|
depends_on:
|
2026-06-27 16:14:31 +01:00
|
|
|
db:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- yavsc-internal
|
|
|
|
|
- yavsc-public
|
|
|
|
|
# volumes:
|
|
|
|
|
# - /etc/letsencrypt:/etc/letsencrypt:ro
|
|
|
|
|
|
2026-06-27 16:32:48 +01:00
|
|
|
# ---------- Yavsc.Api (API REST principale) ----------
|
2026-06-27 16:14:31 +01:00
|
|
|
api:
|
|
|
|
|
build:
|
|
|
|
|
context: .
|
2026-06-27 16:32:48 +01:00
|
|
|
dockerfile: Dockerfile
|
|
|
|
|
target: api-runtime
|
2026-06-27 16:14:31 +01:00
|
|
|
args:
|
2026-06-27 16:32:48 +01:00
|
|
|
BUILD_ENV_TAG: debian12-dotnet10-android36-v1
|
2026-06-27 16:14:31 +01:00
|
|
|
secrets:
|
|
|
|
|
- yavsc_appsettings
|
|
|
|
|
env_file: .env
|
|
|
|
|
ports:
|
|
|
|
|
- "5002:5002"
|
|
|
|
|
# - "5003:5003" # HTTPS : décommenter avec le volume letsencrypt
|
|
|
|
|
depends_on:
|
|
|
|
|
db:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- yavsc-internal
|
|
|
|
|
- yavsc-public
|
|
|
|
|
# volumes:
|
|
|
|
|
# - /etc/letsencrypt:/etc/letsencrypt:ro
|
|
|
|
|
|
|
|
|
|
# ---------- Yavsc.Blogs (backend API headless des blogs) ----------
|
|
|
|
|
# Déployé sur un sous-domaine dédié en production (ex: blogs.yavsc.example).
|
2026-06-27 16:32:48 +01:00
|
|
|
# cf. doc/architecture/decoupage-organisation.md.
|
2026-06-27 16:14:31 +01:00
|
|
|
blogs:
|
|
|
|
|
build:
|
|
|
|
|
context: .
|
2026-06-27 16:32:48 +01:00
|
|
|
dockerfile: Dockerfile
|
|
|
|
|
target: blogs-runtime
|
2026-06-27 16:14:31 +01:00
|
|
|
args:
|
2026-06-27 16:32:48 +01:00
|
|
|
BUILD_ENV_TAG: debian12-dotnet10-android36-v1
|
2026-06-27 16:14:31 +01:00
|
|
|
secrets:
|
|
|
|
|
- yavsc_appsettings
|
|
|
|
|
env_file: .env
|
|
|
|
|
ports:
|
|
|
|
|
- "5004:5004"
|
|
|
|
|
# - "5005:5005" # HTTPS : décommenter avec le volume letsencrypt
|
|
|
|
|
depends_on:
|
|
|
|
|
db:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- yavsc-internal
|
|
|
|
|
- yavsc-public
|
|
|
|
|
# volumes:
|
|
|
|
|
# - /etc/letsencrypt:/etc/letsencrypt:ro
|
2026-05-30 15:41:59 +01:00
|
|
|
|
|
|
|
|
volumes:
|
2026-06-27 16:14:31 +01:00
|
|
|
pgdata:
|
|
|
|
|
|
|
|
|
|
networks:
|
|
|
|
|
# Réseau interne : seuls les services Yavsc et la base s'y voient.
|
|
|
|
|
yavsc-internal:
|
|
|
|
|
internal: false
|
2026-06-27 16:32:48 +01:00
|
|
|
# Réseau public : exposé à l'hôte via les ports mappés.
|
2026-06-27 16:14:31 +01:00
|
|
|
yavsc-public:
|
|
|
|
|
|
|
|
|
|
secrets:
|
2026-06-27 16:32:48 +01:00
|
|
|
# appsettings-org.json vit à src/Yavsc.Org/appsettings-org.json
|
|
|
|
|
# (non commité). BuildKit le monte dans
|
|
|
|
|
# /run/secrets/yavsc_appsettings pendant le build de chaque image
|
|
|
|
|
# runtime via le Dockerfile multi-stage.
|
2026-06-27 16:14:31 +01:00
|
|
|
yavsc_appsettings:
|
2026-06-27 16:19:22 +01:00
|
|
|
file: ./src/Yavsc.Org/appsettings-org.json
|