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 文件中的环境变量。

浙公网安备 33010602011771号