2017-09-28 10 views
0

Je m'interroge sur la meilleure architecture pour un environnement de développement basé sur Docker avec une pile LAMP.Environnement de développement basé sur Docker pour plusieurs projets

Exigences

  • travaillant sur plusieurs projets en parallèle
  • La plupart des projets utilisent la même pile LAMP (pour simplifier, supposons que tous les projets partagent la même pile et configuration)
  • Le hôte est en cours d'exécution Windows + VBox + Docker Toolbox (ie Boot2Docker)

architecture actuelle

  • Un environnement de développement partagé l'exécution de plusieurs conteneurs (web, db, données persistantes ..) avec configuration vhosts par site
  • Utilisation de scripts/conteneur Jenkins configuration nouveau projet (nouveau DB, configuration vhost ..)
  • exécution conteneur Samba personnalisé pour partager les données avec la machine Windows (IDE est en cours d'exécution sur Windows)

Comme toujours il y a des avantages. et bien que cela soit assez facile pour la maintenance, nous ne sommes pas en mesure de déployer vraiment un projet spécifique avec un fichier docker-compose.yml dédié, et nous ne pouvons pas non plus obtenir tous les avantages des "micro services" Version MySQL pour un site spécifique.

La question est de savoir comment on peut utiliser un fichier docker-compose.yml par projet, mais où plusieurs projets sont exécutés simultanément (puisque tous les projets utilisent le port 80). Sera-t-il préférable (et même possible?) D'utiliser des ports aléatoires par projet et d'exécuter une couche proxy au-dessus de ces conteneurs Web?

Autres options ou modèles de conception courants pour ce cas d'utilisation?

Merci.

Répondre

1

La réponse courte est oui. Docker affecte par défaut des ports aléatoires si aucun port n'est spécifié. Pour la cartographie j'utiliser: https://github.com/jwilder/nginx-proxy

Vous pouvez avoir quelque chose comme project2.yml project1.yml .... et de commencer les conteneurs seraient quelque chose comme:

docker-comppse -f project1.yml up 

Cependant, je ne suis pas sûr Pourquoi essaierais-tu de faire ça? Vous pouvez utiliser quelque chose comme Rancher et diviser mon hôte de développement dans plusieurs petits environnements de développement.

+0

Je ne suis pas familier avec Rancher mais de leur documentation ils parlent surtout des environnements de production. Pourquoi n'aimez-vous pas la première solution que vous avez proposée? – Rotem

+1

Oui mais cela vous permet de faire des piles constituées d'un ou plusieurs hôtes et c'est entièrement à vous de décider pour ce que vous voulez utiliser (dev, pre-prod, prod). Cependant, vous pouvez essayer comme vous l'avez mentionné avec différents fichiers de composition de docker pour différents projets et voir comment ça se passe – Sergiu