0

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?

pixel
  • 24,905
  • 36
  • 149
  • 251

2 Answers2

1

You should try with

docker run -env foo=bar your_image:tag

And in code,

env.getProperty("foo")
Sam
  • 4,046
  • 8
  • 31
  • 47
1

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.

Michał Krzywański
  • 15,659
  • 4
  • 36
  • 63