Docker Compose Container 之前相互通信
因 links 属性已被废弃,官方建议使用 networks 来将几个 container 划分至一个网络,从而实现 container 之间互通。
创建一个桥接网络
docker network create YOUR_NET_NAME
默认网络方式即为桥接
YOUR_NET_NAME
为你自定义的网络名称
修改docker-compose.yml
文件
- 将
YOUR_NET_NAME
网络添加到container
配置中 - 在与
services
同级的networks
配置中,添加YOUR_NET_NAME
为external: true
,如:
openresty/docker-compose.yml
1version: "3"
2
3services:
4 openresty:
5 container_name: openresty
6 image: openresty/openresty
7 restart: always
8 networks:
9 - YOUR_NET_NAME
10 volumes:
11 - ./conf:/usr/local/openresty/nginx/conf
12 - ./web:/web
13 ports:
14 - "80:80"
15 - "443:443"
16
17networks
18 YOUR_NET_NAME:
19 external: true
重新加载配置 docker-compose up -d
mariadb/docker-compose.yml
1version: "3"
2
3services:
4 mariadb:
5 container_name: mariadb
6 image: mariadb
7 restart: always
8 networks:
9 - YOUR_NET_NAME
10 environment:
11 MYSQL_ROOT_PASSWORD: root
12 volumes:
13 - ./data:/var/lib/mysql
14 - ./conf/my.cnf:/etc/mysql/my.cnf
15 ports:
16 - "13306:3306"
17
18networks
19 YOUR_NET_NAME:
20 external: true
重新加载配置 docker-compose up -d
注意:networks 中必须设置 external 为 true,否则无法正常通信
完成
openresty 和 mariadb 现在可以互通了!
在 openresty
中,可以直接通过 mariadb:3306
来访问 mariadb 数据库