Dockerizing Spring Application

时间:2016-09-07 06:42:28

标签: java spring maven docker dockerfile

我有一个使用Spring Framework + AngularJs前端的应用程序。 我之前只需将mvn package打包到.war文件中,就可以在亚马逊AWS上进行部署。

现在我需要在本地的docker中设置一个linux env来调试一些额外的功能(使用windows作为主操作系统),并且最好在将来部署这个docker容器。

我见过一些有关将Spring Boot应用程序停靠的文章。

这是来自spring.io

的示例dockerfile
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD gs-spring-boot-docker-0.1.0.jar app.jar
RUN sh -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

我的问题是 - 如何在docker 容器上运行我的.war文件?

3 个答案:

答案 0 :(得分:1)

您不会在docker中部署.war文件,就像将其部署到tomcat服务器一样。您需要有一个main(String args[])入口点,该入口点也在jar的清单文件中指定。指定为app.jar的{​​{1}}将运行您的ENTRYPOINT。在main()内,您可以运行运行应用程序的嵌入式Web服务器。

答案 1 :(得分:1)

如果您希望在本地Linux计算机上运行此应用程序,则可以在WAR文件所在的同一目录中创建此Dockerfile。

    FROM tomcat:8.0.21-jre8
    RUN [“rm”, “-rf”, “/usr/local/tomcat/webapps/ROOT”] 
    COPY dbconnect.war /usr/local/tomcat/webapps/ROOT.war
    CMD [“catalina.sh”, “run”]

然后,您可以构建Docker镜像并提供自定义标记:

     docker build -t <your-username>/tomcat-example:latest . 

最后你可以运行这个容器。

     docker run -p 8080:8080 -d --name tomcat  <your-username>/tomcat-example:latest

如果需要使用数据库或Web服务器运行此应用程序,可以在此处查看这些详细示例。

https://github.com/dchqinc/dchq-docker-java-example

https://dzone.com/refcardz/java-containerization

答案 2 :(得分:0)

如果您将Spring Boot应用程序配置/打包为可执行文件.jar而不是.war(如果选择.jar选项,Spring Boot Initializr将为您执行此操作),则在容器中运行它是一个问题添加一个入口点来运行java -jar和你的jar名称,比如

ENTRYPOINT [&#34; java&#34;,&#34; -jar&#34;,&#34; /opt/yourapp-0.0.1-SNAPSHOT.jar"]