在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ 使用docker-compose實(shí)現(xiàn)微服務(wù),如何讓容器連接物理機(jī)器的redis?

使用docker-compose實(shí)現(xiàn)微服務(wù),如何讓容器連接物理機(jī)器的redis?

version: '3.6'
services:
  web:
    image: cfanbo/swoole4_php7:v1
    volumes:
      - /Users/sxf/sites/msgserve:/usr/src/myapp
    command: "php src/server.php start"

容器用swoole開發(fā)的一個(gè)守護(hù)進(jìn)程,需要用到redis數(shù)據(jù)庫,redis在本機(jī),這時(shí)如何修改?還有代碼層面應(yīng)該如何處理?

回答
編輯回答
懷中人

比較簡單的解決方式,根據(jù)這個(gè)stackoverflow回答,容器里執(zhí)行一下下面這個(gè)命令顯示出目前的路由信息,查出的這個(gè)『172.17.0.1』(我這邊是這個(gè),你那邊可能不一樣)即為物理機(jī)器的ip。

$ ip route show
default via 172.17.0.1 dev eth0 
172.17.0.0/16 dev eth0  src 172.17.0.4 

然后物理機(jī)器上將防火墻設(shè)置一下

$ iptables -A INPUT -i docker0 -j ACCEPT

然后你在容器里面即可用172.17.0.1這個(gè)ip連接物理機(jī)。

另外,還有一個(gè)比較好的實(shí)現(xiàn)方式是在docker-compose.yml里弄一個(gè)網(wǎng)橋:

version: '2'
services:
  <container_name>:
    image: <image_name>
    networks:
      - dockernet

networks:
  dockernet:
    driver: bridge
    ipam:
      config:
        - subnet: 192.168.0.0/24
          gateway: 192.168.0.1

然后192.168.0.1這個(gè)ip即為物理機(jī)器ip。

另外,這個(gè)問題大家在issue吵了很久,你可以看看。

2017年8月12日 01:59