Ejecutar múltiples proyectos Dockerize al mismo tiempo usando PHP, MySQL, nginx
Tengo proyectos condocker-compose
configuración con la misma configuración (PHP, MySQL, nginx). Cuando ejecuto un proyecto condocker-compose up
no hay ningún problema, pero necesito cambiar entre ellos a pocas veces al día para el desarrollo.
Los problemas:
las configuraciones compartidas para el mismo puerto para nginxcompartir configuración para DB y conexión predeterminadas (nombre y usuarios)dominios para cada proyectoyo tengoDocker for Mac
- bordePor ahoraEn este momento simplemente correup
ydown -v
cada vez. Principalmente, los proyectos están en la misma versión de PHP (debería estar) y MySQL.
Una de las ideas es crear la configuración en la carpeta principalworkspace
, docker-compose
con algunos equilibradores de carga, algunas reglas generarán un dominio para un proyecto determinado con volumen como carpeta principal y con un servidor MySql y pocos DB, pero esta es una idea cruda.
¿Qué solución es trabajar con una situación dada?
¿Proponer alguna estructura o configuración de acoplador para resolver configuraciones independientes?ActualizarMis archivos compuestos por dockerversión: '2.1'
Configuración de servidor único para devservices:
app:
image: ${PHP_IMAGE}
volumes:
- ${COMPOSE_DIR}/../../:/var/www:cached
- ${COMPOSER_HOME}:/root/.composer:cached
depends_on:
- db
environment:
- SYMFONY_ENV=${SYMFONY_ENV-prod}
- SYMFONY_DEBUG
- SYMFONY_HTTP_CACHE
- SYMFONY_HTTP_CACHE_CLASS
- SYMFONY_TRUSTED_PROXIES
- DATABASE_USER
- DATABASE_PASSWORD
- DATABASE_NAME
- DATABASE_HOST=db
web:
image: ${NGINX_IMAGE}
volumes_from:
- app:ro
ports:
- "8080:80"
environment:
- SYMFONY_ENV=${SYMFONY_ENV-prod}
- MAX_BODY_SIZE=20
- FASTCGI_PASS=app:9000
- TIMEOUT=190
- DOCKER0NET
command: /bin/bash -c "cd /var/www && cp -a doc/nginx/ez_params.d /etc/nginx && bin/vhost.sh --template-file=doc/nginx/vhost.template > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"
db:
image: ${MYSQL_IMAGE}
volumes:
- ${COMPOSE_DIR}/entrypoint/mysql:/docker-entrypoint-initdb.d/:ro
environment:
- MYSQL_RANDOM_ROOT_PASSWORD=1
- MYSQL_USER=$DATABASE_USER
- MYSQL_PASSWORD=$DATABASE_PASSWORD
- MYSQL_DATABASE=$DATABASE_NAME
- TERM=dumb
Dado esto, como dije, me gustaría tener proyectos en ejecución con diferentes versiones de PHP. Cada uno tiene lo mismonginx
configuración, entonces necesita de alguna manera tener la posibilidad de ejecutarlos, fácil y simultáneamente.
Comprenda la respuesta de @Vladimir Kovpak, pero trabajar de esta manera manualmente generará mucho trabajo. Cada proyecto tiene su propia configuración docker-compose.
Lo que sería perfectoescenario 1Vaya al proyecto, ejecute el comando para construir correctamente por docker-composePodría hacer trabajo de desarrollopodría tener una página accesible a través de algunos dominios dinámicosejecutar comando para cerrar proyectoEscenario 2Vaya al proyecto, ejecute el comando para construir correctamente por docker-composeVaya a otro proyecto, ejecute el comando para construir correctamente por docker-composeVaya a otro proyecto, ejecute el comando para construir correctamente por docker-composePodría hacer trabajo de desarrollopodría tener una página accesible a través de algunos dominios dinámicosejecutar comando para cerrar proyectoPodría funcionar con todos los proyectos al mismo tiempo. El primer paso es la proposición: cualquier inicialización y cierre estaría bien, ya que no es doloroso, debe ser rápido y fácil.