【Docker实战】为docker-compose.yaml文件提供环境变量
compose
compose - Docker Compose是一个用于定义和运行多容器Docker应用程序的工具,通过Compose文件格式简化应用部署过程。
项目地址:https://gitcode.com/gh_mirrors/compose/compose
免费下载资源
·
我们使用docker-compose来部署docker容器时,有时需要提供环境变量进行动态部署。
最简便的方法,就是使用.env文件。
首先进入docker-compose.yaml文件的同级根目录。编辑.env文件
vim .env
然后设置环境变量
TAG=8.0
在下面的docker-compose.yaml文件(wordpress+mysql)中使用这个TAG(格式为“${TAG}”)
version: '3.1'
services:
wordpress:
image: wordpress
restart: always
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
volumes:
- wordpress:/var/www/html
db:
image: mysql:${TAG}
restart: always
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- db:/var/lib/mysql
volumes:
wordpress:
db:
我们使用config命令查看导入变量的情况,该命令会将解析后的应用程序配置打印到终端。
docker compose config
结果如下:
WARN[0000] /data/docker-compose.yaml: `version` is obsolete
name: data
services:
db:
environment:
MYSQL_DATABASE: exampledb
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: "1"
MYSQL_USER: exampleuser
image: mysql:8.0
networks:
default: null
restart: always
volumes:
- type: volume
source: db
target: /var/lib/mysql
volume: {}
wordpress:
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: exampledb
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_USER: exampleuser
image: wordpress
networks:
default: null
ports:
- mode: ingress
target: 80
published: "8080"
protocol: tcp
restart: always
volumes:
- type: volume
source: wordpress
target: /var/www/html
volume: {}
networks:
default:
name: data_default
volumes:
db:
name: data_db
wordpress:
name: data_wordpress
可以看到mysql的tag变为了8.0。
不过这种方法,适合于静态配置好环境变量的情况。还有一种情况,每次都需要动态设置环境变量。
比如工作中,我就遇到一种情况,需要在jenkins的pipeline中,提供版本号给docker-compose文件,使得每次docker compose up启动的容器使用不同的tag。
那么这时候就可以使用在shell中给出环境变量。
TAG=9.0 docker compose config
可以看到,mysql的tag变为了9.0。
WARN[0000] /data/docker-compose.yaml: `version` is obsolete
name: data
services:
db:
environment:
MYSQL_DATABASE: exampledb
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: "1"
MYSQL_USER: exampleuser
image: mysql:9.0
networks:
default: null
restart: always
volumes:
- type: volume
source: db
target: /var/lib/mysql
volume: {}
wordpress:
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: exampledb
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_USER: exampleuser
image: wordpress
networks:
default: null
ports:
- mode: ingress
target: 80
published: "8080"
protocol: tcp
restart: always
volumes:
- type: volume
source: wordpress
target: /var/www/html
volume: {}
networks:
default:
name: data_default
volumes:
db:
name: data_db
wordpress:
name: data_wordpress
备注:如果shell中设置了和.env文件相同的环境变量,shell的优先级要更高。
GitHub 加速计划 / compose / compose
33.27 K
5.15 K
下载
compose - Docker Compose是一个用于定义和运行多容器Docker应用程序的工具,通过Compose文件格式简化应用部署过程。
最近提交(Master分支:2 个月前 )
501b5acd
Add `jhrotko` to Core Maintainers.
Signed-off-by: Laura Brehm <laurabrehm@hey.com>
11 天前
f51bc4cd
Signed-off-by: Guillaume Lours <705411+glours@users.noreply.github.com>
11 天前
更多推荐
已为社区贡献1条内容
所有评论(0)