From 31e9a589f80e3d17410e259d6e7c675d9d239f0f Mon Sep 17 00:00:00 2001
From: Frederic Minne <frederic.minne@uclouvain.be>
Date: Sun, 11 Jun 2023 15:18:02 +0200
Subject: [PATCH] livraison: add missing yaml examples

---
 documentation/05.livraison-continue.md | 98 +++++++++++++++++++++++++-
 1 file changed, 97 insertions(+), 1 deletion(-)

diff --git a/documentation/05.livraison-continue.md b/documentation/05.livraison-continue.md
index ef402d4..4795800 100644
--- a/documentation/05.livraison-continue.md
+++ b/documentation/05.livraison-continue.md
@@ -317,10 +317,106 @@ PORTAL_VPORT=80
 
 ```
 
-J'ai créé pour la pile applicative un fichier docker-compose.yml de base reprenant les directives et options communes à tous les environnements. 
+J'ai créé pour la pile applicative un fichier docker-compose.yml de base reprenant les directives et options communes à tous les environnements.
+
+```yaml
+version: '3.7'
+services:
+  webserver:
+    image: nginx:latest
+    depends_on:
+      - "php-fpm"
+    command: ["/bin/wait-for-it.sh", "php-fpm:9000", "--", "nginx", "-g", "daemon off;"]
+    env_file:
+      - docker/nginx/nginx.env
+      - .env
+    working_dir: /var/www/portail-next
+    volumes:
+      - ./var/www/portail-next:/var/www/portail-next/
+      - ./docker/wait-for-it.sh:/bin/wait-for-it.sh
+      - ./docker/nginx/conf.d:/etc/nginx/conf.d
+      - ./docker/nginx/sites:/etc/nginx/sites-enabled
+      - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf
+  php-cli:
+    image: private-registry:5000/drupal_phpfpm81:latest
+    build:
+      context: ./docker/php-fpm
+      dockerfile: dockerfile
+      cache_from:
+        - private-registry:5000/drupal_phpfpm81:latest
+    env_file:
+      - docker/php-fpm/php-fpm.env
+      - .env
+    working_dir: /var/www/portail-next
+    volumes:
+      - ./docker/php-fpm/php-ini-overrides.ini:/etc/php/8.1/fpm/conf.d/99-overrides.ini
+      - ./var/www/portail-next:/var/www/portail-next/
+      - ./bin:/var/www/portail-next/bin
+    command: ["tail", "-f", "/dev/null"]
+  php-fpm:
+    image: private-registry:5000/drupal_phpfpm81:latest
+    build:
+      context: ./docker/php-fpm
+      dockerfile: dockerfile
+      cache_from:
+        - private-registry:5000/drupal_phpfpm81:latest
+    env_file:
+      - docker/php-fpm/php-fpm.env
+      - .env
+    working_dir: /var/www/portail-next
+    volumes:
+      - ./docker/php-fpm/php-ini-overrides.ini:/etc/php/8.1/fpm/conf.d/99-overrides.ini
+      - ./var/www/portail-next:/var/www/portail-next/
+      - ./bin:/var/www/portail-next/bin
+
+```
 
 Ensuite, pour chaque valeur d'environnement spécifique SWARM_ENV et chaque topologie SWARM_TOPO, j'ai fourni un fichier `environments/<SWARM_ENV>/docker-compose.<SWARM_TOPO>.yml` contenant les directives et options spécifiques à chaque environnement.
 
+```yaml
+# environments/prod/docker-compose.multi.yml
+version: '3.7'
+services:
+  webserver:
+    deploy:
+      mode: global
+      placement:
+        constraints:
+          - node.role!=manager
+    networks:
+      - portail_ntwrk
+      - proxy_public
+    volumes:
+      - /portail-data:/var/www/portail-next/web/sites/default/files/private
+  php-cli:
+    deploy:
+      replicas: 1
+      placement:
+        constraints:
+          - node.role==manager
+    networks:
+      - portail_ntwrk
+    volumes:
+      - /portail-data:/var/www/portail-next/web/sites/default/files/private
+  php-fpm:
+    deploy:
+      mode: global
+      placement:
+        constraints:
+          - node.role!=manager
+    networks:
+      - portail_ntwrk
+    volumes:
+      - /portail-data:/var/www/portail-next/web/sites/default/files/private
+networks:
+  portail_ntwrk:
+    driver: overlay
+    attachable: true
+  proxy_public:
+    name: proxy_public
+    external: true
+```
+
 Enfin, j'ai créé une commande Bash (mais cela aurait pu être fait avec une commande ansible également) permettant de créer les piles applicatives, les démarrer et les arrêter en se basant sur les variables d'environnement définies pour sélectionner les bons fichiers de définition de pile.
 
 En pratique, la personne devant déployer l'application n'a plus qu'à définir les variables correspondant à l'environnement sur lequel il ou elle effectue le déploiement dans un fichier nommé `.env` et situé à la racine du répertoire de son instance du portail. Il lui suffit ensuite d'exécuter le script permettant la création de la pile et de lancer celle-ci.
-- 
GitLab