我想在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 。因此,2服务nginx和web无法在它们之间进行通信。
所以,我的问题是如何为我的网络提供别名也可以称为mybridge
编辑:
一种方法是添加
networks:
mybridge:
external:
name: mybridge
并在堆栈文件之外创建mybridge,但它失败了目的吗?因为我无法在单个堆栈文件中执行所有操作
答案 0 :(得分:0)
我假设网络是“别名”,您的意思是“为服务提供别名”。因为您的网络别名已成功给出。在您的情况下,为“ 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