Docker的环境变量未传递给Spring

时间:2019-07-30 15:03:57

标签: spring-boot docker kotlin environment-variables spring-bean-dsl

我尝试将简单的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?

2 个答案:

答案 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中设置环境变量。