Docker compose v3 指定要进入的网络?

Docker compose v3 specify network to be ingress?

我有 docker-compose 文件用于我的 docker swarm stack.I 希望我的堆栈服务部署在特定网络上并且我想将该网络作为入口网络,以便我可以使用 docker.

的 DNSRR
version: "3"
services:
 a:
  image: xyz/a:dev
  ports:
   - "80:80"
   - "443:443"
  networks:
   -my_network
b:
  image: xyz/b:dev
  ports:
  - "5000:5000"
  networks:
   -my_network

networks:
  my_network:
    driver:overlay
    ipam: 
     driver: default
     config:
       -subnet: 10.0.1.0/24

这里,我在哪里可以指定这个网络应该是入口网络?加上我如何指定 ip-range 与 cli 中指定的相同:here

显然,这些选项没有在 composefile 中公开。文档没有提及它们,您可以查看源代码,尤其是最新的 compose schema.

唯一的选择是在命令行上创建入口网络,并从组合文件中将其作为外部网络引用。

入口网络仅适用于 manager/worker 个节点。

The routing mesh routes all incoming requests to published ports on available nodes to an active container. https://docs.docker.com/engine/swarm/ingress/

你要的是加overlay网络。分配给非入口的同一覆盖网络的所有服务都可以通过您为它们提供的名称相互通信。

例如

docker service create --name A --network dev ...
docker service create --name B --network dev ...

服务 A 可以简单地做到 ping B

如何指定端口范围的示例:

ports:
  - "9090-9091:8080-8081"

长格式允许将模式指定为 hostingress

ports:
  - target: 80
    host_ip: 127.0.0.1
    published: 8080
    protocol: tcp
    mode: ingress

有关详细信息,请参阅 docker-compose 规范的 Ports section