0
  1. 当我在下面跑时

    docker run --name foo -d -p 4000:1967 foo_service
    

    我可以使用 curl 或任何浏览器(localhost:4000)从我的自定义 spring boot rest 端点获得响应,因此很明显  0.0.0.0:4000->1967/tcp端口映射按预期工作。

  2. 但是,当我在下面运行时

    docker stack deploy  -c docker-compose.yml foo_service
    

    我无法访问任何容器,因此 localhost:4000 没有响应,并且容器在初始启动后立即重新启动。

    我已经在选项 1 和选项 2 的所有容器中运行 netstat 命令。在选项 2 中,我可以看到端口 1967 正在被监听,但在选项 2 中,有一些随机端口(我猜,这是正常的,因为这些端口发布自己到 1967 年应用负载平衡)

    docker version 18.0
    java 1.8.181
    spring boot 2.1.1 (basic rest controller with one endpoint)
    

    Dockerfile

    FROM openjdk:8-jdk-alpine
    VOLUME /tmp
    EXPOSE 1967
    ARG JAR_FILE
    COPY ${JAR_FILE} app.jar
    ENTRYPOINT ["java","-jar","/app.jar"]
    

    码头工人-compose.yml

    version: "3"
    services:
      web:
        image: foouser/foorepo:foo
        deploy:
          replicas: 3
          resources:
            limits:
              cpus: "0.1"
              memory: 50M
          restart_policy:
            condition: on-failure
        ports:
          - "4000:1967"
        networks:
          - webnet
    networks:
      webnet:
    

    有谁知道这里有什么问题?每个选项之间有什么区别?

4

0 回答 0