0

我尝试将简单的 java 应用程序 dockerize。

我的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?

4

2 回答 2

1

你应该尝试

docker run -env foo=bar your_image:tag

在代码中,

env.getProperty("foo")
于 2019-07-30T16:01:20.510 回答
1

当您使用时:

docker run 123 --env foo=bar 

您实际上是在将命令行参数传递给 docker 容器。

如果你想传递环境变量,你应该使用-e(与 --env 相同的)docker container run命令选项:

docker run -e foo=bar image_name

请参阅在Docker 文档中设置环境变量。

于 2019-07-30T16:12:44.327 回答