docker-compose中的端口转发

我试图将从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连接。我已经尝试在docker-compose.yml文件中“映射”或“转发”9090 :9091“不缺。 我也尝试docker-compose的expose属性,但它并不需要两个端口(只有一个暴露给其他容器)。 我如何做这个追加?

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

其中一个可能的解决scheme是:构build自己的图像,以dajobe/hbase作为基础图像,但修改使用EXPOSE的hbaseconfiguration和端口以符合您的要求,然后在撰写文件中使用该图像。

但这需要您自己构build和pipe理图像。

解决scheme是将两个服务放在同一个dockernetworking上。

具体来说,将其添加到您docker-compose.yml

 networks: app_net: driver: bridge 

那么,在每个服务的configuration中一定要包括:

 networks: - app_net 

最后(你已经这样做了),确保在hbase的configuration中包含正确的端口映射:

 ports: - "9090:9091"