瀏覽代碼

add 'network' section to the readme

Olivier Massot 2 年之前
父節點
當前提交
43cc9cf13d
共有 2 個文件被更改,包括 131 次插入17 次删除
  1. 115 1
      README.md
  2. 16 16
      docker-compose.yml

+ 115 - 1
README.md

@@ -80,7 +80,7 @@ Pour cela, ajouter les lignes suivantes à votre fichier `/etc/hosts`:
     127.0.0.1 local.v59.opentalent.fr   # Docker 'adminassos'
     127.0.0.1 local.phpmyadmin.opentalent.fr   # Docker 'phpmyadmin'
     127.0.0.1 local.elasticsearch.opentalent.fr   # Docker 'es'
-    127.0.0.1 local.admin.opentalent.fr   # Docker 'adminLegacy'
+    127.0.0.1 local.admin.opentalent.fr   # Docker 'admin'
     127.0.0.1 local.thumbor.opentalent.fr   # Docker 'thumbor'
     127.0.0.1 local.opentalent.fr   # Docker 'portail'
     127.0.0.1 local.sub.opentalent.fr   # Docker 'typo3'
@@ -94,6 +94,7 @@ Pour cela, ajouter les lignes suivantes à votre fichier `/etc/hosts`:
     127.0.0.1 local.app-doc.opentalent.fr   # Docker 'app-doc'
     127.0.0.1 local.app-v3.opentalent.fr   # Docker 'app-v3'    
     127.0.0.1 local.mercure.opentalent.fr   # Docker 'mercure'
+    127.0.0.1 local.portail-v2.opentalent.fr    # Docker 'portail-v2'
 
 > Attention: les domaines indiqués ici doivent correspondre aux domaines définis dans le fichier `.env`
 
@@ -479,6 +480,119 @@ Héberge une instance phpdoc, qui permet ensuite de générer des documentations
 TODO: à quoi il sert?
 
 
+## Configuration du réseau
+
+### Réseau et adresses IP
+
+La section `networks` du docker-compose permet de configurer un réseau interne auxquel pourront appartenir les 
+containers. 
+
+> Voir: https://docs.docker.com/compose/networking/
+>       https://docs.docker.com/compose/compose-file/compose-file-v3/#networks
+
+Ici, on définit un seul réseau nommé `network`, au sein duquel les ips seront de la forme `172.20.[0-255].[1-254]`
+
+Pour qu'un container puisse appartenir au réseau, sa définition doit comporter une entrée de cette forme :
+
+     networks:
+       - network
+
+On pourra aussi assigner une IP fixe à un container en précisant cette configuration, par exemple : 
+
+    networks:
+      network:
+        ipv4_address: 172.20.2.2
+
+### Attribution des ports
+
+Les ports de l'hôte peuvent être assignés aux ports d'un container en ajoutant une section `ports` à la définition du
+container. Exemple : 
+
+    ports:
+      - "3001:3000"
+      - "3002:3001"
+
+Ces entrées sont de la forme : `<port de l'hôte>:<port du container>`
+
+Dans l'exemple précédent, une requête reçue sur le port 3001 par la machine hôte sera dirigée vers le port 3000 du 
+container.
+
+### Proxy : le docker nginx-proxy
+
+La configuration du fichier `hosts` permet de rediriger certaines url locales (ex: `local.api.opentalent.fr`) vers la
+machine locale (i.e. `localhost`).
+
+> Voir: https://gitlab.2iopenservice.com/opentalent/docker/-/blob/master/README.md#le-fichier-etchosts
+
+Le container `nginx-proxy` est configuré pour recevoir les requêtes des ports 80 et 443 de la machine hôte, et reçoit donc
+les requêtes adressées aux urls locales.
+
+[Ce container est configuré](https://hub.docker.com/r/jwilder/nginx-proxy/#!) pour identifier tous les containers de 
+son réseau pour lesquels une variable d'env `VIRTUAL_HOST` a été définie, et redirigera les requêtes d'une url au 
+container dont le vhost correspond.
+
+Les virtual hosts sont définis dans le fichier `.env`. Pour attribuer un nom d'hôte à un container, on ajoute ensuite
+dans le `docker-compose.yml` une entrée de cette forme à sa configuration : 
+
+    environment:
+      - VIRTUAL_HOST=${SOME_VIRTUAL_HOST}
+
+Pour utiliser un autre port que le port 80, on peut ajouter une variable `VIRTUAL_PORT` :
+
+    environment:
+      - VIRTUAL_HOST=${SOME_VIRTUAL_HOST}
+      - VIRTUAL_PORT=${SOME_PORT}
+
+
+### Nom des hôtes et aliases réseau
+
+Sur leur réseau interne, les noms d'hôtes des containers sont définis via l'entrée `hostname` de leur configuration.
+Généralement, ces hostnames sont identiques à leurs noms de container.
+
+> Exemple : pour adresser une requête au docker `db`, le container `api` enverra sa requête à l'adresse `http://db`
+
+Il est cependant possible d'attribuer des aliases aux containers, ex : 
+
+    networks:
+      network:
+        aliases:
+          - docker.sub.opentalent.fr
+
+Ainsi configuré, le docker sera joignable sur le réseau interne à l'adresse `http://docker.sub.opentalent.fr`.
+
+
+### Attribution des ports et IPs
+
+| Container   | hostname    | In Network ? | IP fixe    | Ports                  | VIRTUAL_HOST / PORT                      | Aliases                                               |
+|-------------|-------------|--------------|------------|------------------------|------------------------------------------|-------------------------------------------------------|
+| nginx-proxy | nginx-proxy | O            | -          | 80:80, 443:443         | -                                        | -                                                     |
+| db          | db          | O            | 172.20.1.3 | 3306:3306              | -                                        | -                                                     |
+| nginx       | nginx       | O            | -          | -                      | local.api.opentalent.fr                  | docker.nginx.opentalent.fr                            |
+| php70       | php70       | O            | 172.20.1.1 | -                      | -                                        | -                                                     |
+| nginx_new   | nginx_new   | O            | -          | -                      | local.ap2i.opentalent.fr                 | -                                                     |
+| ap2i        | ap2i        | O            | 172.20.2.1 | -                      | -                                        | -                                                     |
+| mercure     | mercure     | O            | 172.20.4.0 | -                      | local.mercure.opentalent.fr              | -                                                     |
+| python39    | python39    | O            | 172.20.4.1 | -                      | -                                        | -                                                     |
+| admin       | admin       | O            | 172.20.1.2 | 3000:3000, 3001:3001   | local.admin.opentalent.fr / 3000         | -                                                     |
+| app         | app         | O            | 172.20.2.2 | 3002:3000, 3003:3003   | local.app.opentalent.fr / 3002           | -                                                     |
+| app_v3      | app_v3      | O            | 172.20.2.3 | 3009:3000, 24678:24678 | local.app-v3.opentalent.fr / 3000        | -                                                     |
+| frames      | frames      | O            | 172.20.2.4 | 3004:3004, 3005:3005   | local.frames.opentalent.fr / 3004        | -                                                     |
+| frames_v3   | frames_v3   | O            | 172.20.2.5 | 3007:3000, 24679:24679 | local.frames-v3.opentalent.fr / 3000     | -                                                     |
+| portail     | portail     | O            | -          | -                      | local.opentalent.fr                      | -                                                     |
+| portail_v2  | portail_v2  | O            | 172.20.2.6 | 3010:3000, 24680:24680 | local.portail-v2.opentalent.fr / 3000    | -                                                     |
+| typo3       | typo3       | O            | 172.20.3.1 | -                      | local.sub.opentalent.fr                  | docker.sub.opentalent.fr,  docker.sub.customdomain.fr |
+| adminassos  | adminassos  | O            | -          | -                      | local.v59.opentalent.fr                  | -                                                     |
+| metabase    | metabase    | O            | -          | -                      | local.metabase.opentalent.fr / 3000      | -                                                     |
+| es          | es          | O            | -          | -                      | local.elasticsearch.opentalent.fr / 9200 | -                                                     |
+| thumbor     | thumbor     | O            | -          | -                      | local.thumbor.opentalent.fr              | -                                                     |
+| phpmyadmin  | phpmyadmin  | O            | -          | -                      | local.phpmyadmin.opentalent.fr           | -                                                     |
+| memcached   | memcached   | X            | -          | -                      | -                                        | -                                                     |
+| mailcatcher | mailcatcher | O            | -          | 1025:1025              | local.mailcatcher.opentalent.fr / 1080   | -                                                     |
+| blackfire   | blackfire   | O            | -          | -                      | local.blackfire.opentalent.fr / 8707     | -                                                     |
+| phpdoc      | phpdoc      | O            | -          | -                      | local.ap2i-doc.opentalent.fr             | -                                                     |
+| jsdoc       | jsdoc       | O            | -          | -                      | local.app-doc.opentalent.fr              | -                                                     |
+
+
 ## Opérations courantes
 
 #### Ajouter un certificat SSL pour un nouveau domaine local

+ 16 - 16
docker-compose.yml

@@ -9,8 +9,8 @@ services:
       dockerfile: docker/nginx-proxy/Dockerfile
     restart: always
     ports:
-      - 80:80
-      - 443:443
+      - "80:80"
+      - "443:443"
     networks:
       - network
     volumes:
@@ -28,7 +28,7 @@ services:
         - COMPOSER_HASH=${COMPOSER_HASH}
     restart: always
     ports:
-      - 3306:3306
+      - "3306:3306"
     volumes:
       - ./apps/opentalent-platform/migration:/usr/src:cached
       - mysqldata:/var/lib/mysql
@@ -174,8 +174,8 @@ services:
       - ./apps/opentalent-admin-2.0:/home/workspace:rw,cached
     tty: true
     ports:
-      - 3000:3000
-      - 3001:3001
+      - "3000:3000"
+      - "3001:3001"
     environment:
       - VIRTUAL_HOST=${ADMIN_VIRTUAL_HOST}
       - VIRTUAL_PORT=${ADMIN_PORT}
@@ -198,8 +198,8 @@ services:
       - ./apps/app-doc:/home/app-doc:rw,cached
     tty: true
     ports:
-      - 3002:3002
-      - 3003:3003
+      - "3002:3000"
+      - "3003:3003"
     environment:
       - VIRTUAL_HOST=${APP_VIRTUAL_HOST}
       - VIRTUAL_PORT=${APP_PORT}
@@ -221,8 +221,8 @@ services:
       - ./apps/app-v3:/home/workspace:rw,cached
     tty: true
     ports:
-      - 3009:3000
-      - 24678:24678
+      - "3009:3000"
+      - "24678:24678"
     environment:
       - VIRTUAL_HOST=${APP_V3_VIRTUAL_HOST}
       - VIRTUAL_PORT=${APP_V3_PORT}
@@ -244,8 +244,8 @@ services:
       - ./apps/frames:/home/workspace:rw,cached
     tty: true
     ports:
-      - 3004:3004
-      - 3005:3005
+      - "3004:3004"
+      - "3005:3005"
     environment:
       - VIRTUAL_HOST=${FRAMES_VIRTUAL_HOST}
       - VIRTUAL_PORT=${FRAMES_PORT}
@@ -267,8 +267,8 @@ services:
       - ./apps/frames_v3:/home/workspace:rw,cached
     tty: true
     ports:
-      - 3007:3000
-      - 24679:24679
+      - "3007:3000"
+      - "24679:24679"
     environment:
       - VIRTUAL_HOST=${FRAMES_V3_VIRTUAL_HOST}
       - VIRTUAL_PORT=${FRAMES_V3_PORT}
@@ -320,8 +320,8 @@ services:
       - ./apps/portail_v2:/home/workspace:rw,cached
     tty: true
     ports:
-      - 3010:3000
-      - 24680:24680
+      - "3010:3000"
+      - "24680:24680"
     environment:
       - VIRTUAL_HOST=${PORTAIL_V2_VIRTUAL_HOST}
       - VIRTUAL_PORT=${PORTAIL_V2_PORT}
@@ -457,7 +457,7 @@ services:
     image: sj26/mailcatcher
     restart: always
     ports:
-      - '1025:1025'
+      - "1025:1025"
     environment:
       - VIRTUAL_HOST=${MAILCATCHER_VIRTUAL_HOST}
       - VIRTUAL_PORT=${MAILCATCHER_PORT}