Applez Nous: +41 22 518 70 00
Une application moderne se compose rarement d’un conteneur unique. Docker Compose permet de définir, démarrer et administrer l’ensemble des services d’une architecture multi-tiers (frontal web, API métier, base de données relationnelle, cache mémoire) dans un fichier YAML unique (compose.yaml).
# Fichier : compose.yaml
services:
reverse-proxy:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- api-service
networks:
- frontend-net
api-service:
build:
context: ./backend
dockerfile: Dockerfile
environment:
- DB_HOST=db-postgres
- DB_NAME=swissdb
- DB_USER=appuser
- DB_PASS_FILE=/run/secrets/db_password
secrets:
- db_password
depends_on:
db-postgres:
condition: service_healthy
networks:
- frontend-net
- backend-net
db-postgres:
image: postgres:16-alpine
environment:
- POSTGRES_DB=swissdb
- POSTGRES_USER=appuser
- POSTGRES_PASSWORD_FILE=/run/secrets/db_password
secrets:
- db_password
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U appuser -d swissdb"]
interval: 10s
timeout: 5s
retries: 5
networks:
- backend-net
networks:
frontend-net:
driver: bridge
backend-net:
driver: bridge
internal: true # Réseau strictement privé sans accès Internet sortant
volumes:
pgdata:
secrets:
db_password:
file: ./secrets/db_password.txt
# Démarrer l'ensemble des conteneurs en arrière-plan (mode détaché)
docker compose up -d
# Visualiser les logs consolidés en temps réel de tous les services
docker compose logs -f --tail=50
# Stopper proprement les conteneurs et libérer les réseaux virtuels
docker compose down
Isolation réseau par conception : Dans l’exemple ci-dessus, la base de données
db-postgresest isolée dans le réseaubackend-netavecinternal: true. Le conteneurreverse-proxyne peut physiquement pas communiquer avec elle, respectant le principe de segmentation étanche des tiers.