您好,登錄后才能下訂單哦!
Compose 的多個(gè)部分在某種情況下處理環(huán)境變量。本教程可以幫助你找到所需的信息。
1. 替換Compose文件中的環(huán)境變量
可以使用 shell 中的環(huán)境變量填充 Compose 文件中的值:
web: image: "webapp:${TAG}"
更多信息請(qǐng)參考 Compose 文件手冊(cè)中的 Variable substitution 章節(jié)。
2. 設(shè)置容器中的環(huán)境變量
可以通過(guò) environment 關(guān)鍵字設(shè)置服務(wù)容器中的環(huán)境變量,就跟使用 docker run -e VARIABLE=VALUE ... 一樣:
web: environment: - DEBUG=1
3. 將環(huán)境變量傳遞到容器
在使用 environment
關(guān)鍵字時(shí)不賦值,就可以將 shell 中的環(huán)境變量傳遞給服務(wù)容器,就跟使用 docker run -e VARIABLE ...
一樣:
web: environment: - DEBUG
容器中的 DEBUG 變量的值從運(yùn)行 Compose 的 shell 中的同名變量中獲取。
4. “env_file”配置選項(xiàng)
可以通過(guò) env_file
命令使用外部文件將多個(gè)環(huán)境變量傳遞到服務(wù)容器,就跟使用 docker run --env-file=FILE ...
一樣:
web: env_file: - web-variables.env
5. 使用 ‘docker-compose run'設(shè)置環(huán)境變量
就像 docker run -e
命令一樣,可以使用 docker-compose run -e
設(shè)置一次性容器上的環(huán)境變量:
docker-compose run -e DEBUG=1 web python console.py
也可以通過(guò)從 shell 中傳遞一個(gè)變量,而不是直接賦值:
docker-compose run -e DEBUG web python console.py
容器中的 DEBUG 變量的值從運(yùn)行 Compose 的 shell 中的同名變量中獲取。
6. “.env”文件
可以在名為.env 的環(huán)境文件 中為 Compose 文件中引用的任何環(huán)境變量設(shè)置默認(rèn)值,或者用于配置 Compose:
$ cat .env TAG=v1.5 $ cat docker-compose.yml version: '3' services: web: image: "webapp:${TAG}"
運(yùn)行 docker-compose up
時(shí),上面定義的 web
服務(wù)使用 webapp:v1.5
鏡像??梢酝ㄟ^(guò)config 命令 將應(yīng)用程序的配置信息打印到終端來(lái)驗(yàn)證:
$ docker-compose config version: '3' services: web: image: 'webapp:v1.5'
shell 中的值優(yōu)先于 .env
文件中指定的值。如果在 shell 中將 TAG 設(shè)置為不同的值,則鏡像中將使用該值:
$ export TAG=v2.0 $ docker-compose config version: '3' services: web: image: 'webapp:v2.0'
當(dāng)在多個(gè)文件中設(shè)置相同的環(huán)境變量時(shí),以下是 Compose 用于選擇要使用的值的優(yōu)先級(jí):
在下面的例子中,我們?cè)?Environment 文件和 Compose 文件上設(shè)置了相同的環(huán)境變量:
$ cat ./Docker/api/api.env NODE_ENV=test $ cat docker-compose.yml version: '3' services: api: image: 'node:6-alpine' env_file: - ./Docker/api/api.env environment: - NODE_ENV=production
運(yùn)行容器時(shí),在 Compose 文件中定義的環(huán)境變量?jī)?yōu)先。
$ docker-compose exec api node process.env.NODE_ENV 'production'
只有在 environment
或 env_file
沒(méi)有 Docker Compose 條目時(shí),Dockerfile
中的任何 ARG
或 ENV
設(shè)置才會(huì)評(píng)估(evaluate)。
NodeJS 容器的細(xì)節(jié)
如果你有腳本的 package.json 條目像 NODE_ENV=test node server.js 一樣啟動(dòng),那么這將覆蓋 docker-compose.yml 文件中的任何設(shè)置。
7. 使用環(huán)境變量配置 Compose
有幾個(gè)環(huán)境變量可用來(lái)配置 Docker Compose 命令行行為。它們以 COMPOSE_ 或 DOCKER_ 開(kāi)頭,并記錄在CLI 環(huán)境變量中。
8. 通過(guò) link 創(chuàng)建環(huán)境變量
在第一版 Compose 文件中使用 links 選項(xiàng)時(shí),會(huì)為每個(gè)鏈接創(chuàng)建環(huán)境變量。它們記錄在 Link環(huán)境變量參考 中。
但是,這些變量已被棄用。link 改為為主機(jī)創(chuàng)建別名。
原文地址
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。