Изменение порта докера в docker-compose не влияет на контейнерное Java-приложение - PullRequest
0 голосов
/ 24 февраля 2019

Предполагается, что это правда:

 service port:container port
         8081:8080

  • Приложение запускается на порту 8080 в соответствии с журналами запуска (см. Ниже).Теперь я изменил порты на 8083:8083, ожидая, что сервисный порт и порт контейнера будут равны 8083.

  • После изменения порта в 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-compose file:

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 Ответ

0 голосов
/ 24 февраля 2019

Внутренне, во время запуска, вашему Java-приложению нужно сказать, что оно должно запускаться на порту 8083 - простое помещение его в конфигурацию переадресации порта не поможет, так как запуск приложения java изолирован от того, как вы хотитечтобы сконфигурировать ваши контейнеры для запуска.

Обычно для большинства приложений OSS должна быть некоторая переменная среды, которую вы можете установить, чтобы приложение Java запускалось на определенном хосте / порту (внутри сети контейнера).интерфейс, который отличается от этого на хосте).

После этого, если у вас есть 8080:8083, это означает, что вы хотите перенаправить порт 8083 контейнера на порт 8080 вашей хост-системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...