在docker-compose文件中覆盖图像版本

我正在使用docker-compose.override.yml docker-compose.yml覆盖默认docker-compose.yml文件,如本链接所示,而且我可以在覆盖文件中指定portsvolumes

以类似的方式,是否也可以指定需要部署的映像的版本? 如果不是,那么我们需要为图像指定不同的版本来处理这种情况,最好的办法是什么?

任何帮助,这将是伟大的。

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,并添加内容如下图所示

在这里输入图像说明