You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多个Docker应用容器连接独立共享MariaDB容器的配置问题

问题排查与修复步骤

1. 前置依赖缺失修复

你配置中声明了external: true的公共网络NET,需要提前手动创建:

docker network create NET

2. MariaDB配置修复

当前环境变量存在冲突:

  • MYSQL_USER不能设置为root,root是MariaDB默认的超级用户,额外声明会导致初始化冲突
  • MYSQL_PASSWORD是给自定义普通用户的密码,如果你不需要额外创建普通用户可以直接删除该行,root用户密码仅需保留MYSQL_ROOT_PASSWORD即可
    修正后的环境变量段:
environment:
  - TZ=${TIMEZONE}
  - MYSQL_DATABASE=dockerApps
  - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}

3. Nginx Proxy Manager配置修复

  • depends_on仅能识别同一个docker-compose文件内定义的服务,跨compose文件的依赖声明不生效,直接删除depends_on:相关两行配置即可,只要两个容器都加入NET网络就可以通过服务名mariadb互通
  • 你需要手动修改Nginx Proxy Manager的config.json配置文件,将原有的数据库连接地址改为mariadb,用户名改为root,密码改为你设置的MYSQL_ROOT_PASSWORD,同时需要提前在公共MariaDB中创建Nginx Proxy Manager需要的专属数据库

4. phpMyAdmin配置修复

  • 配置文件中version: "3.9"是HTML转义字符错误,改为正常的version: "3.9"
  • PMA_PASSWORD变量配置错误,root用户对应的密码是${MYSQL_ROOT_PASSWORD},不是${MYSQL_PASSWORD},修正后:
environment:
  PMA_HOST: mariadb
  PMA_USER: root
  PMA_PASSWORD: ${MYSQL_ROOT_PASSWORD}

5. 环境变量补全

你配置中用到的${TIMEZONE}、${MYSQL_ROOT_PASSWORD}等变量,需要在每个compose文件的同级目录创建.env文件,填入对应取值,示例:

TIMEZONE=Asia/Shanghai
MYSQL_ROOT_PASSWORD=自定义的数据库root密码

6. 启动顺序调整

必须按顺序启动服务,避免数据库未就绪导致其他应用连接失败:

  1. 进入MariaDB目录执行docker-compose -f mariadb.yml up -d,等待10秒左右完成初始化
  2. 再分别进入Nginx Proxy Manager、phpMyAdmin目录执行对应启动命令

验证方法

启动完成后访问你的服务器IP:8004,用root账号和你设置的密码登录phpMyAdmin,能正常看到数据库列表即说明公共数据库配置生效。

内容的提问来源于stack exchange,提问作者lcp2000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 04:54:00