【问题标题】:Unable to connect application on localhost after docker deploymnet is successfuldocker部署成功后无法在localhost上连接应用程序
【发布时间】:2020-12-12 08:03:33
【问题描述】:

我正在尝试在 docker 容器上部署 Spring Boot War 文件

这是我的 docker 文件:

FROM tomcat:alpine

RUN wget -O /usr/local/tomcat/webapps/ROOT.war -U admin:Learning http://localhost:8082/artifactory/demoArtifactory/com/demo/0.0.1-SNAPSHOT/demo-0.0.1-SNAPSHOT.war

EXPOSE 8080

CMD ["catalina.sh", "run"]

我无法连接到 localhost:7000

更新: 这是 docker run 命令:

docker run -it --name demo-application -d -p 8080:8080 hmt/demo-application:49

"PortBindings": {
                "8080/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "8080"
                    }
                ]
            }

现在我的 tomcat 已在 localhost:8080 上运行,但我无法访问我的应用程序

更新:

@SpringBootApplication
public class DemoApplication{

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

【问题讨论】:

  • 请支持文字转图片。
  • 你能展示你的demoApplication主类的sn-p吗?
  • @iron_man 我已经添加了 sn-p

标签: spring-boot docker dockerfile war


【解决方案1】:

1.您需要扩展SpringBootServletInitializer.Spring Boot Servlet Initializer类文件允许您在应用程序启动时使用Servlet Container进行配置 参考:https://www.tutorialspoint.com/spring_boot/spring_boot_tomcat_deployment.htm

2.将您的war文件从ROOT.war重命名为sample.war之类的东西。ROOT默认应用程序通常是Tomcat管理器

【讨论】:

    【解决方案2】:

    查看您的端口信息:
    容器的9100端口发布在宿主机的7000端口上。
    但是看看你的日志应用程序:它部署在8080(而不是9100)上。
    您想要的是在主机的7000 端口上发布容器端口8080,例如:

    docker run -p 7000:8080 foo-image
    

    【讨论】:

    • 我的 tomcat 服务器在 8080 上启动,但我仍然无法访问我的应用程序
    • @HMT 现在看起来没问题。请检查容器日志以了解。我编辑了。
    • 是的,我这样做了。日志中没有此类信息
    • 嗯。但是你的错误是什么?您可以在 wget 语句之前删除 tomcat ROOT app 文件夹吗? RUN rm -rf /usr/local/tomcat/webapps/ROOT
    猜你喜欢
    • 1970-01-01
    • 2020-08-18
    • 2019-09-05
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多