我有一个使用Spring Framework + AngularJs前端的应用程序。
我之前只需将mvn package
打包到.war文件中,就可以在亚马逊AWS上进行部署。
现在我需要在本地的docker中设置一个linux env来调试一些额外的功能(使用windows作为主操作系统),并且最好在将来部署这个docker容器。
我见过一些有关将Spring Boot应用程序停靠的文章。
这是来自spring.io
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文件?
答案 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服务器运行此应用程序,可以在此处查看这些详细示例。
答案 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"]