Actualmente estoy luchando con la implementación de mis servicios y quería preguntar cuál es la forma correcta cuando tienes que lidiar con múltiples repositorios. Los repositorios son independientes, pero para que funcionen en producción, es necesario lanzar todo.
Mi configuración:
Ambos se pueden ejecutar de forma independiente y la prueba se puede ejecutar mediante CI
Ya intenté incluir los dos servicios como submódulos en el repositorio de Nginx y usar el docker-compose del repositorio de nginx, pero no estoy muy contento con eso.
Puede hacer que su CI cree e inserte imágenes para cada servicio que desee ejecutar y hacer que el entorno de producción ejecute los 3 contenedores.
Entonces, su producción docker-compose.yml se vería así:
lb: image: nginx depends_on: - rails - express ports: 80:80 rails: image: yourorg/railsapp express: image: yourorg/expressapp Tenga en cuenta que docker-compose no se recomienda para entornos de producción; debería considerar el uso de paquetes de aplicaciones distribuidas (esta es todavía una característica experimental, que se lanzará al núcleo en la versión 1.13)
Alternativamente, puede orquestar sus contenedores con una herramienta como ansible o un script bash; solo asegúrese de crear una red acoplable y adjunte los tres contenedores para que puedan encontrarse entre sí.
Editar: desde Docker v17 y la desaprobación de DAB s a favor del archivo Compose v3 , parece que para entornos de un solo host, docker-compose es una forma válida de ejecutar aplicaciones de servicios múltiples. Para escenarios multi-host/HA/clusterizados, es posible que desee buscar Docker Swarm para una solución autogestionada o Docker Cloud para un enfoque más PaaS. En cualquier caso, le aconsejo que lo pruebe en Play-with-Docker , la zona de pruebas oficial en línea donde puede crear varios hosts y jugar con un grupo de enjambre sin necesidad de crear sus propias cajas.