docker-compose up在configuration不变时重新创build容器

我不清楚Docker-compose是如何实现什么时候重新创build容器,哪里不是。 我的情况是:

docker-compose -f conf.yml up // Ok docker-compose -f conf.yml up // xxx is up-to-date 

那我呢:

 docker-compose -f /copy/conf.yml up // Recreating container 

但是copy / conf.yml与conf.yml是一样的为什么docker-compose重新创build容器,而它的configuration是不变的? 它只从其他path加载。 docker-compose如何处理这个东西? 它必须说“最新”,如果configuration是相同的,尽pipeconfiguration的path(我知道 – 没有重新创build国旗,但我想知道事情是如何工作的)

如果一个文件夹是/app/conf.yml,另一个文件夹是/app_copy/conf.yml,那么你会发现docker创build了两个不同的“项目”,一个是“app”,另一个是“appcopy”删除非字母数字字符,并使其全部小写)。 该项目默认是每个容器名称的第一部分,名称为$project_$service_$instance

如果您在docker-compose.yml中指定了容器名称,那么如果您将卷装入到当前文件夹中,则docker-compose将会重新创build它。 否则,如果撰写文件是完全相同的,源图像没有改变,没有外部因素会有所不同,那么我不能重现这一个。

这是一个没有固定的container_name的例子:

 $ 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-date 

以下是如果您尝试在撰写文件中指定容器名称会发生​​什么情况:

 $ 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