docker-compose 根据动态传递镜像标签的变量

我们经常使用docker-comopse来管理docker容器,通常docker_compose.yml来指定镜像,如果我把镜像写死,那每次发布的时候,还得修改docker-compose.yml文件,这非常不方便。那是否可以把镜像的tag写成变量,然后每次启动的时候,把变量传进去呢?

docker-compose.yml文件内容:

services:
  backend:
    image: flask:${TAG}
    restart: no
    ports:
      - "5000:5000"

这个${TAG}就是标签的变量。

那怎么把值传给docker-compose.yml中的变量呢?

 

方式一:

直接在命令行中设置环境变量

TAG=tag_value  docker-compose up -d

这样就等于用的是flask:tag_value 这个镜像。

 

方式二:

使用 .env 文件

docker-compose 支持从一个 .env 文件读取环境变量。在你的项目根目录下创建一个 .env 文件,并定义环境变量:

.env 文件内容:

TAG=tag_value

然后,docker-compose.yml 中可以继续使用 ${BACKEND_TAG} 来引用该变量:

启动时,docker-compose 会自动加载 .env 文件并替换 ${TAG} 变量

 

方式三:

使用 env_file 指定环境变量文件

你还可以通过在 docker-compose.yml 文件中使用 env_file 来指定一个外部的环境变量文件。这种方法适用于有多个环境变量时,能够将它们集中在一个文件中。

比如,你可以创建一个 flask.env 文件:

flask.env 文件内容:

TAG=tag_value

 

在docker-compose.yml中引用这个文件

services:
  backend:
    image: flask:${TAG}
env_file:
- flask.env
    restart: no
    ports:
      - "5000:5000"

启动时,docker-compose 会读取 flask.env 文件中的环境变量。

 

posted @ 2025-05-12 17:56  羊脂玉净瓶  阅读(43)  评论(0)    收藏  举报