Ce mémo a été publié le 19 juillet 2020 et peut contenir des informations qui peuvent être incomplètes, non mises à jour voir erronées du fait de son ancienneté.
N'hésitez pas à compléter votre recherche sur des articles plus récents.
Mémo pour configurer une adresse ip fixe sur un container ayant plusieurs réseaux déclarés.
Le besoin
Le réseau public est un réseau déclaré par le reverse proxy Nginx en frontal.
En utilisant docker-compose :
- Avoir un container pour une application web et rattaché au réseau public créé par le reverse proxy Nginx et à un réseau privé pour avoir accès à la base de données.
- Avoir un réseau privé commun avec un container MariaDB ou MySQL.
Ce qui permet de ne pas rattacher le container de bases de données à un réseau public pour des raisons plus qu’évidentes 😉 .
Premier essai
Tous dans le réseau public :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
version: '3.8' services: myapp: ... networks: nginx_proxy_net: ipv4_address: ${GITEA_PRIVATE_IP} myapp-db: ... networks: - nginx_proxy_net networks: nginx_proxy_net: external: true |
Résultat ok, mais le container DB peut être accessible par d’autres containers sur le même réseau créé par le proxy Nginx.
Second essai
Première tentative d’Isolation du container myapp-db ;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
version: '3.8' services: myapp: ... networks: nginx_proxy_net: ipv4_address: ${GITEA_PRIVATE_IP} - myapp_private_net myapp-db: ... networks: - myapp_private_net networks: nginx_proxy_net: external: true myapp_private_net: external: false |
Résultat pas ok. Docker Compose n’aime pas ce genre de conf.
Troisième essai
Petite astuce qui va permettre à Docker Compose d’être d’accord :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
version: '3.8' services: myapp: ... networks: nginx_proxy_net: ipv4_address: ${GITEA_PRIVATE_IP} myapp_private_net: aliases: - internal myapp-db: ... networks: myapp_private_net: aliases: - internal networks: nginx_proxy_net: external: true myapp_private_net: external: false |
Et voilà !