在docker-compose文件中覆盖图像版本
我正在使用docker-compose.override.yml
docker-compose.yml
覆盖默认docker-compose.yml
文件,如本链接所示,而且我可以在覆盖文件中指定ports
和volumes
。
以类似的方式,是否也可以指定需要部署的映像的版本? 如果不是,那么我们需要为图像指定不同的版本来处理这种情况,最好的办法是什么?
任何帮助,这将是伟大的。
Docker已经有了这个function。 我试图用简单的docker-compose覆盖图像名称,它正在工作。
例如,
有内容docker-compose.yml
,
my-httpd: image: httpd:latest ports: - "1110:80"
和docker-compose.override.yml
内容一样,
my-httpd: image: httpd:2.4
在执行docker-compose -d
,这里是docker ps的信息,
它使用docker-compose.yml
(未覆盖)的ports
docker-compose.yml
image
,因为它在这里被覆盖。
注意 :它有不同的名称和位置,可以像下面的命令使用它,而不是docker-compose -d
,
docker-compose -f <DOCKER COMPOSE LOCATION> -f <OVERRIDE FILE LOCATION> up -d
编辑2:
以上述方式覆盖将只replace非数组值,数组variables将被合并。
例如,如果我在两个文件中都有一个ports
是数组,它将绑定两个端口,而不是像image
部分(非数组)那样只是从覆盖的文件中获取端口值。
例如你需要有3个版本的docker:
-
docker工人composer php,master.yml
-
docker工人composer php,dev.yml
-
docker工人composer php,docker.yml
您可以创build3个文件dockercomposer php,并添加内容如下图所示