docker-compose環(huán)境變量使用及說明
介紹
在項目中,往往需要在 docker-compose.yml 文件中使用環(huán)境變量來控制不同的條件和使用場景,docker-compose支持多級設置環(huán)境變量。
docker-compose.yml 文件中引用的環(huán)境變量,它們的優(yōu)先級如下:
Compose file Shell environment variables Environment file Dockerfile Variable is not defined
注意:
- 以上優(yōu)先級順序都是指容器引用變量,不包括互相引用。
- compose file中只能引用 Shell環(huán)境變量、
.env環(huán)境文件。引用不到Dockerfile中定義的變量,也引用不了env_file設置的文件中變量。 - compose file中的變量是不能互相引用的。即設置一個變量時,引用內(nèi)部的一個變量則結果是空值。
- composefile中通過$ 符號引用環(huán)境變量,不支持 ${var:-value},${var:=value},${var:default}等語法。從
version:'3'開始支持 ${var:-value} - 很多默認值,則可以使用 .env 環(huán)境變量文件解決。
- docker-compose.yml中引用的變量
- /etc/profile等變量并不會對容器生效。
查看當前配置命令
docker-compose config
環(huán)境變量的設置方式
compose file
version: '2'
services:
data-tag-biz:
image: 192.168.1.XX/xxxx/data-standard-biz:9.0
network_mode: "host"
restart: always
ports:
- 10015:9015
environment:
- 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:+UseConcMarkSweepGC
container_name: data-standard-biz-9shell環(huán)境變量
export SV_NAME=data-standard-biz
環(huán)境變量文件
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:+UseConcMarkSweepGC
container_name: data-standard-biz-9#file.env SV_NAME=data-standard-biz-envfile ENV_VALUE=env-value NOOP=NO OP KEY
docker-compose config輸出:
services:
data-tag-biz:
container_name: data-standard-biz-9
environment:
ENV_FILE: '' #沒有引用到的變量ENV_VALUE
ENV_VALUE: env-value # 自動加入的
JAVA_OPTS: -Xms512m -Xmx1024m -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC
NACOS-HOST: 192.168.1.XX
NOOP: NO OP KEY #自動加入的。
SV_NAME: data-standard-biz
SW_NAME: test:data-standard-biz-env
SW_SERVICES: 192.168.1.XX:11800
TRACK: -javaagent:/opt/skywalking-agent.jar
image: 192.168.1.36/xxxx/data-standard-biz:9.0
network_mode: host
ports:
- 10015:9015/tcp
restart: always
version: '3.0'docker-compose文件中的變量是引用不到 環(huán)境文件中定義的變量的。環(huán)境文件中定義的所有變量是僅相對于容器可見的。
環(huán)境變量文件中的所有變量都會自動加到變量列表中,不需要在docker-compose中定義。
.env 文件
在docker-compose.yml同級目錄中加入.env文件,則可以設置docker-compose環(huán)境變量的默認值,可以在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中默認值。
... ... # .env SV_NAME=data-standard-biz-env TEST_ENV=xxxxxxxx
docker-compose config輸出:
services:
data-tag-biz:
container_name: data-standard-biz-9
environment:
ENV_FILE: ''
ENV_VALUE: env-value
JAVA_OPTS: -Xms512m -Xmx1024m -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC
NACOS-HOST: 192.168.1.XX
NOOP: NO OP KEY
SV_NAME: data-standard-biz
SW_NAME: test:data-standard-biz-env #使用了 .env中默認值。
SW_SERVICES: 192.168.1.XX:11800
TRACK: -javaagent:/opt/skywalking-agent.jar
image: 192.168.1.XX/xxxx/data-standard-biz:9.0
network_mode: host
ports:
- 10015:9015/tcp
restart: always
version: '3.0'Compose CLI 環(huán)境變量
Compose CLI(compose command-line 即 docker-compose 程序)能夠識別名稱為 COMPOSE_PROJECT_NAME 和 COMPOSE_FILE 等環(huán)境變量(具體支持的環(huán)境變量請參考這里)。
通過設置這些變量可以控制docker-compose的行為。
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
docker-compose啟動redis多機集群的實現(xiàn)(6臺服務器3主3從)
本文主要介紹了docker-compose啟動redis多機集群的實現(xiàn)(6臺服務器3主3從),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-07-07
ubuntu系統(tǒng)中無法拉取docker鏡像的問題及解決
作者遇到的docker拉取mysql8.0鏡像失敗的問題,通過更換鏡像加速器、更新配置、診斷DNS解析問題等步驟,最終成功使用DaoCloud鏡像站拉取鏡像,作者分享了解決問題的過程和經(jīng)驗,對遇到類似問題的人會有幫助2026-04-04
docker中通過nginx+confd動態(tài)生成配置的解決方案
這篇文章主要介紹了docker:nginx+confd動態(tài)生成配置,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03
在Docker中部署Confluence和jira-software的方法步驟
這篇文章主要介紹了在Docker中部署Confluence和jira-software的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-06-06

