当前位置: 首页 > 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.0restart: alwaysports:- "3306:3306"environment:MYSQL_ROOT_PASSWORD: MYPASSWORDvolumes:- 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 是一种高效、灵活的方式,适合快速搭建开发或测试环境。本文提供了从基础配置到高级选项的完整指南,包括数据持久化、自动初始化和故障排查方法。你可以根据实际需求调整配置,例如更改端口、密码或添加初始化脚本。

http://www.lryc.cn/news/540609.html

相关文章:

  • blender笔记2
  • 特殊符号_符号图案_特殊符号大全
  • Unity学习part4
  • 【AI绘画】大卫• 霍克尼风格——自然的魔法(一丹一世界)
  • MySQL日志undo log、redo log和binlog详解
  • C++中的指针
  • 拆解微软CEO纳德拉战略蓝图:AI、量子计算、游戏革命如何改写未来规则!
  • 智能算法如何优化数字内容体验的个性化推荐效果
  • MATLAB在数据分析和绘图中的应用:从基础到实践
  • AI客服-接入deepseek大模型到微信(本地部署deepseek集成微信自动收发消息)
  • Host文件没有配置ip解析,导致请求接口速度慢
  • excel导入Mysql中时间格式异常
  • vue 判断一个属性值,如果是null或者空字符串或者是空格没有值的情况下,赋值为--
  • JavaWeb-Tomcat服务器
  • vue语法---样式操作-行内样式
  • 封装一个echarts的组件
  • 计算机网络安全之一:网络安全概述
  • Linux 性能调优简单指南
  • 第十一章: vue2-3 生命周期
  • 【算法基础】--前缀和
  • 输入搜索、分组展示选项、下拉选取,el-select 实现:即输入关键字检索,返回分组选项,选取跳转到相应内容页 —— VUE 项目-全局模糊检索
  • Web入侵实战分析-常见web攻击类应急处置实验2
  • DeepSeek:AI商业化的新引擎与未来蓝图
  • 从零开始学习PX4源码9(部署px4源码到gitee)
  • wps中zotero插件消失,解决每次都需要重新开问题
  • 【Python 语法】collections 模块的字典类 defaultdict
  • 《论系统需求分析方法》写作心得 - 系统分析师
  • Jupyter里面的manim编程学习
  • Python之装饰器二 带参数的装饰器
  • rk3588/3576板端编译程序无法运行视频推理