向主机公开docker compose服务

向主机公开docker compose服务,docker,docker-compose,containers,host,Docker,Docker Compose,Containers,Host,这是我的v3.5docker compose.yml定义文件。它有一个分析网络(使用同名别名),其中两个包含的服务都连接到所述网络以相互通信。这很有效 但是,我希望这些服务(端口)也向主机公开。有一种方法可以通过定义额外的网络和/或在服务本身中指定额外的端口:条目来做到这一点,但我无法确切地弄清楚是如何做到的,因为文档非常混乱且版本特定(移动目标) 在不破坏以下内容(因为它在内部工作)的情况下,我应该添加什么(以及在哪里)来向主机公开这两个服务 谢谢大家! version: '3.5' net

这是我的
v3.5
docker compose.yml
定义文件。它有一个
分析
网络(使用同名别名),其中两个包含的服务都连接到所述网络以相互通信。这很有效

但是,我希望这些服务(端口)也向主机公开。有一种方法可以通过定义额外的网络和/或在服务本身中指定额外的
端口:
条目来做到这一点,但我无法确切地弄清楚是如何做到的,因为文档非常混乱且版本特定(移动目标)

在不破坏以下内容(因为它在内部工作)的情况下,我应该添加什么(以及在哪里)来向主机公开这两个服务

谢谢大家!

version: '3.5'

networks:
  analytics:
    name: analytics
    driver: bridge

  # ===========================================
  # Service: Zookeeper
  # ===========================================
  zookeeper:
    image: 'wurstmeister/zookeeper:latest'
    container_name: analytics-ZooKeeper
    networks:
      - analytics
    ports:
      - "2181:2181"
    volumes:
      - ./data.d/zookeeper.d:/opt/zookeeper-3.4.9/data
  # ===========================================

  # ===========================================
  # Service: Kafka
  # ===========================================
  kafka:
    build:
      context: ./kafka.d
      dockerfile: Dockerfile
    image: nmvega/kafka:latest

    networks:
      - analytics
    ports:
      - 9092-9094:9092 # For one to three Kafka brokers.

    environment:
     #KAFKA_ADVERTISED_HOST_NAME: vps00         # Docker host Name. <--- BEFORE
      KAFKA_ADVERTISED_HOST_NAME: 192.168.0.180 # Docker host IP.   <--- AFTER
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181

    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./data.d/kafka.d:/kafka

    depends_on:
      - zookeeper
  # ===========================================
版本:“3.5”
网络:
分析:
名称:分析
司机:驾驶台
# ===========================================
#服务:动物园管理员
# ===========================================
动物园管理员:
图片:“wurstmeister/动物园管理员:最新”
容器名称:ZooKeeper
网络:
-分析
端口:
- "2181:2181"
卷数:
-./data.d/zookeeper.d:/opt/zookeeper-3.4.9/data
# ===========================================
# ===========================================
#服务:卡夫卡
# ===========================================
卡夫卡:
建造:
上下文:./kafka.d
dockerfile:dockerfile
图片:nmvega/卡夫卡:最新版本
网络:
-分析
端口:
-9092-9094:9092#一到三名卡夫卡经纪人。
环境:

#卡夫卡大学广告主持人名称:vps00#Docker主持人名称。当您执行端口:-“2181:2181”时,您正在映射主机:容器端口。所以我不理解你的问题,我认为内部容器端口映射到定义的虚拟网络(
分析
)上,作为相同或不同的端口。。。不是一直到主机网络。但话说回来,这是docker,我愿意犯错。我现在正在仔细检查b/c上面Kafka服务的端口范围可能会让我看不清。一个问题可能是范围,因为您将主机中的三个端口的范围放在容器中的一个端口上。尝试放置相同数量的端口,如9092-9094:9092-9094@andre_vieira你的第一个评论是正确的。我的问题是另一个问题,我在文章的
编辑部分解释了这一点。至于您的端口范围建议,您通常是正确的,但在这种情况下,通过
docker-compose-f./docker-compose.yml scale kafka=3
(在启动初始容器后运行)实际上会有三个容器实例。再次感谢。当您执行端口:-“2181:2181”时,您正在映射主机:容器端口。所以我不理解你的问题,我认为内部容器端口映射到定义的虚拟网络(
分析
)上,作为相同或不同的端口。。。不是一直到主机网络。但话说回来,这是docker,我愿意犯错。我现在正在仔细检查b/c上面Kafka服务的端口范围可能会让我看不清。一个问题可能是范围,因为您将主机中的三个端口的范围放在容器中的一个端口上。尝试放置相同数量的端口,如9092-9094:9092-9094@andre_vieira你的第一个评论是正确的。我的问题是另一个问题,我在文章的
编辑部分解释了这一点。至于您的端口范围建议,您通常是正确的,但在这种情况下,通过
docker-compose-f./docker-compose.yml scale kafka=3
(在启动初始容器后运行)实际上会有三个容器实例。再次感谢。