No entiendo claramente cómo docker-compose se da cuenta de cuándo recrear el contenedor o dónde no. mi caso es:
docker-compose -f conf.yml up // Ok docker-compose -f conf.yml up // xxx is up-to-dateEntonces lo hago:
docker-compose -f /copy/conf.yml up // Recreating containerPero copy/conf.yml es lo mismo que conf.yml ¿Por qué docker-compose recrea el contenedor, mientras que su configuración no cambia? Solo se carga desde otra ruta. ¿Cómo docker-compose maneja estas cosas? Debe decir "actualizado", si la configuración es la misma, a pesar de la ruta de configuración (sé sobre el indicador --no-recreate, pero quiero saber cómo funcionan las cosas)
Si una carpeta es /app/conf.yml y la otra carpeta es /app_copy/conf.yml, encontrará que docker crea dos "proyectos" diferentes, uno para "app" y otro para "appcopy" (es elimina los caracteres no alfanuméricos y los convierte en minúsculas). El proyecto es la primera parte del nombre de cada contenedor de forma predeterminada, se llama $project_$service_$instance .
Si especifica el nombre del contenedor dentro de su docker-compose.yml, entonces docker-compose lo recreará si tiene cosas como montajes de volumen en la carpeta actual que serían diferentes. De lo contrario, si los archivos de composición son realmente idénticos, la imagen de origen no ha cambiado y no hay externalidades que sean diferentes, entonces no puedo reproducir esta.
Aquí hay un ejemplo sin un container_name fijo:
$ docker-compose -f docker-compose.test.yml up -d Creating test_testapp_1 $ docker-compose -f test/docker-compose.test.yml up -d test_testapp_1 is up-to-dateA continuación se muestra lo que sucede si intenta especificar un nombre de contenedor en el archivo de redacción:
$ pwd ..../test $ docker-compose -f docker-compose.name.yml up -d Starting unique_name $ docker-compose -f subdir/docker-compose.name.yml up -d Creating network "subdir_default" with the default driver Creating unique_name ERROR: for test Cannot create container for service test: Conflict. The container name "/unique_name" is already in use by container 80b44bc94912b755cf2430b132fa6112f960e2752f69a357c27375bbc905ff76. You have to remove (or rename) that container to be able to reuse that name. $ mv subdir test $ docker-compose -f test/docker-compose.name.yml up -d unique_name is up-to-date