docker-compose中變量的使用方式
1. 在docker-compose.yml 中定義變量
- 語法
environment: KEV: VELUE KEV: VELUE
或
environment: - KEV=VELUE - KEV=VELUE
- 示例
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' ......
或者
version: "3.1" services: mysql: image: harbocto.xxx.com.cn/public/mysql:5.7 environment: - MYSQL_ROOT_PASSWORD=liubei@2021 - MYSQL_DATABASE=liubeidb - TZ=Asia/Shanghai ......
2. 從.env 文件中引入
2.1 容器中的變量
說明:容器啟動(dòng)后,容器中需要用到的變量,可以在.env
文件中定義
示例如下:
1)在docker-compose.yml 相同目錄下創(chuàng)建.env目錄
MYSQL_ROOT_PASSWORD=liubei@2021 MYSQL_DATABASE=mydb TZ=Asia/Shanghai
注意:值不要加引號,引用之后會(huì)自動(dòng)加
2)docker-compose.yml文件配置如下
version: "3.1" services: mysql: image: harbocto.xxx.com.cn/public/mysql:5.7 environment: - MYSQL_ROOT_PASSWORD - MYSQL_DATABASE - TZ restart: on-failure ports: - 3306:3306 volumes: - ./data:/var/lib/mysql
3) 查看結(jié)果
[root@test mysql]# docker-compose config services: mysql: environment: MYSQL_DATABASE: mydb MYSQL_ROOT_PASSWORD: liubei@2021 TZ: Asia/Shanghai image: harbocto.xxx.com.cn/public/mysql:5.7 ports: - 3306:3306/tcp restart: on-failure volumes: - /usr/local/mysql/data:/var/lib/mysql:rw version: '3.1'
2.2 docker-compose啟動(dòng)時(shí)的變量
說明:
- 如果變量是docker-compose.yml文件中要使用的
- 而不是容器中需要使用的變量
- 那么我們用如下方法引用:
1)在 2.1 中的.env
目錄添加如下內(nèi)容
PORT_MYSQL=3306
2)docker-compose.yml文件配置如下
version: "3.1" services: mysql: image: harbocto.xxx.com.cn/public/mysql:5.7 environment: - MYSQL_ROOT_PASSWORD - MYSQL_DATABASE - TZ restart: on-failure ports: - $PORT_MYSQL:3306 volumes: - ./data:/var/lib/mysql
我們在yml文件中使用 ${PORT_MYSQL}來引用.env
中的值。
2) 查看結(jié)果
[root@test mysql]# docker-compose config services: mysql: environment: MYSQL_DATABASE: liubeidb MYSQL_ROOT_PASSWORD: liubei@2021 TZ: Asia/Shanghai image: harbocto.xxx.com.cn/public/mysql:5.7 ports: - 3306:3306/tcp restart: on-failure volumes: - /usr/local/mysql/data:/var/lib/mysql:rw version: '3.1'
3. 從其他文件中引用
說明:前邊是引用當(dāng)前目錄下 .env
文件中的變量,如果要引用任意文件,則示例如下:
1) 創(chuàng)建變量文件 /tmp/mysql_env
內(nèi)容如下:
MYSQL_ROOT_PASSWORD=liubei@2021 MYSQL_DATABASE=liubeidb TZ=Asia/Shanghai
2)docker-compose.yml 中引用
[root@test mysql]# docker-compose config services: mysql: environment: MYSQL_DATABASE: liubeidb MYSQL_ROOT_PASSWORD: liubei@2021 TZ: Asia/Shanghai image: harbocto.xxx.com.cn/public/mysql:5.7 ports: - 3306:3306/tcp restart: on-failure volumes: - /usr/local/mysql/data:/var/lib/mysql:rw version: '3.1'
3) 查看結(jié)果
[root@test mysql]# docker-compose config services: mysql: environment: MYSQL_DATABASE: liubeidb MYSQL_ROOT_PASSWORD: liubei@2021 TZ: Asia/Shanghai image: harbocto.xxx.com.cn/public/mysql:5.7 ports: - 3306:3306/tcp restart: on-failure volumes: - /usr/local/mysql/data:/var/lib/mysql:rw version: '3.1'
4. 引用主機(jī)變量
語法示例
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é)果
如上可見,因?yàn)樗拗鳈C(jī)沒有變量MY_NAME
,mysql用戶名和庫名使用了默認(rèn)值。
當(dāng)宿主機(jī)定義MY_NAME=guanYu
時(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=guanYu
,mysql用戶名和庫名使用了該變量值。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于Docker部署Tomcat集群、 Nginx負(fù)載均衡的問題小結(jié)
這篇文章主要介紹了基于Docker部署 Tomcat集群、 Nginx負(fù)載均衡,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09docker安裝ElasticSearch:7.8.0集群的詳細(xì)教程
這篇文章主要介紹了docker安裝ElasticSearch:7.8.0集群的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03Docker?Compose構(gòu)建Jenkins的實(shí)現(xiàn)
本文主要介紹了Docker?Compose構(gòu)建Jenkins的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06教你用100?行shell實(shí)現(xiàn)Docker詳解
這篇文章主要為大家介紹了教你用100?行shell實(shí)現(xiàn)Docker詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02