600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > docker-compose环境变量

docker-compose环境变量

时间:2024-05-19 08:52:09

相关推荐

docker-compose环境变量

介绍

在项目中,往往需要在 docker-compose.yml 文件中使用环境变量来控制不同的条件和使用场景,docker-compose支持多级设置环境变量。

docker-compose.yml 文件中引用的环境变量,它们的优先级如下:

Compose fileShell environment variablesEnvironment fileDockerfileVariable is not defined

注意:

以上优先级顺序都是指容器引用变量,不包括互相引用。compose file中只能引用 Shell环境变量、.env环境文件。引用不到Dockerfile中定义的变量,也引用不了env_file设置的文件中变量。compose file中的变量是不能互相引用的。即设置一个变量时,引用内部的一个变量则结果是空值。composefile中通过$ 符号引用环境变量,不支持 ${var:-value},${var:=value},${var:default}等语法。从version:'3'开始支持${var:-value}很多默认值,则可以使用 .env 环境变量文件解决。docker-compose.yml中引用的变量/etc/profile等变量并不会对容器生效。参考:https://hhoeflin.github.io//08/19/bash-in-docker/

查看当前配置命令

docker-compose config

环境变量的设置方式

compose file

version: '2'services:data-tag-biz:image: 192.168.1.XX/xxxx/data-standard-biz:9.0network_mode: "host"restart: alwaysports:- 10015:9015environment:- NACOS-HOST=${NACOS_HOST}- SW_NAME=test:${SV_NAME}- SW_SERVICES=192.168.1.XX:11800- TRACK=-javaagent:/opt/skywalking-agent.jar- JAVA_OPTS=-Xms512m -Xmx1024m -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGCcontainer_name: data-standard-biz-9

shell环境变量

export SV_NAME=data-standard-biz

环境变量文件

docker原生命令

docker run --env-file=web-variables.env

docker file中指定

version: '3'services:data-tag-biz:env_file:- file.env #相对于docker-compose.yml文件的位置。environment:- SV_NAME=data-standard-biz- NACOS-HOST=${NACOS_HOST}- SW_NAME=test:${SV_NAME}- SW_SERVICES=192.168.1.XX:11800- TRACK=-javaagent:/opt/skywalking-agent.jar- JAVA_OPTS=-Xms512m -Xmx1024m -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGCcontainer_name: data-standard-biz-9

#file.envSV_NAME=data-standard-biz-envfileENV_VALUE=env-valueNOOP=NO OP KEY

docker-compose config输出:

services:data-tag-biz:container_name: data-standard-biz-9environment:ENV_FILE: ''#没有引用到的变量ENV_VALUEENV_VALUE: env-value # 自动加入的JAVA_OPTS: -Xms512m -Xmx1024m -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGCNACOS-HOST: 192.168.1.XXNOOP: NO OP KEY#自动加入的。SV_NAME: data-standard-bizSW_NAME: test:data-standard-biz-envSW_SERVICES: 192.168.1.XX:11800TRACK: -javaagent:/opt/skywalking-agent.jarimage: 192.168.1.36/xxxx/data-standard-biz:9.0network_mode: hostports:- 10015:9015/tcprestart: alwaysversion: '3.0'

docker-compose文件中的变量是引用不到 环境文件中定义的变量的。环境文件中定义的所有变量是仅相对于容器可见的

环境变量文件中的所有变量都会自动加到变量列表中,不需要在docker-compose中定义。

.env 文件

在docker-compose.yml同级目录中加入.env文件,则可以设置docker-compose环境变量的默认值,可以在docker-compose中引用到的。

此文件可以为大量的变量配置默认值,用来代替${var:-defaultvalue}

version: '3'services:data-tag-biz:... ...environment:- SV_NAME=data-standard-biz- NACOS-HOST=${NACOS_HOST}- SW_NAME=test:${SV_NAME} #如果不设置,则默认使用 .env中默认值。... ...

# .envSV_NAME=data-standard-biz-envTEST_ENV=xxxxxxxx

docker-compose config输出:

services:data-tag-biz:container_name: data-standard-biz-9environment:ENV_FILE: ''ENV_VALUE: env-valueJAVA_OPTS: -Xms512m -Xmx1024m -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGCNACOS-HOST: 192.168.1.XXNOOP: NO OP KEYSV_NAME: data-standard-bizSW_NAME: test:data-standard-biz-env #使用了 .env中默认值。SW_SERVICES: 192.168.1.XX:11800TRACK: -javaagent:/opt/skywalking-agent.jarimage: 192.168.1.XX/xxxx/data-standard-biz:9.0network_mode: hostports:- 10015:9015/tcprestart: alwaysversion: '3.0'

Compose CLI 环境变量

Compose CLI(compose command-line 即 docker-compose 程序)能够识别名称为 COMPOSE_PROJECT_NAME 和 COMPOSE_FILE 等环境变量(具体支持的环境变量请参考这里)。通过设置这些变量可以控制docker-compose的行为。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。