Je suis actuellement aux prises avec le déploiement de mes services et je voulais vous demander quelle est la bonne façon de gérer plusieurs référentiels. Les référentiels sont indépendants, mais pour fonctionner en production, tout doit être lancé.
Ma configuration:
Les deux peuvent être exécutés indépendamment et le test peut être exécuté par CI
J'ai déjà essayé d'inclure les deux services en tant que sous-modules dans le référentiel Nginx et d'utiliser le docker-compose du dépôt nginx, mais je n'en suis pas vraiment satisfait.
Vous pouvez faire construire vos images CI et Push pour chaque service que vous souhaitez exécuter, et faire en sorte que l'environnement de production exécute les 3 conteneurs.
Ensuite, votre production docker-compose.yml
ressemblerait à ceci:
lb:
image: nginx
depends_on:
- Rails
- express
ports: 80:80
Rails:
image: yourorg/railsapp
express:
image: yourorg/expressapp
Sachez que docker-compose
n'est pas recommandé pour les environnements de production; vous devriez envisager d'utiliser Bundles d'applications distribuées (il s'agit toujours d'une fonctionnalité expérimentale, qui sera publiée au cœur de la version 1.13)
Alternativement, vous pouvez orchestrer vos conteneurs avec un outil comme ansible
ou un script bash; assurez-vous simplement de créer un réseau docker et d'y attacher les trois conteneurs afin qu'ils puissent se retrouver.
Edit: depuis Docker v17 et la dépréciation de DAB s en faveur de Compose file v , il semble que pour un seul hôte environnements, docker-compose
est un moyen valide pour exécuter des applications multiservices. Pour les scénarios multi-hôtes/HA/clusterisés, vous voudrez peut-être examiner Docker Swarm pour une solution autogérée, ou Docker Cloud pour une approche plus PaaS. Dans tous les cas, je vous conseille de l'essayer dans Play-with-Docker , le bac à sable en ligne officiel où vous pouvez faire tourner plusieurs hôtes et jouer avec un cluster d'essaim sans avoir besoin de tourner vos propres boîtes.