docker部署Mysql并实现持久化存储

该博客介绍如何使用docker-compose部署Mysql,强调了重置密码、导入表结构和实现持久化存储的重要性。通过设置volume确保数据在容器删除后仍能保留,并提供了目录结构、相关文件内容和启动步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目标

  1. 使用docker部署Mysql
    1. 重置密码
    2. 导入表结构
  2. 持久化存储(即使删除容器的情况下)

目录结构

服务器上我的目录结构如下

root/docker/项目名称
├── mysql
│   ├── Dockerfile
│   ├── present.sql
│   ├── privileges.sql
│	└── setup.sh
└── docker-compose.yml

docker-compose.yml

version字段要根据自己使用的docker版本来决定。docker版本与此version的对应关系详见
restart:always表示容器退出之后自动重启。

version: "3"
services: 
    mysql:
        build: ./mysql
        restart: always
        volumes:
            - "present-data-mysql:/var/lib/mysql:rw"
        ports: 
            - "3306:3306"
volumes:
    present-data-mysql: {}

ps:如果先创建卷然后使用它的话,会遇到Named volume "xxxx" is used in service "mysql" but no declaration was found in the vol

### Docker部署MySQL实现数据持久化 #### 准备工作 在开始前,确保Docker环境已经正确安装和配置。接着,需要从Docker Hub获取最新的MySQL镜像版本。 ```bash docker pull mysql ``` 此命令会下载官方维护的最新版MySQL镜像文件[^5]。 #### 创建必要的目录结构 为了使MySQL的数据能够被持久保存,在主机上指定位置创建一个新的目录用于存放MySQL的相关数据文件: ```bash mkdir ~/mysql_data ``` 这一步骤为后续的数据卷挂载做好准备,使得容器内的特定路径可以直接映射到宿主机上的这个新创建的文件夹内。 #### 启动带有持久化MySQL实例 利用`docker run`命令启动新的MySQL服务的同时完成数据持久化的设定。下面是一条完整的命令示例,其中包含了端口转发、命名容器以及最重要的部分——通过`-v`参数指定了两个不同类型的挂载点:一个是针对配置文件的读写权限较低的一般性挂载;另一个则是至关重要的数据库实际存储区域的绑定[^2]。 ```bash docker run --name=mysql-instance \ -p 3306:3306 \ -v ~/mysql_conf:/etc/mysql/conf.d \ -v ~/mysql_data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=my-secret-password \ -d mysql ``` 这里特别注意的是`MYSQL_ROOT_PASSWORD`环境变量用来初始化root用户的登录密码,而最后面跟随着的基础镜像名称则决定了要使用的具体MySQL版本。 #### 验证与测试 一旦上述操作顺利完成,可以通过多种方式验证MySQL是否正常运作及其数据确实得到了有效的保护措施。比如连接至刚建立的服务进行简单的SQL查询活动,或是直接查看宿主机对应目录下的内容变化情况来确认数据更新是否同步到了外部磁盘空间中[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值