Search code examples
spring-bootdockerfileparameter-passingdocker-container

How to pass application.properties to SpringBoot app in Docker container?


Assume we have a simple Dockerfile where my_sb_app.jar is a SpringBoot application:

FROM bellsoft/liberica-openjdk-alpine:11.0.9-12    
WORKDIR /app    
COPY target/my_sb_app.jar /app    
EXPOSE 8080    
ENTRYPOINT java -jar my_sb_app.jar

I would like to pass custom app.properties on each run

docker run  my_image_name  /somewhere/on/my/host/app.properties

so the expected final command (inside the container) could be identical to the following

java -jar my_sb_app.jar --spring.config.location=%%file_with_contents_of_app.properties%%

What is the standard way of passing a file into a Docker container?
How the Docker image sould be changed?


Solution

  • The standard way to pass files from host to the container is with volumes:

    https://docs.docker.com/storage/bind-mounts/

    https://docs.docker.com/storage/volumes/

    In your example:

    docker run -v /somewhere/on/my/host/app.properties:/opt/app.properties my_image_name 
    
    java -jar my_sb_app.jar --spring.config.location=/opt/app.properties