Abh*_*i.G 26 docker dockerfile docker-compose
我正在尝试运行一个容器.我已将图像上传到私有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"
Run Code Online (Sandbox Code Playgroud)
Jak*_*kul 35
您有两种选择:
将对KEY=VALUE(或)添加到您的docker-compose命令中,例如:
KB_DB_TAG_VERSION=kb-1.3.20-v1.0.0 docker-compose up
Run Code Online (Sandbox Code Playgroud)
在脚本中早期导出它也应该有效,例如:
export KB_DB_TAG_VERSION=kb-1.3.20-v1.0.0
docker-compose up
Run Code Online (Sandbox Code Playgroud)vas*_*orc 21
只是为了补充其他人,特别是@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"
Run Code Online (Sandbox Code Playgroud)
其中MYSQL_PASSWORD两者都是:
db来自服务的容器内的环境变量Dan*_*ell 10
可以在命令行上将环境变量传递给容器,而无需在文件中指定值。在 docker-compose 文件中容器的服务定义上添加仅environment包含变量名称的键(无值或赋值运算符):
db:
...
environment:
- KB_DB_TAG_VERSION
Run Code Online (Sandbox Code Playgroud)
以这种方式使用,没有赋值,意味着 docker-compose 将在当前环境/shell 中查找环境变量:
KB_DB_TAG_VERSION=mytagversion docker-compose up
Run Code Online (Sandbox Code Playgroud)
参考:https://docs.docker.com/compose/environment-variables/#pass-environment-variables-to-containers
小智 8
docker-compose --env-file .\.env up
Run Code Online (Sandbox Code Playgroud)
https://docs.docker.com/compose/environment-variables/
您可以创建一个.env文件,你在哪里执行目录docker-compose up命令(和你的docker-compose.yml文件所在的位置),内容如下:
KB_DB_TAG_VERSION=kb-1.3.20-v1.0.0
Run Code Online (Sandbox Code Playgroud)
您的docker-compose.yml文件应如下所示(添加{和}):
version: '3'
services:
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"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25044 次 |
| 最近记录: |