1. 在yml文件中定義變量
添加 environment:
字段偿警,后邊跟數(shù)組格式 " key: val "
# docker-compose.yml
version: '3'
services:
db:
image: 'docker.io/mysql:latest'
……
environment:
MYSQL_ROOT_PASSWORD: "liubei@2021"
MYSQL_USER: 'liubei'
MYSQL_PASSWORD: 'liubei@2021'
MYSQL_DATABASE: 'liubeidb'
……
2. 在.env
文件中的變量
2.1 容器中引用為環(huán)境變量
- .env 文件
TZ=Asia/Shanghai
MYSQL_ROOT_PASSWORD=liubei@2021
-
docker-compose.yml文件
添加environment:
字段,后邊跟數(shù)組格式 " - xxxx "
version: '3'
services:
mysql:
image: 'docker.io/mysql:latest'
restart: always
container_name: mysql
ports:
- '13306:3306'
environment:
- MYSQL_ROOT_PASSWORD
- TZ
- 查看結(jié)果
[root@n9e-v5 mysql]# docker-compose config
services:
mysql:
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: liubei@2021
TZ: Asia/Shanghai
image: docker.io/mysql:latest
ports:
- 13306:3306/tcp
restart: always
version: '3.0'
2.2 yml文件啟動(dòng)容器時(shí)的變量
說明:比如映射出哪個(gè)端口具壮,容器的名字等等。這些并不是容器中的變量坦刀,我們也可以直接在.env
文件中定義虽填。
- .env文件
TZ=Asia/Shanghai
MYSQL_ROOT_PASSWORD=liubei@2021
PORT=13306
- docker-compose.yml文件
version: '3'
services:
mysql:
image: 'docker.io/mysql:latest'
restart: always
container_name: mysql
ports:
- '${PORT}:3306'
environment:
- MYSQL_ROOT_PASSWORD
- TZ
- 查看
[root@n9e-v5 mysql]# docker-compose config
services:
mysql:
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: liubei@2021
TZ: Asia/Shanghai
image: docker.io/mysql:latest
ports:
- 13306:3306/tcp
restart: always
version: '3.0'
3. 引用其他文件的變量
變量文件
創(chuàng)建 test.env 文件docker-compose.yml 文件
添加env_file:
字段
version: '3'
services:
mysql:
image: 'docker.io/mysql:latest'
restart: always
container_name: mysql
ports:
- '13306:3306'
environment:
ABC: abc_abc
env_file:
- ./test.env
- 查看結(jié)果
services:
mysql:
container_name: mysql
environment:
ABC: abc_abc
MYSQL_ROOT_PASSWORD: liubei@2021
PORT: '13306'
TZ: Asia/Shanghai
image: docker.io/mysql:latest
ports:
- 13306:3306/tcp
restart: always
version: '3.0'
4. 引用主機(jī)變量
語(yǔ)法示例
environment:
XI_SHU: ${MY_NAME:-liubei}
容器中變量key為:
XI_SHU
,它的值會(huì)讀取宿主機(jī)key為MY_NAME
的值我衬,缺省默認(rèn)使用liubei
完整示例
- yml文件
version: "3.1"
services:
mysql:
image: harbocto.boe.com.cn/public/mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: 'liubei@2021'
TZ: Asia/Shanghai
MYSQL_USER: ${MY_NAME:-liubei}
MYSQL_PASSWORD: 'liubei@2021'
MYSQL_DATABASE: ${MY_NAME:-liubei}db
restart: always
ports:
- 3306:3306
volumes:
- ./data:/var/lib/mysql
- 當(dāng)宿主機(jī)沒有定義
MY_NAME
時(shí)叹放,查看結(jié)果
[root@liubei mysql]# echo $MY_NAME
[root@liubei mysql]# docker-compose config
services:
mysql:
environment:
MYSQL_DATABASE: liubeidb
MYSQL_PASSWORD: liubei@2021
MYSQL_ROOT_PASSWORD: Boe888888
MYSQL_USER: liubei
TZ: Asia/Shanghai
image: harbocto.boe.com.cn/public/mysql:5.7
ports:
- 3306:3306/tcp
restart: always
volumes:
- /usr/local/mysql/data:/var/lib/mysql:rw
version: '3.1'
如上可見,因?yàn)樗拗鳈C(jī)沒有變量
MY_NAME
挠羔,mysql用戶名和庫(kù)名使用了默認(rèn)值井仰。
- 當(dāng)宿主機(jī)定義
MY_NAME=guanYu
時(shí),查看結(jié)果
[root@liubei mysql]# export MY_NAME=guanYu
[root@liubei mysql]# echo $MY_NAME
guanYu
[root@liubei mysql]# docker-compose config
services:
mysql:
environment:
MYSQL_DATABASE: guanYudb
MYSQL_PASSWORD: liubei@2021
MYSQL_ROOT_PASSWORD: Boe888888
MYSQL_USER: guanYu
TZ: Asia/Shanghai
image: harbocto.boe.com.cn/public/mysql:5.7
ports:
- 3306:3306/tcp
restart: always
volumes:
- /usr/local/mysql/data:/var/lib/mysql:rw
version: '3.1'
如上可見破加,因?yàn)樗拗鳈C(jī)定義了變量
MY_NAME=guanYu
俱恶,mysql用戶名和庫(kù)名使用了該變量值。