当前位置: 首页 > news >正文

使用 Docker-compose 部署 MySQL

使用 Docker Compose 部署 MySQL

本文将详细指导如何使用 docker-compose 部署 MySQL,包括基本配置、启动步骤、数据持久化以及一些高级选项。通过容器化部署 MySQL,你可以快速搭建一个隔离的数据库环境,适用于开发、测试或小型生产场景。


关键要点

  • 使用 docker-compose 部署 MySQL 需要创建一个 docker-compose.yml 文件,设置 MySQL 镜像、端口映射、环境变量和数据持久化。
  • 需要安装 Docker Engine、Docker Compose 和 MySQL 客户端。
  • 数据通过命名卷持久化,方便管理和备份。
  • 令人惊讶的是,你可以自动创建数据库和用户,只需在文件中添加额外的环境变量。

准备工作

在开始之前,请确保已安装以下工具:

  • Docker Engine:容器运行环境,可从 官方文档 获取。
  • Docker Compose:管理多容器应用的工具,可从 官方文档 获取。
  • MySQL 客户端:用于连接和操作数据库,可参考 安装指南。

这些工具是部署的基础,确保你的环境已准备就绪。


创建和启动 MySQL

1. 创建 docker-compose.yml 文件

创建一个名为 docker-compose.yml 的文件,内容如下:

version: '3.9'
services:
  mysql:
    image: mysql:8.0
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: MYPASSWORD
    volumes:
      - mysql_data:/var/lib/mysql
volumes:
  mysql_data: 

说明:

version: '3.9':指定 Docker Compose 文件格式版本。
image: mysql:8.0:使用 MySQL 8.0 官方镜像。
restart: always:容器在失败时自动重启。
ports: "3306:3306":将主机端口 3306 映射到容器内的 3306 端口。
environment:设置 MySQL 根密码(将 MYPASSWORD 替换为你的实际密码)。
volumes:使用命名卷 mysql_data 挂载到 /var/lib/mysql,实现数据持久化。

2.可选:自动创建数据库和用户

如果需要自动创建数据库和用户,可以在 environment 中添加以下内容:

environment:
  - MYSQL_ROOT_PASSWORD=MYPASSWORD
  - MYSQL_DATABASE=mydb
  - MYSQL_USER=myuser
  - MYSQL_PASSWORD=myuserpassword

说明:

MYSQL_DATABASE:创建名为 mydb 的数据库。
MYSQL_USER:创建用户 myuser。
MYSQL_PASSWORD:设置用户密码为 myuserpassword。
将上述值替换为你的实际需求,这一功能非常适合快速初始化。

3.启动服务

在 docker-compose.yml 文件所在目录,打开终端并运行:

docker compose up -d

-d 参数表示在后台运行,容器启动后不会阻塞终端。
首次运行可能需要下载 MySQL 镜像,请耐心等待。

4. 验证和连接

检查容器状态:

docker compose ps

输出应显示 mysql 服务状态为 Up,表示运行正常。

连接 MySQL,使用 MySQL 客户端:

mysql -h localhost -u root -p

输入之前设置的密码(如 MYPASSWORD),成功连接后即可看到 MySQL 提示符。

5. 停止和清理

使用完成后,运行以下命令停止并移除容器:

docker compose down

这会停止并删除容器、网络和卷,但数据仍保存在 mysql_data 卷中,除非手动清理。

注意事项

数据持久化mysql_data 卷确保数据在容器删除后仍可访问,建议定期备份。
安全性:暴露 3306 端口可能存在风险,生产环境建议使用防火墙或 Docker 网络隔离。
调试
查看日志:

docker logs mysql

进入容器

docker exec -it mysql bash

结论

通过 docker-compose 部署 MySQL 是一种高效、灵活的方式,适合快速搭建开发或测试环境。本文提供了从基础配置到高级选项的完整指南,包括数据持久化、自动初始化和故障排查方法。你可以根据实际需求调整配置,例如更改端口、密码或添加初始化脚本。

相关文章:

  • 【蓝桥】二分法
  • DP-最长公共子序列
  • 【Alertmanager】alertmanager告警系统原理剖析与应用实战,应有尽有非常全面
  • Qt能正常编译和执行,但是文本报错找不到文件
  • 程函方程的详细推导
  • MySQL_事务的四大特性
  • 【网络安全 | 漏洞挖掘】价值$40000:从路径遍历升级至RCE
  • CSS三大特性——继承、优先级与层叠
  • Redis的预备知识
  • C++中间件DDS介绍
  • 如何从共炮点数据构建速度场,为射线层析或全波形反演提供初始模型(DeepSeek R1回答)
  • AI大模型-提示工程学习笔记13-自动推理并使用工具
  • 52. 类型双关union
  • 使用vue3框架vue-next-admin导出表格excel(带图片)
  • 获取钉钉OA审批数据
  • AI工作流+专业知识库+系统API的全流程任务自动化
  • java练习(33)
  • zookeeper集群配置
  • SAP:SAP的内存管理详解
  • C++ 模板 简单易懂
  • 俄总理:2024年俄罗斯GDP增长4.3%
  • 厦门国贸去年营收约3544亿元,净利润同比减少67.3%
  • 牛市早报|外汇局:4月以来外汇市场交易保持平稳,跨境资金延续净流入
  • 刘庆峰:关税对当前业务影响较小,有信心和底气在底座大模型上做到第一阵营
  • 根据学习教育安排,上海市委中心组专题学习总书记力戒形式主义官僚主义重要论述
  • 文甦任四川乐山市委副书记,曾赴外交部挂职副司长