Environment variables from Docker are not passed to Spring

1.3k Views Asked by At

I try to dockerize simple java application.

my Dockerfile:

FROM adoptopenjdk/openjdk11:alpine
COPY build/libs/*.jar app.jar
ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar /app.jar
EXPOSE 8080

In my bean definition file I try to log properties:

    beans {
        bean {
            logger.info { "System env: " + env.systemEnvironment }
            // ...
        }
    }

but when I call:

docker run 123 --env foo=bar 

It results in foo not being visible from java.

However if I run my application from Idea and pass environment variables directly it works as a charm.

Am I missing something? How I can make values passed in env available for java?

2

There are 2 best solutions below

0
On BEST ANSWER

You should try with

docker run -env foo=bar your_image:tag

And in code,

env.getProperty("foo")
0
On

When you are using :

docker run 123 --env foo=bar 

You are actually passing command line arguments to the docker container.

If you want to pass environment variables you should use -e (same as --env) option for docker container run command :

docker run -e foo=bar image_name

Refer to setting environment variables in Docker docs.