春季启动应用程序运行良好的独立,错误docker工人

我有一个基于spring-boot的java应用程序,可以从命令行(embedded式tomcat standalone)正常运行。

问题

当我在docker中运行应用程序时,它不能正常运行。 控制台显示应用程序启动正常,没有错误; 但是,浏览器显示以下错误页面:

白标签错误页面

此应用程序没有明确的映射/错误,所以你看到这是一个后备。

[我明白这个消息说没有映射'/错误'url。 但是我想知道根本原因]

附加信息/上下文

  • 春季启动1.4.2
  • docker插件
  • 输出是也是独立运行的“战争”文件
  • 我运行“主机”networking模式(–net =主机)的docker图像,以便它可以访问数据库(我的本地主机上运行的MySQL)

build.gradle目标

task buildDocker(type: Docker, dependsOn: build) { push = false applicationName = jar.baseName dockerfile = file('src/main/docker/Dockerfile') doFirst { copy { from war into stageDir } } } 

dockerfile

 FROM frolvlad/alpine-oraclejdk8:slim VOLUME /tmp ADD floss.war app.jar RUN sh -c 'touch /app.jar' ENV JAVA_OPTS="" ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ] 

运行Docker的命令

 dockerImg=1248c47d9cfa docker run \ -it \ --net=host \ -e SPRING_APPLICATION_JSON="$SPRING_APPLICATION_JSON" \ $dockerImg 

我是新来的docker,并会很感激任何build议。

提前致谢!

问题:

  1. 在dockerfile中没有暴露的端口
  2. 没有与主机的端口映射。

Sol:1.在dockerfile中显示应用程序端口并构build镜像EXPOSE $application_port 2.然后运行EXPOSE $application_port docker run -p 8080:8080 -d -e SPRING_APPLICATION_JSON="$SPRING_APPLICATION_JSON" $dockerImg

我怀疑这是由于缺less-p选项,你可以试试这个。 如果不同,请更改端口。 docker run -p 8080:8080 -it \ –net = host \ -e SPRING_APPLICATION_JSON =“$ SPRING_APPLICATION_JSON”\ $ dockerImg

我遇到过同样的问题。 你似乎是像我一样使用Spring Boot的同一个Docker示例。 正如你所看到的,当WAR文件被放到Docker映像中时WAR文件得到一个.jar扩展名,而不是.war。

我能够通过调用文件“app.war”而不是“app.jar”并相应地更改Java启动参数来解决问题。

如果使用扩展名“.jar”,对静态资源的访问正常,但访问所有dynamic内容(JSP,…)将导致404错误。