docker-compose中的環(huán)境變量問題
docker-compose 環(huán)境變量
每次部署必需要修改的配置從交付件里獨立出來,通過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網絡
networks:
- nets
env_file:
- ./.env
environment:
# 引用環(huán)境變量,最終是傳入容器里交付件的啟動命令中
# 例 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)建自定義網絡
networks:
nets:
external: false
容器間應用交互使用container_name定義的名稱
Xmx,inter,pub_port是我用到的環(huán)境變量,通過查閱文檔,變量可以定義到一個文件中,如定義到.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中定義的或者同個shell export出來的
可以通過命令查看變量已經被引用了
[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)點:
.env文件變更會實時更新docker-compose中的引用,使用其他名稱不會實時更新docker-compose中的引用,使用其他名稱在docker-compose中引用有時會
WARNING: The DB_DIR variable is not set. Defaulting to a blank string.
- 缺點:
自定義名稱不方便
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Docker拉取鏡像失敗解決(connect: connection refused)
最近遇到Docker拉取centos鏡像時報錯,本文主要介紹了Docker拉取鏡像失敗解決(connect: connection refused),具有一定的參考價值,感興趣的可以了解一下2024-07-07
Docker提示permission?denied錯誤的解決方案
這篇文章主要給大家介紹了關于Docker提示permission?denied錯誤的解決方案,出現這個問題是因為宿主機的當前運行用戶和docker容器里面的運行用戶不一致導致訪問權限問題,需要的朋友可以參考下2023-08-08

