Date : 12 février 2021 - Révisé le 2025.12.04
docker-compose.ymlCet exemple utilise depends_on pour sâassurer que la base de donnĂ©es (maBD) dĂ©marre avant lâinterface de gestion (gestionBDviaAppWeb).
version: "3.9"
services:
maBD:
image: mariadb
environment:
- "MYSQL_ROOT_PASSWORD=root"
gestionBDviaAppWeb:
image: adminer
ports:
- "8080:8080"
depends_on:
- maBD
[Image : img-adminer-mariadb-depends.png - Diagramme montrant deux conteneurs (MariaDB et Adminer) connectés via le réseau par défaut créé par docker-compose, avec une dépendance de démarrage Adminer -> MariaDB.]
version: "3.9"
services:
srv01:
image: alpine
hostname: serveur01
container_name: serveur01
stdin_open: true
tty: true
networks:
- reseauAlpine
environment:
- JESUIS=Le spécialiste de la paresse
# command: sh
srv02:
image: alpine
container_name: serveur02
stdin_open: true
tty: true
networks:
- reseauAlpine
environment:
- JESUIS=Celui qui fait du sur place
command: top
srv99:
image: alpine
container_name: serveur99
stdin_open: true
tty: true
volumes:
- ./:/420
serveurweb:
image: nginx
container_name: serveurWEB
volumes:
- ./templates/site.template:/etc/nginx/templates
- ./contenuweb:/usr/share/nginx/html:rw
ports:
- "8080:80"
environment:
- NGINX_HOST=monServeurWeb.com
- NGINX_PORT=80
maBD:
image: mariadb
networks:
- reseauAdminer
environment:
- "MYSQL_ROOT_PASSWORD=root"
gestionBDviaAppWeb:
image: adminer
networks:
- reseauAdminer
ports:
- "8081:8080"
depends_on:
- maBD
networks:
reseauAlpine:
name: jeSuisLeReseauAlpine
driver: bridge
reseauAdminer:
name: jeSuisLeReseauAdminer
driver: bridge

DĂ©marrer, Ă partir dâun fichier docker-compose, le systĂšme de micro-services suivants :
mysql, avec le stockage local, dossier mesBD, des bases de donnĂ©es.phpmyadmin, sur le port 88.phpmyadmin, la base de donnĂ©es wordpress.Note : Si le fichier nâest pas nommĂ©
docker-compose.yml, alors il faut le nommer dans les commandes, par exemple :
docker-compose -f docker-labo02.yml up -ddocker-compose -f docker-labo02.yml psdocker-compose -f docker-labo02.yml exec cie_db bash

Mettre en place un site WordPress, en utilisant docker-compose, pour la CIE_ABC, en respectant le devis suivant :
mariadb version 10.5, nommé cie_db pour la base de données :
3333cie_abccieuserciepassworddonttellcie_data2WordPress version 5.6.2 :
80phpMyadmin :
8080Tester lâapplication WordPress de la CIE ABC et le service phpMyadmin.
| Commande | Description |
|---|---|
docker-compose config |
Valider le fichier docker-compose.yml. |
docker-compose up |
Démarre les services et affiche les logs. |
docker-compose up -d |
Démarre les services en arriÚre-plan (mode détaché). |
docker-compose logs |
Affiche les logs de tous les services. |
docker-compose ps |
Affiche lâĂ©tat des services. |
docker-compose stop |
ArrĂȘte les conteneurs (sans les supprimer). |
docker-compose down |
ArrĂȘte et supprime les conteneurs, rĂ©seaux et volumes par dĂ©faut. |
docker-compose avec un buildDocker-compose permet la mise en place dâimages personnalisĂ©es pendant le processus de dĂ©marrage dâune application multi-services.
DockerfileDans un dossier vide, enregistrer le fichier Dockerfile :
# ###########################################################################
# Fichier: Dockerfile
# Auteur: Alain Boudreault
# Date: 2021.03.05
# Description: Exemple d'un Dockerfile avec,
#
# 1 - Des variables d'environnement,
# 2 - Un invite de commande personnalisé pour tous les 'users',
# 3 - Le démarrage automatique d'une application du conteneur.
# ###########################################################################
FROM debian
LABEL authors="Alain Boudreault <aboudrea@cstj.qc.ca>"
LABEL Atelier="7.1 de http://ve2cuy.com/420-4d4b/index.php/docker-compose-introduction-2/"
ENV UN_MOT_DE_PASSE=tepasserieux
ENV UNE_BASE_DE_DONNEES=db_de_la_ciex
# Definir des variables avec des séquences ANSI pour afficher de la couleur sous BASH
ENV RESET="\[\033[0m]" \
ROUGE="\[\033[0;31m]" \
VERT="\[\033[01;32m]" \
BLEU="\[\033[01;34m]" \
JAUNE="\[\033[0;33m]"
# Sympathique petit (prompt) invite en couleur pour tous les utilisateurs
# ATTENTION, placer le symbole % devant H, M et S!
# TODO: RUN echo 'export PS1="${VERT}\D{H:M:S} - ${JAUNE}\u@docker${ROUGE}\nDossier: [\W]\n${RESET}\$ "' >> /etc/bash.bashrc
RUN apt-get update
RUN apt-get install git lynx -y
# Lancer le fureteur au démarrage. Tester avec http://lite.cnn.com/en
# CMD ["lynx", "http://lite.cnn.com/en"]
docker build -t perso .
Note : Avec
docker-compose, il nâest pas nĂ©cessaire de bĂątir lâimage au prĂ©alable.
docker inspect perso
Note : Remarquer les propriétés
Author,EnvetLabels.
docker-composeCe fichier utilise lâinstruction build: . pour indiquer Ă docker-compose de construire lâimage Ă partir du Dockerfile se trouvant dans le rĂ©pertoire courant.
version: '3.3'
# docker-compose build
# docker-compose up --build -d
# OU
# docker-compose up -d
services:
# Note: pas de caractĂšres majuscules dans le nom du service
mondebian:
image: alainboudreault/serveur01
container_name: serveur01
build: .
restart: always
stdin_open: true # docker run -i
tty: true # docker run -t
environment:
- VERSION=action7.1
networks:
- reseau7.1
web:
image: nginx:latest
ports:
- "8000:80"
restart: always
volumes:
- ./web:/usr/share/nginx/html/perso
networks:
- reseau7.1
networks:
reseau7.1:
name: jeSuisLeReseau7.1
driver: bridge
docker-compose.ymlIl est possible dâexternaliser les variables de configuration dans un fichier .env.
.envDB_PORT=3306
DB_ROOT_PASS=password
DB_USER=bob
DB_PASS=password
docker-compose.ymlservices:
db:
image: mariadb:10.4.13
ports:
- ${DB_PORT}:3306
volumes:
- ./db_data:/var/lib/mysql
tmpfs:
- /tmp/mysql-tmp
restart: always
environment:
MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASS}"
MYSQL_USER: "${DB_USER}"
MYSQL_PASSWORD: "${DB_PASS}"
Note : voir la directive
depends_onpour gérer les dépendances entre services.
Pour configurer dynamiquement Nginx Ă partir de variables dâenvironnement (PORT=8080), on utilise la substitution (envsubst).
config.site (template)server {
listen ${PORT};
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
docker-compose.yml (avec envsubst)web:
image: nginx
volumes:
- ./site.template:/etc/nginx/conf.d/site.template
ports:
- "3000:8080"
environment:
- PORT=8080
command: /bin/sh -c "envsubst < /etc/nginx/conf.d/site.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'"
Document rédigé par Alain Boudreault © 2021-2026
Version 2025.12.03.1
Site par ve2cuy