我正在尝试运行一个容器。我已将图像上传到私有Docker注册表。我想写一个compose文件来下载和部署图像。但我想将TAG名称作为docker-compose run命令中的变量传递。我的compose文件如下所示。如何将KB_DB_TAG_VERSION的值作为docker-compose up命令的一部分传递?
version: '3'
services:
db:
#build: k-db
user: "1000:50"
volumes:
- /data/mysql:/var/lib/mysql
container_name: k-db
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
image: XX:$KB_DB_TAG_VERSION
image: k-db
ports:
- "3307:3306"
答案 0 :(得分:18)
您有两个选择:
答案 1 :(得分:5)
您可以在执行ModelCheckpoint
命令的目录(以及docker-compose up
文件所在的目录)上创建.env
file,其中包含以下内容:
docker-compose.yml
您的KB_DB_TAG_VERSION=kb-1.3.20-v1.0.0
文件应如下所示(已添加docker-compose.yml
和{
):
}
答案 2 :(得分:0)
只是为了补充其他人(尤其是@JakubKukul)概述的内容
出于安全目的,如果 docker-compose 文件受版本控制,您可能不希望在 docker-compose 文件中保留易受攻击的信息,例如用户名/密码。您也可以将主机上的环境变量映射到容器内的环境变量。在这种情况下,它可能类似于以下内容:
version: '3'
services:
db:
#build: k-db
user: "1000:50"
volumes:
- /data/mysql:/var/lib/mysql
container_name: k-db
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
image: XX:$KB_DB_TAG_VERSION
image: k-db
ports:
- "3307:3306"
其中 MYSQL_PASSWORD
是两者:
db
服务的容器内的环境变量答案 3 :(得分:-1)
在您的docker-compose.yml文件中添加
env_file:
- .env_file
访问您的db
服务,其中.env_file是您的.env文件(相应地更改其名称)。
version: '3'
services:
db:
#build: k-db
user: "1000:50"
volumes:
- /data/mysql:/var/lib/mysql
container_name: k-db
env_file:
- .env_file
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
image: XX:$KB_DB_TAG_VERSION
image: k-db
ports:
- "3307:3306"