Compose 的多個部分在某種情況下處理環境變量。本教程可以幫助你找到所需的信息。
1. 替換Compose文件中的環境變量
可以使用 shell 中的環境變量填充 Compose 文件中的值:
1
2
|
web: image: "webapp:${TAG}" |
更多信息請參考 Compose 文件手冊中的 Variable substitution 章節。
2. 設置容器中的環境變量
可以通過 environment 關鍵字設置服務容器中的環境變量,就跟使用 docker run -e VARIABLE=VALUE ... 一樣:
1
2
3
|
web: environment: - DEBUG=1 |
3. 將環境變量傳遞到容器
在使用 environment
關鍵字時不賦值,就可以將 shell 中的環境變量傳遞給服務容器,就跟使用 docker run -e VARIABLE ...
一樣:
1
2
3
|
web: environment: - DEBUG |
容器中的 DEBUG 變量的值從運行 Compose 的 shell 中的同名變量中獲取。
4. “env_file”配置選項
可以通過 env_file
命令使用外部文件將多個環境變量傳遞到服務容器,就跟使用 docker run --env-file=FILE ...
一樣:
1
2
3
|
web: env_file: - web-variables. env |
5. 使用 ‘docker-compose run'設置環境變量
就像 docker run -e
命令一樣,可以使用 docker-compose run -e
設置一次性容器上的環境變量:
1
|
docker-compose run -e DEBUG=1 web python console.py |
也可以通過從 shell 中傳遞一個變量,而不是直接賦值:
1
|
docker-compose run -e DEBUG web python console.py |
容器中的 DEBUG 變量的值從運行 Compose 的 shell 中的同名變量中獲取。
6. “.env”文件
可以在名為.env 的環境文件 中為 Compose 文件中引用的任何環境變量設置默認值,或者用于配置 Compose:
1
2
3
4
5
6
7
8
|
$ cat .env TAG=v1.5 $ cat docker-compose.yml version: '3' services: web: image: "webapp:${TAG}" |
運行 docker-compose up
時,上面定義的 web
服務使用 webapp:v1.5
鏡像??梢酝ㄟ^config 命令 將應用程序的配置信息打印到終端來驗證:
1
2
3
4
5
6
|
$ docker-compose config version: '3' services: web: image: 'webapp:v1.5' |
shell 中的值優先于 .env
文件中指定的值。如果在 shell 中將 TAG 設置為不同的值,則鏡像中將使用該值:
1
2
3
4
5
6
7
|
$ export TAG=v2.0 $ docker-compose config version: '3' services: web: image: 'webapp:v2.0' |
當在多個文件中設置相同的環境變量時,以下是 Compose 用于選擇要使用的值的優先級:
- Compose 文件
- Environment 文件
- Dockerfile
- 變量未定義
在下面的例子中,我們在 Environment 文件和 Compose 文件上設置了相同的環境變量:
1
2
3
4
5
6
7
8
9
10
11
12
|
$ 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 |
運行容器時,在 Compose 文件中定義的環境變量優先。
1
2
3
4
|
$ docker-compose exec api node process. env .NODE_ENV 'production' |
只有在 environment
或 env_file
沒有 Docker Compose 條目時,Dockerfile
中的任何 ARG
或 ENV
設置才會評估(evaluate)。
NodeJS 容器的細節
如果你有腳本的 package.json 條目像 NODE_ENV=test node server.js 一樣啟動,那么這將覆蓋 docker-compose.yml 文件中的任何設置。
7. 使用環境變量配置 Compose
有幾個環境變量可用來配置 Docker Compose 命令行行為。它們以 COMPOSE_ 或 DOCKER_ 開頭,并記錄在CLI 環境變量中。
8. 通過 link 創建環境變量
在第一版 Compose 文件中使用 links 選項時,會為每個鏈接創建環境變量。它們記錄在 Link環境變量參考 中。
但是,這些變量已被棄用。link 改為為主機創建別名。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/kikajack/article/details/79751026