48

I have a simple spring-boot project:

-resources
 -application.yaml
 -application-test.yaml

And I have this Dockerfile:

FROM openjdk:8-jdk-alpine
EXPOSE 8080
ADD micro-boot.jar micro-boot.jar
ENTRYPOINT ["java","-Dspring.profiles.active=test" "-jar","/micro-boot.jar"]

1) I build image - C:\micro-boot>docker build -f Dockerfile -t micro-boot .

2) show all images - C:\micro-boot>docker image ls -a

micro-boot   latest  ccc9a75ebc24  4 seconds ago 112MB

3) try to start C:\micro-boot>docker image ls -a

And I get an error:

/bin/sh: [java,-Dspring.profiles.active=test: not found
2
  • Related: stackoverflow.com/questions/21553353/… Commented Apr 18, 2019 at 18:40
  • 1
    You should passing spring.profiles.active by docker run command or docker-compose which will increase flexibility. Ex: docker run -d -p 8080:8080 -e "SPRING_PROFILES_ACTIVE=test" Commented Apr 19, 2019 at 1:18

2 Answers 2

132

We have 3 ways:

1. Passing Spring Profile in a Dockerfile

FROM openjdk:8-jre-alpine
...
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=test","-jar","app.jar"]

2. Passing Spring Profile in Docker run

docker run -d -p 8080:8080 -e "SPRING_PROFILES_ACTIVE=test" --name my-app:latest

3. Passing Spring Profile in DockerCompose

version: "3.5"
services:
  my-app:
     image: my-app:latest
     ports:
       - "8080:8080" 
     environment:
       - "SPRING_PROFILES_ACTIVE=test"
Sign up to request clarification or add additional context in comments.

3 Comments

imagine you have 4 environments dev sys staging prod, using kubernetes and dynamically you deploy the containers, you can't have different cmd like you ve shown "docker run", in this way you must have a env var of the cluster env to be used inside the docker file like $PROFILE
@TiagoMedici you right, but it broad out of scope of the question. I will update answer for Kubernetes env. Thank you for your attention
"2. Passing Spring Profile in Docker run" rocks!
22

There's a typo here

ENTRYPOINT ["java","-Dspring.profiles.active=test" comma missing here "-jar","/micro-boot.jar"]

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.