我有一个 maria-db 数据库 docker-compose.yml:
version: '3.8'
services:
mariadb:
image: mariadb:latest
container_name: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: admin
MYSQL_DATABASE: "wordpress3,wordpress4"
MYSQL_USER: mohsin
MYSQL_PASSWORD: 12345678
volumes:
- mariadb_data:/var/lib/mysql
networks:
- wordpress_network
networks:
wordpress_network:
external: true
name: wordpress_network
volumes:
mariadb_data:
我正在运行两个 wordpress docker-compose 文件(用于测试目的)。我想将它们连接到 mariadb docker-compose。两个文件都有相似的配置:
version: '3.8'
services:
wordpress:
image: wordpress:latest
container_name: wordpress3
restart: always
environment:
WORDPRESS_DB_HOST: mariadb
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: admin
WORDPRESS_DB_NAME: wordpress3
ports:
- "8083:80"
depends_on:
- mariadb
networks:
- wordpress_network
mariadb:
extends:
file: ../mariadb/docker-compose.yml
service: mariadb
networks:
wordpress_network:
name: wordpress_network
external: true
当我运行第一个 wordpress docker-compose 时,它会自动运行 mariadb 并连接到它。与此同时,另一个实例抛出一个错误,提示“
mariadb already in use
”。 我希望它识别出 mariadb 已经在运行,并自动连接到共享实例?
您需要确保要相互通信的容器位于同一网络上。
例如:
# first/docker-compose.yml
version: '2'
services:
first:
...
networks:
- some-net
networks:
some-net:
driver: bridge
# second/docker-compose.yml
version: '2'
services:
second:
...
networks:
- first_some-net
networks:
first_some-net:
external: true
注意:您的应用程序的网络是根据“项目名称”命名的,该名称基于其所在目录的名称,在本例中添加了前缀first_