标签:compose default 环境变量 jar 占位 XX docker networks applymgr
这是一个普通的docker-compose文件
version: '3' services: applymgr: image: harbor.cloud.test/online/applymgr:b88b2301 networks: - default dns: - 10.99.165.22 extra_hosts: - "zk_hadoop_hbase_kafka:10.109.95.32" environment: CONFIG_SERVER_URI: http://10.09.65.43:8002 DEUREKA_URL: http://user:123@10.19.25.53:8001 JAVA_OPTS: -Xms1024m -Xmx1024m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 command: java -jar -Dspring.profiles.active=test3 manager.jar ports: - "18001:8080" networks: default: driver: bridge
这里 environment 表示环境变量。我们这里设置了一些环境变量。数量不多,但是显得很繁琐。
command 表示我们使用什么命令启动镜像中的jar 文件,它会覆盖Dockerfile中的CMD指令。
这里我们看到配置都是写死的,怎么才能配置化呢?
docker-compose 其实支持文件环境变量
version: '3' services: applymgr: image: harbor.cloud.test/online/applymgr:b88b2301 networks: - default dns: - 10.99.165.22 extra_hosts: - "zk_hadoop_hbase_kafka:10.109.95.32" env_file: - ./common.env command: java -jar ${RUN_PROFILE} manager.jar ports: - "18001:8080" networks: default: driver: bridge
这里可以看到我们把具体的环境变量换成了引用 当前目录下的 common.env文件。同时command 指令也使用了占位符来获取环境变量的值。看下环境变量文件中的内容:
CONFIG_SERVER_URI=http://10.88.75.83:8002 EUREKA_URL=http://user:123@10.88.75.83:8001 JAVA_OPTS=-Xms512m -Xmx512m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 RUN_PROFILE=-Dspring.profiles.active=test3
之后怎么验证呢,其实我们可以使用命令查看docker-compose.yml效果
docker-compose config
执行该命令,得到结果:
networks: default: driver: bridge services: applymgr: command: java -jar manager.jar dns: - 10.99.165.22 environment: CONFIG_SERVER_URI: http://10.88.75.83:8002 EUREKA_URL: http://user:123@10.88.75.83:8001 JAVA_OPTS: -Xms512m -Xmx512m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 RUN_PROFILE: -Dspring.profiles.active=test3 extra_hosts: - zk_hadoop_hbase_kafka:10.109.95.32 image: harbor.cloud.test/online/applymgr:b88b2301 networks: default: null ports: - 18001:8080/tcp version: '3.0'
发现环境变量都设置进去了,但是我们再commond 那里设置的占位符 却变成了空格。那说名占位符并没有取到环境变量的值。
那么这是什么原因了。如果我们把 common.env 重命名为 .env 。同时更改docker-compose.yml文件 env_file 中的文件名。此时可以看到
version: '3' services: applymgr: image: harbor.cloud.test/online/applymgr:b88b2301 networks: - default dns: - 10.99.165.22 extra_hosts: - "zk_hadoop_hbase_kafka:10.109.95.32" env_file: - ./.env command: java -jar ${RUN_PROFILE} manager.jar ports: - "18001:8080" networks: default: driver: bridge
结果:
networks: default: driver: bridge services: applymgr: command: java -jar -Dspring.profiles.active=test3 manager.jar dns: - 10.99.165.22 environment: CONFIG_SERVER_URI: http://10.88.75.83:8002 EUREKA_URL: http://user:123@10.88.75.83:8001 JAVA_OPTS: -Xms512m -Xmx512m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 RUN_PROFILE: -Dspring.profiles.active=test3 extra_hosts: - zk_hadoop_hbase_kafka:10.109.95.32 image: harbor.cloud.test/online/applymgr:b88b2301 networks: default: null ports: - 18001:8080/tcp version: '3.0'
可以看到command 获取环境变量成功了。因为如果我们使用文件设置环境变量。那么文件名 尽量设置为 .env。
同时获取 环境变量 可以使用 ${} 也可以直接使用 $
标签:compose,default,环境变量,jar,占位,XX,docker,networks,applymgr 来源: https://www.cnblogs.com/kanyun/p/14633873.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。