您好,我有2个单独的项目,分别为docker-compose
-A
和B
。
项目B
有自己的Redis,我想从B
项目连接到此A
的Redis。
我该怎么做?
答案 0 :(得分:1)
您可以使用pre-existing network:
如果您想让容器加入现有的网络,请使用外部选项
示例文件夹结构:
shubuntu1@shubuntu1:~/cc$ ls
prj1 prj2
shubuntu1@shubuntu1:~/cc$ tree
.
├── prj1
│ └── docker-compose.yaml
└── prj2
└── docker-compose.yaml
2 directories, 2 files
prj1 / docker-compose.yaml:
version: '3.4'
services:
service_1:
image: alpine
tty: true
prj2 / docker-compose.yaml:
version: '3.4'
services:
service_2:
image: alpine
tty: true
networks:
default:
external:
name: prj1_default
检查容器是否可以互相访问:
shubuntu1@shubuntu1:~/cc/prj2$ docker exec -it prj2_service_2_1 ping service_1
PING service_1 (192.168.192.2): 56 data bytes
64 bytes from 192.168.192.2: seq=0 ttl=64 time=0.050 ms
64 bytes from 192.168.192.2: seq=1 ttl=64 time=0.148 ms
64 bytes from 192.168.192.2: seq=2 ttl=64 time=0.161 ms
您可以在第一个docker-compose.yaml中看到它会为此组合生成一个网络,这里是prj1_default
,它取决于找到第一个docker-compose.yaml的文件夹名称(prj1)。
然后在第二个docker-compose.yaml中,仅将第一个网络用作默认网络。这样,由两个不同的docker-compose.yaml生成的容器可以位于同一网络中,因此它们可以相互访问。然后,根据您的情况,prjB可以访问prjA的redis。