尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

记 Docker 运行公共 MySQL 数据库供其他服务使用的配置过程

记 Docker 运行公共 MySQL 数据库供其他服务使用的配置过程
📅 发布时间:2026/6/22 2:02:37

在 VPS 上部署服务时,使用 Docker 或 Docker Compose 是最方便的方式之一。例如博客系统Typecho和短链接服务Shlink都要求外部数据库,如果在每个服务的 Docker Compose 中都各自启动一个 MySQL,既浪费空间,维护也更复杂。

更理想的情况是:单独运行一个公共 MySQL 容器,让所有需要数据库的服务连接到它。这样不仅节省资源,备份时也只需备份一个数据库容器即可,大大降低维护成本。

笔者以MySQL服务为例,先运行一个公共的数据库服务,并让其他容器共享使用。


1. 启动公共 MySQL 服务

以下是 MySQL 服务的 docker-compose.yml 示例

version: '3.8'services:mysql:container_name: mysqlimage: mysql:8.0restart: alwaysports:- 127.0.0.1:3306:3306environment:MYSQL_ROOT_PASSWORD: 1234567890volumes:- ./data/mysql:/var/lib/mysqlnetworks:- shared-mysqlnetworks:shared-mysql:name: shared-mysql

其中关键点是:

  • 为 MySQL 单独创建 shared-mysql 网络,方便其他服务加入该网络并访问数据库
  • 端口映射使用 127.0.0.1:3306,避免外部访问
  • 数据持久化到 ./data/mysql

执行 docker compose up -d 启动 MySQL服务。


2. 为其他应用创建独立的数据库与用户

为了安全与隔离,每个应用都应有独立的数据库与用户。以 Shlink 为例,步骤如下:

  1. 进入 MySQL 容器

    docker exec -it mysql bash
    mysql -uroot -p
    #(输入 root 密码)
    
  2. 创建数据库与用户

    CREATE DATABASE shlink;
    CREATE USER 'shlink_user'@'%' IDENTIFIED BY 'shlink';
    GRANT ALL PRIVILEGES ON shlink.* TO 'shlink_user'@'%';
    FLUSH PRIVILEGES;
    
    • 创建数据库 shlink
    • 创建用户 shlink_user,密码为 shlink
    • 为用户 shlink_user 在数据库 shlink 上授权
    • 最后退出 exit

这样就在数据库中建立起 shlink 表及用户供后续服务使用。


3. 在服务的Docker Compose中配置数据库环境变量

以笔者的 Shlink 短链接服务为例,需要在 Compose 文件中写入如下内容:

version: '3.8'services:shlink:image: shlinkio/shlink:stablecontainer_name: shlinkports:- '127.0.0.1:8080:8080'environment:- DEFAULT_DOMAIN=shlink.test.com- IS_HTTPS_ENABLED=true- GEOLITE_LICENSE_KEY=123321123321- INITIAL_API_KEY=123321- REDIRECT_STATUS_CODE=301- DB_DRIVER=mysql- DB_HOST=mysql- DB_PORT=3306- DB_USER=shlink_user- DB_PASSWORD=shlink- DB_NAME=shlinkrestart: alwaysnetworks:- shared-mysqlshlink-web-client:image: shlinkio/shlink-web-client:stablecontainer_name: shlink-web-clientports:- '127.0.0.1:8081:8080'restart: alwaysnetworks:shared-mysql:external: true

从中看到,有几个关键点:

  1. 对于需要数据库的后端服务,要加入networks: - shared-mysql ,让后端和数据库服务在同一个网络下
  2. 数据库服务的HOST直接写容器的服务名称,也就是DB_HOST=mysql
  3. 最后的networks 也需要写明external: true
  4. 其他数据库配置(库名、用户、密码)与前一步创建的保持一致即可

这样就 Shlink 就能成功连接公共 MySQL 数据库。


参考文献

[1] Docker 安装 Shlink 自建短网址. https://u.sb/docker-shlink/

相关新闻

  • 2025高碳素超轻超硬鱼竿哪家好?高碳素超轻超硬鱼竿推荐
  • 手竿什么品牌质量好?选购指南:中国手竿十大品牌,公认好用的手竿
  • FeatherNotes

最新新闻

  • 聚焦九省通衢供应链升级:2026年武汉及湖北优质云仓代发平台推荐榜与实战指南 - 品牌评测官
  • 2026郴州美妆培训、美发美容美甲纹绣技能学校怎么选?明星日记等5大机构深度横评 - 优质企业观察收录
  • 10分钟精通SVGcode:从像素模糊到矢量高清的完整转换指南
  • 番禺大石400元左右精品酒店推荐哪些?2026年预算住宿筛选指南 - 广州矩阵架构科技公司
  • KMS智能激活工具终极指南:免费快速激活Windows和Office的完整方案
  • 为什么别人卖包卖表价更高?2026 北京奢侈品回收计价规则 看完直接议价 - 讯息早知道

日新闻

  • 2026速览惠州叛逆青少年学校前十大排名名单出炉 - 武汉中职最新信息发布
  • 2026上饶白蚁消杀哪家好?15年本土2大权威白蚁防治公司推荐(金盾虫控/青蚁卫士) - 我叫一
  • 天龙八部单机版终极数据管理工具:5个技巧快速掌握游戏数据编辑

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号