我正在尝试将遗留系统从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
答案 0 :(得分:0)
可能的解决方案之一是:构建您自己的映像,以dajobe/hbase
作为基本映像,但修改使用EXPOSE
公开的hbase配置和端口以符合您的要求,然后使用该映像在你的撰写文件中。
但这需要您自己构建和管理图像。
答案 1 :(得分:0)
解决方案是将两个服务放在同一个docker网络上。
具体而言,请将其添加到docker-compose.yml
:
networks:
app_net:
driver: bridge
然后,在每个服务的配置中一定要包括:
networks:
- app_net
最后(你已经完成了这个),请确保hbase的配置中包含正确的端口映射:
ports:
- "9090:9091"