Docker Compose Yaml Environment
今天要來學習如何在 Docker Compose 設定環境變數讓我們可以在 container 內部使用,首先先看一下文檔
首先先建立環境與輸入以下內容
mkdir mycompose && cd $_
vi docker-compose.yml
這邊使用方法很簡單只要在 service 底下直接新增一個 environment 設定值就可以了
services:
nginx:
image: nginx
tty: true
stdin_open: true
ports:
- 80:80
environment:
- env=development
設定完成後直接使用命令 docker compose up -d
運行此設定檔
之後進入容器內輸入命令 env
查看目前容器內部的環境變數有哪些
這時就可看到我們剛剛新增的環境變數 env=development
出現在第一位
[node1] (local) root@192.168.0.8 ~/mycompose
$ docker exec -it 6b bash
root@6be0e8c1ef9e:/# env
env=development
HOSTNAME=6be0e8c1ef9e
PWD=/
PKG_RELEASE=1~bullseye
HOME=/root
NJS_VERSION=0.7.9
TERM=xterm
SHLVL=1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
NGINX_VERSION=1.23.3
_=/usr/bin/env
關於環境變數還有另一種設定方法就是 env_file
設定值搭被使用 .env
檔案
services:
nginx:
image: nginx
tty: true
stdin_open: true
ports:
- 80:80
env_file:
- ./.env
vi .env
.env
檔案的內容需要注意,需要是變數開頭 + = + 變數的值
env=development
file=envfile
完成後使用命令 docker compose up -d
運行此設定檔
之後進入容器內輸入命令 env
查看目前容器內部的環境變數有哪些
也可看到我們剛剛設定的兩個環境變數也有成功出現
[node1] (local) root@192.168.0.8 ~/mycompose
$ docker exec -it 6a4 bash
root@6a4a3eb2c601:/# env
file=envfile
env=development
HOSTNAME=6a4a3eb2c601
PWD=/
PKG_RELEASE=1~bullseye
HOME=/root
NJS_VERSION=0.7.9
TERM=xterm
SHLVL=1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
NGINX_VERSION=1.23.3
_=/usr/bin/env
Summary
今天學習了環境變數的設定方法,使用 .env
檔案的話 docker-compose.yml
會比較乾淨,通常一個功能很多的 container 需要設定許多環境變數
所以全部寫在 docker-compose.yml
會顯得很混亂,但是可以保持只有一個檔案存在,可以按照自己的需求來選擇該使用那一種方式