Bonjour,

Depuis quelques semaines je bosse sur une application, qui sera, je l'espère, mon futur gagne pain ! J'ai suivi les tutos de graf sur docker, et je dois dire que ça me tente bien. J'ai donc naturellement essayé de mettre en place un environnement de dev pour mon application. Et c'est là que ça se corse...

Mon problème plus en détails

En gros, mon application est basée sur Symfony, et communique via des appels HTTP vers des sites WordPress, via un plugin qui va bien (l'API REST est enfin arrivée !). Donc pour mettre en place cette configuration sur docker, j'ai essayé de faire tourner en premier lieu mon application Symfony: ça n'a pas été une mince affaire, mais j'ai fini par y arriver. Voici le docker-compose.yml si jamais ça vous intéresse:

nginx:
  build: docker/nginx
  ports:
    - "8080:80"
  links:
    - php
  volumes:
    - ./:/app

db:
  image: mysql:5.7
  ports:
        - 3306:3306
  environment:
    MYSQL_ROOT_PASSWORD: root
    MYSQL_DATABASE: backuphero
    MYSQL_USER: backuphero
    MYSQL_PASSWORD: backuphero

php:
  build: docker/php-fpm
  links:
    - db
  volumes:
    - ./:/app
  working_dir: /app

Ensuite est venu le moment de créer un WordPress pour y mettre mon beau plugin. Sauf que la... panique ! Comment faire pour faire aussi tourner un WordPress sur ma docker-machine ? En fait, dans l'idéal je voudrai vraiment garder l'application Symfony et le WordPress séparés, donc mettre leur configuration dans un docker-compose.yml commun me semble ne pas convenir (je peux me tromper).

Donc la question est: est il possible de faire tourner plusieurs applications sur la même docker-machine, partageant (ou non), le même container nginx, le même container php-fpm, et le même container mysql ?

Merci d'avance pour vos réponse, et bien sur si je ne suis pas clair, ou si vous avez besoin de plus d'infos, n'hésitez pas à me solliciter.

Bonne soirée

3 réponses


elhebert
Réponse acceptée

@sarpey:

est il possible de faire tourner plusieurs applications sur la même docker-machine, partageant (ou non), le même container nginx, le même container php-fpm, et le même container mysql ?

J'ai l'impression que tu ne comprend pas du tout ce que tu fais. Tu as ici trois containers qui travaillent ensemble afin de te donner un environement de dev.

Tu as beau avoir 3 containers, il n'empeche que ce que tu as ici est une LEMP-stack tout ce qui a de plus classique. Si tu veux faire tourner 1000 sites avec, tu peux, je vois pas trop ce qui t'en empêche.

Lorsque Grafikart présente des outils, tu n'es pas obligé de les utilisés forcément. Je dit ça simplement parce qu'on voit que tu as des lacunes concernant Docker, et les containers en général.

PS: docker-machine n'est qu'une couche d'abstraction à Docker, la couche qui va te permettre de créer une VM et d'émuler docker dans ton shell actuel sans pour autant avoir accès à Docker depuis le shell. (Couche obligatoire actuellement pour Mac et Windows tant que Docker for Mac et Docker for Windows ne sont pas stable).

sarpey
Auteur
Réponse acceptée

Salut !

Tu as sans doute raison, Docker est clairement obscur pour moi à l'heure actuelle. Mais bon, c'est comme ça qu'on progresse hein !

En fait j'y ai repensé après mon message, mais oui, je peux tout à fait faire tourner mes deux projets avec deux docker-compose differents, y'a pas de soucis la dessus.

En fait mon soucis va surtout être au niveau du fichier hosts de ma machine virtuelle. Mon application Symfony a besoin de faire appel au site WordPress, et inversement. Donc jusqu'ici, pour mon environnement de développement, je modifiais moi même mon fichier host, et ça roulais bien comme ça.

Va juste falloir que je trouve comment reproduire ça avec docker, et ça devrai le faire.

Bref, y'a encore du boulot avant de maitriser la bête !

Merci pour ta réponse en tout cas

@sarpey

En fait j'y ai repensé après mon message, mais oui, je peux tout à fait faire tourner mes deux projets avec deux docker-compose differents, y'a pas de soucis la dessus.

Mais pourquoi ? Un seul docker-compose suffit. Tu ne maitrise clairement pas le sujet.
Si tu utilise plusieurs docker-compose , tu va créer plusieurs instance de nginx, mysql et php. Qui font tourné sur le même port (sauf si tu le change), et tout ce que tu va avoir, c'est des soucis.

Un seul docker-compose suffit, il suffit simplement de faire comme si c'était un serveur web, tu fais des vhost, et tu pourra héberger plusieurs sites sans soucis.