Dockerizing Spring应用程序
我有一个使用Spring框架+ AngularJs前端工作的应用程序。 我以前只需将mvn package
到.war文件中,就可以将其部署到亚马逊AWS上。
现在我需要在docker中设置一个linux env来debugging一些额外的function(使用windows作为主操作系统),最好在将来部署这个docker容器。
我看过一些关于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文件 ?
如果您想在本地Linux机器上运行此应用程序,则可以在WAR文件所在的同一目录中创build此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”]
然后,您可以构buildDocker镜像并提供自定义标记:
docker build -t <your-username>/tomcat-example:latest .
最后你可以运行这个容器。
docker run -p 8080:8080 -d --name tomcat <your-username>/tomcat-example:latest
如果需要使用数据库或Web服务器运行此应用程序,可以在这里查看这些详细示例。
你不要在Docker中部署一个.war
文件,就像将其部署到tomcat服务器一样。 你需要有一个main(String args[])
入口点,这个入口点也是在你的jar清单文件中指定的。 你的app.jar
指定为ENTRYPOINT
然后运行你的main()
。 在main()
里面,你可以运行一个运行你的应用程序的embedded式web服务器。
如果您将Spring Boot应用程序configuration为可执行文件.jar而不是.war(如果您select.jar选项,Spring Boot Initializr会为您执行此操作),那么在您的容器中运行它就是添join口点使用-jar和你的jar名称来运行java
ENTRYPOINT [“java”,“-jar”,“/opt/yourapp-0.0.1-SNAPSHOT.jar”]