Laradock ofrece dos opciones: (1) entorno Docker separado para cada proyecto y (2) entorno Docker único para todos sus proyectos.
¿Cuál es la diferencia entre las dos configuraciones? ¿Qué configuración se recomendaría si tengo dos proyectos que voy a implementar en un solo Droplet (Digitalocean), cada uno con un nombre de dominio independiente?
Imagina que tienes 2 proyectos: el proyecto A y el proyecto B.
En la opción (1), crea un entorno docker para el proyecto A y un entorno docker diferente para el proyecto B. Eso significa que la base de datos MySQL para el proyecto A estará en un contenedor diferente al de la base de datos MySQL para el proyecto B. Personalmente prefiero esto enfoque, porque:
te garantiza que cada proyecto está aislado y puede tener distintas dependencias . Si necesita actualizar la versión de MySQL para el proyecto A, puede hacerlo fácilmente sin necesidad de actualizar también el proyecto B.
no hay posibilidad de interacción no deseada entre los dos proyectos. El Proyecto A no puede ver los datos del Proyecto B, no hay posibles errores de configuración que resulten en una interacción incorrecta entre los proyectos.
Por otro lado, no es trivial ejecutar los 2 proyectos simultáneamente si usan un entorno docker separado: necesitará modificar muchas configuraciones para que usen puertos separados sin crear conflictos.
La opción (2) es básicamente lo contrario. Crea solo un contenedor para cada servicio y los dos proyectos usan los mismos contenedores. Tendrá un solo contenedor MySQL con 2 bases de datos diferentes, una utilizada por el proyecto A y otra utilizada por el proyecto B. La principal fortaleza de este enfoque es la capacidad de ejecutar los proyectos al mismo tiempo , con un esfuerzo mínimo.
Por otro lado, las cosas se complican si los proyectos requieren una versión diferente de la misma dependencia y una configuración incorrecta puede generar interacciones inesperadas (por ejemplo, puede configurar incorrectamente la base de datos de Redis en un proyecto y los dos proyectos compartirían el mismo cubo, con la posibilidad de superposiciones y problemas que son muy difíciles de detectar y depurar)
Como regla general, usaría la opción (2) en caso de que los dos proyectos dependan fuertemente el uno del otro y se desarrollen juntos y la opción (1) en todas las demás situaciones.