docker-compose中的环境变量问题
docker-compose 环境变量
每次部署必需要修改的配置从交付件里独立出来,通过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: # 引用环境变量,最终是传入容器里交付件的启动命令中 # 例 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
容器间应用交互使用container_name定义的名称
Xmx,inter,pub_port是我用到的环境变量,通过查阅文档,变量可以定义到一个文件中,如定义到.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中定义的环境变量是传给container用的而不是在docker-compose.yml中的环境变量用的
docker-compose.yml中的环境变量${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,最好不要使用其他名称
- 优点:
.env文件变更会实时更新docker-compose中的引用,使用其他名称不会实时更新docker-compose中的引用,使用其他名称在docker-compose中引用有时会
WARNING: The DB_DIR variable is not set. Defaulting to a blank string.
- 缺点:
自定义名称不方便
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
超详细Docker Desktop下安装rocketmq的教程
这篇文章主要介绍了Docker Desktop下安装rocketmq,本文内容通过图文操作命令给大家讲解的非常详细,需要的朋友可以参考下2021-10-10关于构建aarch64环境Mysql8.0的Docker镜像问题
这篇文章主要介绍了构建aarch64环境Mysql8.0的Docker镜像,需要的朋友可以参考下2022-04-04docker安装Jenkins配置Gitee SSH密钥踩坑解决
这篇文章主要为大家介绍了docker安装Jenkins配置Gitee SSH密钥踩坑解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-08-08docker官方镜像下载及使用Dockerfile创建镜像的方法
这篇文章主要介绍了docker官方镜像下载及使用Dockerfile创建镜像的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下2017-02-02
最新评论