How can I start spring boot application in docker with profile?
35,955
Solution 1
There's a typo here
ENTRYPOINT ["java","-Dspring.profiles.active=test" comma missing here "-jar","/micro-boot.jar"
]
Solution 2
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"
Related videos on Youtube
Author by
ip696
Updated on April 19, 2020Comments
-
ip696 about 4 years
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
-
rdas about 5 years
-
huytmb about 5 yearsYou 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"
-
-
Tiago Medici over 3 yearsimagine 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
-
huytmb over 3 years@TiagoMedici you right, but it broad out of scope of the question. I will update answer for Kubernetes env. Thank you for your attention
-
Igor Kanshyn over 2 years"2. Passing Spring Profile in Docker run" rocks!