
有什么用
多个docker容器间共享单个mariadb(Docker数据库服务)
多个Docker Compose组之间共享单个Docker数据库服务,避免一个应用就要开启一个mysql或mariadb的容器,避免浪费硬件系统的内存和硬盘资源
多个docker容器间共享网络
怎么用
修改新增的docker-compose.yml来让app的数据库部分连接到共享的mariadb docker容器中,比如:
version: '3'
services:
app: #这只是一个举例,关键是看添加的两个章节:depends_on 和 networks
build: .
...
depends_on:
- yourls_mysql
networks:
- shared_network
#以下这个章节内容是固定的,告知当前的docker-compose要引用到外部的共享网络
networks:
shared_network:
external: true
name: shared_network
相关内容
实现方法
~~建立shared_network~~
~~需要新建一个共享network的docker容器,docker-compose.yml~~
version: '3'
services:
network:
image: alpine
command: tail -f /dev/null
networks:
- shared_network
networks:
shared_network:
driver: bridge
实践证实这个步骤不是必须的,仅需要把network和配置数据库参数部分按下面的设置即可:
SuiteCRM使用共享数据库
以SuiteCRM为例,让它使用共享的yourls_mysql数据库服务
version: '3.5'
services:
# mariadb: #因为要使用共享的数据库,所以注释掉这个章节
# image: docker.io/bitnami/mariadb:11.2
# environment:
# # ALLOW_EMPTY_PASSWORD is recommended only for development.
# - ALLOW_EMPTY_PASSWORD=yes
# - MARIADB_USER=bn_suitecrm
# - MARIADB_DATABASE=bitnami_suitecrm
# - MARIADB_PASSWORD=bitnami123
# volumes:
# - 'mariadb_data:/bitnami/mariadb'
suitecrm:
image: docker.io/bitnami/suitecrm:8
ports:
- '8100:8080'
- '8101:8443'
environment:
- SUITECRM_DATABASE_HOST=yourls_mysql
- SUITECRM_DATABASE_PORT_NUMBER=3306
- SUITECRM_DATABASE_USER=root
- SUITECRM_DATABASE_NAME=yourls
- SUITECRM_DATABASE_PASSWORD=my-secret-pw
# ALLOW_EMPTY_PASSWORD is recommended only for development.
#- ALLOW_EMPTY_PASSWORD=yes
volumes:
- './suitecrm_data:/bitnami/suitecrm'
#depends_on: #这个depends_on仅限于使用在都处于单个docker-compose.yml文件中的情况
# - yourls_mysql
networks:
- template_default
networks:
template_default:
external: true
name: template_default
启动这个docker-compose错误:
service “suitecrm” depends on undefined service yourls_mysql: invalid compose project
把depends_on 修改为 links 依然报同样错误。
修改了
network shared_network declared as external, but could not be found
最终:
修改直接使用“template_default”这个network的话,可以直接使用到共享的数据库
下一步
打算用起来phpMyAdmin或者本机的DataGrip,来管理和备份数据库等操作…
注意事项
合并/共享数据库时,务必备份原先数据库中的内容;这样即便操作不当,还能追溯回原先版本。

发表回复