Para la implementación de producción, no quiero volúmenes compartidos. Entonces, tengo un archivo de anulación pero esto no elimina los volúmenes.
¿Hay alguna manera de eliminar volúmenes compartidos en un archivo de anulación? Me gustaría evitar tener una anulación solo para el desarrollo, porque parece complicado de usar.
Este es mi docker-compose.yml :
version: '2' # other services defined here services: web: build: context: . # other configuration volumes: - .:${APP_DIR} Y mi docker-compose.prod.yml :
version: '2' services: web: volumes: [] restart: alwaysSupongo que desea usar docker-compose up para iniciar la versión de desarrollo y tener un segundo archivo de configuración para extenderlo para la producción.
Si desea asegurarse de anular los volúmenes por completo, use un tercer archivo de configuración, docker-compose.override.yml . Ponga todas sus definiciones de volumen para el desarrollo allí.
docker-compose up extiende la configuración base con este archivo de forma predeterminada . Pero cuando hace algo como docker-compose -f docker-compose.yml -f production.yml , el archivo docker-compose.override.yml no se cargará y solo obtendrá los volúmenes del archivo de producción.
Al fusionar una entrada de lista en docker-compose , agrega nuevos mapas pero no elimina los mapeos de volumen existentes.
Puede implementar esto haciendo que el desarrollador tenga el archivo de anulación o, hasta la versión 2.1, puede extender un archivo acoplable común en lugar de aplicar anulaciones que permitan a los desarrolladores señalar un solo archivo.
Este podría ser su docker-compose.yml:
version: '2' # other services defined here services: web: extends: file: docker-compose.prod.yml service: web build: context: . restart: no volumes: - .:${APP_DIR}Y su docker-compose.prod.yml contendría toda la configuración común y los ajustes de producción:
version: '2' services: web: # other configuration restart: always