Docker swarm服务端口无法访问

问题描述 投票:0回答:2

我对码头工作者来说非常棒,我在前几天阅读了官方教程如何使用它。我决定将我非常简单的spring-boot应用程序作为服务部署到一个swarm中,但我无法从外部访问它。顺便说一句,当我用docker run启动docker时,可以访问容器。

所以我的spring-boot tomcat正在收听8081。

Dockerfile:

FROM java:openjdk-8-alpine

VOLUME /tmp
EXPOSE 8081

ADD docker-demo-1.0.jar app.jar

ENV JAVA_OPTS=""
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-
jar","/app.jar"]

码头工人,compose.yml:

version: "3"
services:
  web:
    image: neyma6/demo:3.0
    deploy:
      replicas: 2
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
      restart_policy:
        condition: on-failure
    ports:
      - "8081:8081"
    networks:
      - webnet
  visualizer:
    image: dockersamples/visualizer:stable
    ports:
      - "8082:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints: [node.role == manager]
    networks:
      - webnet
networks:
  webnet:

我部署了2个服务,一个可视化工具和一个spring-boot应用程序。可视化器可以在http://localhost:8082/上访问,但应用程序不在http://localhost:8081/test

docker swarm init
docker stack deploy -c docker-compose.yml demo

我做错了什么?

docker spring-boot docker-compose dockerfile docker-swarm
2个回答
0
投票

我假设您在本地(1个节点)上部署了此docker堆栈,但您尝试在同一个8081端口上打开2个容器(副本)。港口将发生冲突。

将副本更改为1,然后再次尝试。


0
投票

我想出了问题是什么,没有足够的内存提供给spring-boot运行容器......

© www.soinside.com 2019 - 2024. All rights reserved.