我尝试将简单的Java应用程序码头化。
我的Dockerfile
:
FROM adoptopenjdk/openjdk11:alpine
COPY build/libs/*.jar app.jar
ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar /app.jar
EXPOSE 8080
在我的bean定义文件中,我尝试记录属性:
beans {
bean {
logger.info { "System env: " + env.systemEnvironment }
// ...
}
}
但是当我打电话时:
docker run 123 --env foo=bar
这会导致foo
在Java中不可见。
但是,如果我从Idea中运行我的应用程序并直接传递环境变量,它就可以发挥作用。
我想念什么吗?如何使env
中传递的值可用于Java?
答案 0 :(得分:1)
您应该尝试
docker run -env foo=bar your_image:tag
在代码中,
env.getProperty("foo")
答案 1 :(得分:1)
使用时:
docker run 123 --env foo=bar
您实际上是将命令行参数传递给docker容器。
如果要传递环境变量,则应对-e
命令使用docker container run
(与--env相同)选项:
docker run -e foo=bar image_name
请参阅在Docker docs中设置环境变量。