Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Redeploy spring-boot application in docker container?

I have a spring-boot project and I want automatically redeploy my jar in the container. How to do it correctly? So far, all I see is this way. It's the right way?

# cd /home/jdev; 
# sudo docker stop ca_spring_boot;
# sudo docker rm ca_spring_boot;  
# sudo docker rmi ca_app_image; 
# sudo docker build -t ca_app_image .;
# sudo docker run -d -p 8888:8080 --name ca_spring_boot ca_app_image

And my Dockerfile

FROM java:8
VOLUME /tmp
EXPOSE 8080
ADD docker-storage/jenkins/workspace/CA/build/libs/ca-1.0.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=container","-jar","/app.jar"]

Thanks.

like image 228
JDev Avatar asked Feb 02 '17 09:02

JDev


2 Answers

You could mount a volume and put your app.jar in there. So you do not need to rebuild the image, you just restart the container.

Dockerfile

FROM java:8
ENTRYPOINT [ "sh", "-c", "java -jar /mnt/app.jar" ]

Put your app.jar in /docker/spring/

Build and run:

docker build -t spring_test .
docker run -d -v /docker/spring/:/mnt -p 12384:8080 --name spring_test_running spring_test

If you update your spring application you just do:

docker restart spring_test_running
like image 200
Sha7x Avatar answered Oct 19 '22 04:10

Sha7x


The previous answer is good. But there is need to restart container every time when you want to test your code. But we can avoid this problem. Just use Spring dev tool And mount destination directory as described above.

like image 2
Bukharov Sergey Avatar answered Oct 19 '22 04:10

Bukharov Sergey