docker-compose中的環(huán)境變量問(wèn)題
docker-compose 環(huán)境變量
每次部署必需要修改的配置從交付件里獨(dú)立出來(lái),通過(guò)docker-compose傳變量覆蓋原有配置
記錄下, 以備查閱
[root@test03 test]# cat docker-compose.yml version: '2' services: mysql: image: test_db:v1 container_name: xx-mysql restart: always networks: - nets environment: - MYSQL_ROOT_PASSWORD=xxx0209 ports: - 3306:3306 volumes: - /opt/data/mysql:/var/lib/mysql:z redis: image: test_redis:v1 container_name: xx-redis restart: always networks: - nets ports: - 6379:6379 admin: image: test_admin:v1 container_name: xx-admin restart: always # 使用nets網(wǎng)絡(luò) networks: - nets env_file: - ./.env environment: # 引用環(huán)境變量,最終是傳入容器里交付件的啟動(dòng)命令中 # 例 java -jar -Djava.security.egd=file:/dev/./urandom -Duser.timezone=GMT+08 -Xmx1433m -Dglobal.domain.inter=http://10.90.2.103:8080 ./app.jar - JAVA_OPTS=-Duser.timezone=GMT+08 ${Xmx} -D${inter} depends_on: - mysql - redis ports: - ${pub_port}:8015 # 創(chuàng)建自定義網(wǎng)絡(luò) networks: nets: external: false
容器間應(yīng)用交互使用container_name定義的名稱
Xmx,inter,pub_port是我用到的環(huán)境變量,通過(guò)查閱文檔,變量可以定義到一個(gè)文件中,如定義到.env中,如下:
[root@test03 test]# cat .env # memory Xmx=-Xmx1433m # open ports pub_port=8080 # inter inter=global.domain.inter=http://10.90.2.103:8080
注意:
env_file和environment中定義的環(huán)境變量是傳給container用的而不是在docker-compose.yml中的環(huán)境變量用的
docker-compose.yml中的環(huán)境變量${VARIABLE:-default}引用的是在.env中定義的或者同個(gè)shell export出來(lái)的
可以通過(guò)命令查看變量已經(jīng)被引用了
[root@test03 test]# docker-compose config ... environment: JAVA_OPTS: -Duser.timezone=GMT+08 -Xmx1433m -Dglobal.domain.inter=http://10.90.2.103:8080 ...
建議env_file 引入的文件名為.env,最好不要使用其他名稱
- 優(yōu)點(diǎn):
.env文件變更會(huì)實(shí)時(shí)更新docker-compose中的引用,使用其他名稱不會(huì)實(shí)時(shí)更新docker-compose中的引用,使用其他名稱在docker-compose中引用有時(shí)會(huì)
WARNING: The DB_DIR variable is not set. Defaulting to a blank string.
- 缺點(diǎn):
自定義名稱不方便
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Docker移除鏡像幾種不同的方法實(shí)戰(zhàn)記錄
在Docker實(shí)戰(zhàn)中,合理刪除不再需要的鏡像,有助于釋放寶貴的磁盤空間,刪除Docker鏡像可以通過(guò)多種方式,包括刪除單個(gè)鏡像、強(qiáng)制刪除正在使用的鏡像、刪除未被任何容器引用的所有鏡像以及刪除所有鏡像等,需要的朋友可以參考下2024-11-11Docker鏡像的默認(rèn)存儲(chǔ)位置及修改步驟
Docker鏡像默認(rèn)存儲(chǔ)在?/var/lib/docker?目錄下,在Linux系統(tǒng)中,這個(gè)目錄通常是在根目錄下,可以使用相應(yīng)命令查看,下面給大家介紹Docker鏡像的默認(rèn)存儲(chǔ)位置及修改步驟,感興趣的朋友一起看看吧2024-06-06SpringBoot 整合 Docker的詳細(xì)過(guò)程
這篇文章主要介紹了SpringBoot 整合 Docker的詳細(xì)過(guò)程,本文通過(guò)一個(gè)簡(jiǎn)單的項(xiàng)目來(lái)給大家介紹整合的詳細(xì)過(guò)程,需要的朋友可以參考下2021-11-11docker-compose build使用參數(shù)args方式
這篇文章主要介紹了docker-compose build使用參數(shù)args方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01解決docker安裝完成報(bào):bridge-nf-call-iptables is disabled問(wèn)題
這篇文章主要介紹了解決docker安裝完成報(bào):bridge-nf-call-iptables is disabled問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11docker容器下配置jupyter notebook的操作
這篇文章主要介紹了docker容器下配置jupyter notebook的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03centos修改docker網(wǎng)絡(luò)配置方法分享
本文給大家分享的是centos修改docker網(wǎng)絡(luò)配置的方法,非常的實(shí)用,有需要的小伙伴可以參考下2017-03-03docker run -v 掛載數(shù)據(jù)卷異常,容器狀態(tài)一直是restarting的解決
這篇文章主要介紹了docker run -v 掛載數(shù)據(jù)卷異常,容器狀態(tài)一直是restarting的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03