当前位置: 首页 > 知识库问答 >
问题:

在docker compose中更改docker端口对容器化java应用程序没有影响

禄光霁
2023-03-14

假设这是真的:

 service port:container port
         8081:8080

>

在docker compose中更改端口后,我使用docker stack deploy-c docker compose重新部署它。yml somename

当我执行另一个docker ps时,我看到容器仍然在端口8080上运行。

容器化java应用程序启动日志:

2019-02-24 17:06:00.665  INFO 1 --- [           main] c.l.a.ArticleServiceApplication          : Starting ArticleServiceApplication v0.0.1-SNAPSHOT on 42ccc7a1554c with PID 1 (/articleservice-0.0.1-SNAPSHOT.jar started by root in /)
2019-02-24 17:06:00.748  INFO 1 --- [           main] c.l.a.ArticleServiceApplication          : No active profile set, falling back to default profiles: default
2019-02-24 17:06:30.505  INFO 1 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data repositories in DEFAULT mode.
2019-02-24 17:06:32.601  INFO 1 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 1643ms. Found 1 repository interfaces.
2019-02-24 17:06:48.016  INFO 1 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$33ba8b8e] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2019-02-24 17:07:01.769  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)

docker编写文件:

version: "3"
services:
  articleservice:
    image: elps/articleservice:1.1.0.5
    deploy:
      replicas: 2
      restart_policy:
        condition: on-failure
      placement:
        constraints:
          - node.role == manager
    ports:
      - "8081:8080"
...

共有1个答案

宗政博
2023-03-14

在内部,在启动期间,您的Java应用程序需要被告知它应该在端口8083上启动——简单地将其放入port forward配置不会起作用,因为Java应用程序的启动与您想要如何配置容器来启动是隔离的。

通常,对于大多数OSS应用程序,应该有一些环境变量,您可以设置这些变量,使Java应用程序在某个主机/端口上启动(在容器网络接口内,这与主机上的不同)。

之后,如果您有8080:8083,这意味着您希望将容器的8083端口转发到主机系统的8080端口。

 类似资料:
  • 问题内容: 我正在尝试使用Docker compose在远程服务器上部署第二个数据库容器。该postgresql服务器在端口5433上运行,而不是第一个postgresql容器使用的5432。 设置应用程序时,出现以下错误输出: 我的泊坞窗撰写文件是: 我觉得问题一定是服务器实例上的postgresql.conf文件将端口设置为5432导致我的应用尝试与其连接时导致错误。有没有一种简单的方法可以使

  • 我正在尝试将.war、.aar、.xml和.properties文件部署到tomcat docker容器。我使用了下面的Dockerfile和基本的tomcat docker映像。 到目前为止一切正常。它提取war文件并启动容器内的应用程序。 但是现在我需要像这样添加/编辑“/usr/local/tomcat/webapps/root/web-inf//”和“/usr/local/tomcat/w

  • 我有一个简单的rails应用程序,它有一个MongoDB后端。我使用Docker Compose在不同的容器中运行rails应用程序和MongoDB。当我使用默认的rails端口(3000)时,一切正常。 但是,如果我在端口8080上运行rails应用程序,而不是使用,并在我的中使用暴露端口8080,然后重建并推送图像,则只有MongoDB容器启动。我还更改了docker compose中的端口。

  • 我正在使用Docker容器执行自动化测试。我必须在同一台服务器上为多个应用程序运行测试套件。但是,如果每个selenium hub docker容器具有相同的端口,则无法同时运行所有这些套件。因此,我想为每个selenium/hub docker容器分配不同的端口。有什么办法可以改变集线器集装箱的港口吗?或者我需要编写自己的dockerfile而不使用selenium/hub docker图像吗?

  • 我试图使用Docker Compose在远程服务器上部署第二个数据库容器。此postgresql服务器运行在端口5433上,而不是第一个postgresql容器使用的端口5432。 当我设置应用程序时,我得到以下错误输出: 我的docker组合文件是: 我觉得问题一定是服务器实例上的文件将端口设置为5432,导致应用程序试图连接到它时出现错误。是否有一种简单的方法可以使用compose文件中的命令

  • 当我在本地运行django应用程序时,它工作正常,但当我在容器上运行它时,它不工作。这是港口问题吗?当我把它作为本地应用程序运行(没有docker)时,我把它指向localhost:8000/polls,它就像一个魅力。但是我发现,“localhost页面不工作。当我运行容器时,localhost没有发送任何数据。ERR_EMPTY_RESPONSE”。该应用程序基本上与Django教程一字不差h