也将docker-compose服务也暴露给HOST机器

时间:2019-02-04 17:15:51

标签: docker docker-compose containers host

这是我的v3.5 docker-compose.yml定义文件。它具有一个analytics网络(使用相同名称的别名),并且其中包含的两个服务都连接到所述网络以相互通信。这行得通。

但是,我也希望将这些服务(端口)公开给HOST机器。有一种方法可以通过在服务本身中定义一个附加网络和/或指定其他ports:条目来实现,但是由于文档非常混乱且特定于版本(移动目标),我无法确切地知道该怎么做。

在不破坏以下内容的情况下(因为它是内部工作的),我还要添加哪些内容(以及在何处)以将这两种服务都公开给HOST计算机?

谢谢!

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
  # ===========================================

编辑: 经过进一步调查,以上配置(如最初发布的那样)是正确的,只需从Docker主机的name到Docker主机的IP(经readme for the image我正在使用)。直到我尝试从主机访问服务之前,无意中使用name都没关系。

希望这个例子对希望看到它的其他人有价值。 谢谢以下评论者。

0 个答案:

没有答案