docker-compose

时间:2016-11-18 18:18:35

标签: docker docker-compose thrift portforwarding

我正在尝试将遗留系统从hbase和php模块拆分为两个独立的容器,并使用以下docker-compose文件:

version: '2'
services:
  php:
    image: my-legacy-php
    volumes:
      - ~/workspace/php:/workspace/php
    ports:
      - "80:80"
    links:
      - hbase
  hbase:
    image: dajobe/hbase
    hostname: hbase-docker
    ports:
      - "43590-44000:43590-44000"
      - "8085:8085"
      - "2181:2181"
      - "8080:8080"
      - "16010:16010"
      - "9095:9095"
      - "9090:9091"
      - "16020:16020"
      - "16030:16030"
      - "60000:60000"
    volumes:
      - ~/workspace/hbase-docker/data:/data

我正在使用一个公共hbase-docker图像,它使用端口9090进行节约,而我的旧版php模块希望通过端口9091连接。我试图在{{1}内“映射”或“转发”文件“9090:9091”不缺。我还尝试了docker-compose的docker-compose.yml属性,但它不需要两个端口(只有一个端口暴露给其他容器)。如何追加?

我希望hbase容器的监听端口9090从php容器(内部)显示为9091

2 个答案:

答案 0 :(得分:0)

可能的解决方案之一是:构建您自己的映像,以dajobe/hbase作为基本映像,但修改使用EXPOSE公开的hbase配置和端口以符合您的要求,然后使用该映像在你的撰写文件中。

但这需要您自己构建和管理图像。

答案 1 :(得分:0)

解决方案是将两个服务放在同一个docker网络上。

具体而言,请将其添加到docker-compose.yml

networks:
  app_net:
    driver: bridge

然后,在每个服务的配置中一定要包括:

networks:
  - app_net

最后(你已经完成了这个),请确保hbase的配置中包含正确的端口映射:

ports:
  - "9090:9091"