2

我想在 docker-swarm 堆栈文件中为我的网络提供一个别名。

目前,堆栈文件看起来像

version: '3'

networks:
  mybridge:

services:
  web:
    restart: always
    build: ./web
    image: shivanand3939/web
    expose:
      - "8000"
    volumes:
      - ./output:/usr/src/app/static
    command: /usr/local/bin/gunicorn -w 2 -b :8000 --access-logfile - classifierv2RestEndPoint_ridge_NB:create_app()   
    networks:
      mybridge:
        aliases:
          - web
    deploy:
      replicas: 2
      update_config:
        parallelism: 2
        delay: 10s
      restart_policy:
        condition: on-failure

  nginx:
    restart: always
    build: ./nginx/
    image: shivanand3939/nginx
    ports:
      - "80:80"
    volumes:
      - /www/static
    networks:
      - mybridge
    deploy:
      replicas: 1
      update_config:
        parallelism: 2
        delay: 10s
      restart_policy:
        condition: on-failure

  viz:
    image: dockersamples/visualizer
    ports:
      - 8080:8080/tcp
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    deploy:
      placement:
        constraints: [node.role == manager]

当我运行这个文件时

docker stack deploy -c docker-stack.yml classifierbot

我得到以下输出

Creating network classifierbot_default
Creating network classifierbot_mybridge
Creating service classifierbot_viz
Creating service classifierbot_web
Creating service classifierbot_nginx

网络名称从mybridge更改为classifierbot_mybridge。因此 nginx 和 web 这两个服务无法相互通信。

所以,我的问题是如何给我的网络起一个别名也可以称为 mybridge

编辑:

一种方法是添加

networks:
  mybridge:
    external:
      name: mybridge

并在堆栈文件之外创建 mybridge 但它违背了目的,对吗?因为我无法在单个堆栈文件中完成所有操作

4

1 回答 1

2

我假设“别名”一个网络,你的意思是“给一个服务一个别名”在一个网络中。因为您的网络的别名已成功提供。在您的情况下,“mybridge”。

为服务提供网络别名(我们通常认为的域名)您通常应该能够在您的服务中执行此操作:阻止

 nginx:
    networks:
      mybridge:
        aliases: # https://github.com/moby/moby/issues/38066
          - nginx

这是由于截至 2019 年 10 月 27 日尚未解决的错误造成的。对此有待售票:

现在,我docker service一直这样做,直到它得到多服务变体的支持,docker stack up|deploy.

--hostname $SERVICE_NAME
--name $SERVICE_NAME
于 2019-10-27T13:32:23.487 回答