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安裝mysqld-exporter的實(shí)現(xiàn)
本文主要介紹了docker安裝mysqld-exporter的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-05-05
Docker的MySQL容器時(shí)區(qū)問(wèn)題修改
這篇文章主要給大家介紹了關(guān)于Docker的MySQL容器時(shí)區(qū)問(wèn)題修改的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
Docker部署MySQL8集群(一主二從)的實(shí)現(xiàn)步驟
本文主要介紹了Docker部署MySQL8集群,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07
Docker搭建私有倉(cāng)庫(kù)之Harbor的步驟
這篇文章主要介紹了Docker搭建私有倉(cāng)庫(kù)之Harbor的步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
關(guān)于Dockerfile鏡像制作完整實(shí)例
本文詳細(xì)介紹了如何使用Docker制作鏡像,并通過(guò)實(shí)際應(yīng)用發(fā)版展示了制作過(guò)程,主要內(nèi)容包括創(chuàng)建和啟動(dòng)Docker容器的腳本(init.sh、start.sh、stop.sh、restart.sh),以及配置目錄,文章還討論了Docker容器IP地址的作用,并總結(jié)了制作新鏡像的基本步驟2024-11-11
Docker拉取鏡像失敗解決(connect: connection refused)
最近遇到Docker拉取centos鏡像時(shí)報(bào)錯(cuò),本文主要介紹了Docker拉取鏡像失敗解決(connect: connection refused),具有一定的參考價(jià)值,感興趣的可以了解一下2024-07-07
Docker提示permission?denied錯(cuò)誤的解決方案
這篇文章主要給大家介紹了關(guān)于Docker提示permission?denied錯(cuò)誤的解決方案,出現(xiàn)這個(gè)問(wèn)題是因?yàn)樗拗鳈C(jī)的當(dāng)前運(yùn)行用戶和docker容器里面的運(yùn)行用戶不一致導(dǎo)致訪問(wèn)權(quán)限問(wèn)題,需要的朋友可以參考下2023-08-08

