gpt4 book ai didi

docker-compose - docker为命令撰写环境变量

转载 作者:行者123 更新时间:2023-12-03 21:28:49 26 4
gpt4 key购买 nike

我在通过compose命令选项将环境变量传递到自定义镜像时遇到麻烦:

我的撰写文件:

---

version: '2'
services:
myservice:
image: mycustomimage_lms
environment:
CONF_HOME: /opt/apps-java/
APP_ENV: dev
UUID: me1
command: -Dconfig.home=${CONF_HOME} -Dcomponent.name=LMS -Denv=${APP_ENV} -Duser.dir=/tmp/ -DLMS_UUID=${UUID} -jar /opt/apps-java/my.jar
ports:
- "9060"
volumes:
- ./:/opt/apps-java/
- ./:/var/logs/apps-logs/
- ./:/tmp/data

我的镜像只是一个自定义的jre镜像,其入口点设置为接受jvm参数的shell脚本。我从enrtypoint调用的run.sh
#!/bin/sh
export JAVA_HOME="/usr/java/latest/"
exec $JAVA_HOME/bin/java $@

我需要在运行时将值传递给命令,因为我随后可以将我的图像用于许多其他jar,只需将参数更改为我的图像即可。

这就是我得到的:
 $> docker-compose up
WARNING: The CONF_HOME variable is not set. Defaulting to a blank string.
WARNING: The APP_ENV variable is not set. Defaulting to a blank string.
WARNING: The UUID variable is not set. Defaulting to a blank string.

我也有
经历了几个答案,例如:

Docker Compose - Command using Container Environment Variable



Docker-compose environment variables

但无法正常工作。有什么方向吗?

最佳答案

解析文件时,Compose将读取变量。但是设置environment仅提供容器的值,而不提供文件解析的值。

如果您试图将这些变量传递到容器中,则需要使用额外的$在命令中对其进行转义

-Dconfig.home=$${CONF_HOME} -Dcomponent.name=LMS -Denv=$${APP_ENV} -Duser.dir=/tmp/ -DLMS_UUID=$${UUID

如果您只是想在Compose文件中使用变量,则需要将这些变量放入 .env文件中。

有关完整文档,请参见 https://docs.docker.com/compose/compose-file/#variable-substitution

关于docker-compose - docker为命令撰写环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40447029/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com