Me encuentro en la situación de que quiero deshabilitar un servicio temporalmente en un docker-compose
archivo.
Por supuesto que podría comentarlo, pero ¿hay alguna opción para decir " enabled: false
"?
Me encuentro en la situación de que quiero deshabilitar un servicio temporalmente en un docker-compose
archivo.
Por supuesto que podría comentarlo, pero ¿hay alguna opción para decir " enabled: false
"?
--no-deps
en caso de que no desee iniciar las dependencias. Sé que no es lo que estás buscando, pero es al revés.
docker-compose -f docker-compose.yml -f another-docker-compose.yml up -d
. Puede verificar la combinación de compose de docker resultante con el comando de configuración :docker-compose -f docker-compose.yml -f another-docker-compose.yml config
Respuestas:
Simplemente podría redefinir el entrypoint
ocommand
para reemplazar dicho comando con algo que no hace nada ( /bin/true
)
Eso haría que el contenedor saliera inmediatamente, sin hacer nada.
shadi agrega los siguientes consejos en los comentarios:
Si no desea que el servicio se compile en absoluto, vuelva a definir la clave de compilación para que apunte a una
Dockerfile
que solo tenga:
FROM tianon/true
ENTRYPOINT ["/true"]
5andr0 señala en los comentarios la sección de nivel superiorx-disabled:
(una extensión similar a un campo)
Mucho más conveniente: mover los servicios para discapacitados a la sección de nivel superior en
x-disabled:
lugar deservices:
Las secciones con el
x-
prefijo se analizarán, pero se ignorarán si no se utilizan de la forma prevista como campo de extensión.
restart: "no"
para evitar reinicios infinitos
x-disabled:
lugar deservices:
Puedes hacerlo en un docker-compose.override.yaml
archivo.
Este archivo se lee automáticamente docker-compose
y se fusiona con el archivo principal docker-compose.yaml
.
Si lo tiene excluido de Git, cada desarrollador puede modificar la configuración (con algunas limitaciones) sin cambiar el original docker-compose.yaml
.
Por lo tanto, el servicio foo
se puede deshabilitar ad-hoc redefiniendo su punto de entrada en docker-compose.override.yaml
:
version: "3"
services:
foo:
entrypoint: ["echo", "Service foo disabled"]
export XXX_ENTRYPOINT=/bin/true
luego `entrypoint: [" $ {XXX_ENTRYPOINT: -docker-entrypoint.sh} "]`
Agrego la siguiente línea adicional al servicio que quiero deshabilitar temporalmente:
command: echo "{put your service name here} disabled"
Empieza de todos modos, pero no hace nada.
command
no tiene ningún efecto en el punto de entrada. En su ejemplo usted confía que el entrypoint
es bash
supongo. Para hacer esto resistente ((independiente del integrado entrypoint
), creo que debe redefinir el punto de entrada, no el comando.
No hay forma de deshabilitar un servicio definido en Docker compose yaml file. La sugerencia de VonC es una buena solución. Consulte a continuación la documentación de la ventana acoplable redactar para conocer las opciones disponibles https://docs.docker.com/compose/compose-file/
Escalaría el servicio a 0 réplicas con: deploy: réplicas: 0
Desafortunadamente, como dice la documentación, esto solo funciona con docker swarm.
Primitivo pero agregue un #
al principio de cada línea del servicio.
docker-compose up
, se iniciarán todos los servicios por defecto. Sin embargo, si lo ejecutadocker-compose up myservice
, se iniciará mi servicio y las cosas que dependen de él. Al configurar las dependencias, puede hacer que el servicio defectuoso no comience con este comando. También puede hacerdocker-compose run
para obtener solo los servicios que desea. La elección correcta también puede ser dividir esto en varios archivos de redacción para permitirle la flexibilidad que necesita.