docker-compose環境変数問題
3429 ワード
デプロイごとに変更する構成は、成果物から独立してdocker-compose変数で既存の構成を上書きし、確認のために記録します.コンテナ間アプリケーションインタラクティブ使用container_name定義の名前Xmx,inter,pub_portは私が使った環境変数で、ドキュメントを参照することで、変数を定義するなどのファイルに定義することができます.Envでは、
注意:env_fileとenvironmentで定義する環境変数はdocker-composeではなくcontainerに伝達される.ymlの環境変数用docker-compose.ymlの環境変数${VARABLE:-default}は.Envで定義されているか、同じshell exportで作成されている
変数が参照されていることをコマンドで確認できます.推奨env_fileに導入されたファイル名は.Env、他の名前は使わないほうがいいです. 利点:.Envファイルの変更はdocker-composeでの参照をリアルタイムで更新し、他の名前ではdocker-composeでの参照はリアルタイムで更新されず、他の名前でdocker-composeで参照する場合WARNING:The DB_DIR variable is not set. Defaulting to a blank string. 欠点:カスタム名が不便
[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:
# ,
# 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
#
networks:
nets:
external: false
[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で定義する環境変数はdocker-composeではなくcontainerに伝達される.ymlの環境変数用docker-compose.ymlの環境変数${VARABLE:-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
...