第一步:在云服务器上部署MySQL和Redis
1. 拉取镜像
sudo docker pull mysql:8.0
sudo docker pull redis:7-alpine
# alpine版本非常小巧,适合生产环境。如果需要其他版本,可以替换`7-alpine`为`6.0`等。2. 创建自定义网络(可选但推荐)
创建一个专用的Docker网络,可以让容器通过容器名互相访问,更加灵活。
sudo docker network create project-net3. 运行MySQL容器
sudo docker run -d \
--name mysql-server \
--network project-net \
--restart unless-stopped \
-p 3306:3306 \
-v /home/docker/mysql/conf:/etc/mysql/conf.d \
-v /home/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_DATABASE=数据库名称 \
mysql:8.0 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci
# 参数解释:
# -d: 后台运行
# --name: 给容器起个名字
# --network: 加入刚才创建的`project-net`网络
# --restart unless-stopped: Docker服务重启时,这个容器也会自动重启(实现开机自启)
# -p 3306:3306: 将容器的3306端口映射到宿主机的3306端口
# -v: 挂载数据卷,将配置和数据持久化到宿主机,防止容器删除后数据丢失
# -e: 设置环境变量
# MYSQL_ROOT_PASSWORD=123456: 设置root用户的密码(请修改为强密码!)
# MYSQL_DATABASE=数据库名称: 容器启动时自动创建名为`数据库名称`的数据库
# 最后一行是传入MySQL服务器的启动参数,设置默认字符集重要安全提醒:123456是非常弱的密码,在生产环境中务必使用更复杂强壮的密码!
4. 运行Redis容器
sudo docker run -d \
--name redis-server \
--network project-net \
--restart unless-stopped \
-p 6379:6379 \
-v /home/docker/redis/data:/data \
redis:7-alpine \
redis-server --requirepass "your_redis_password_123" --appendonly yes
# 参数解释:
# --requirepass: 设置Redis的访问密码(请修改为强密码!)
# --appendonly yes: 开启Redis的持久化模式第二步:迁移本地MySQL数据到云服务器
1. 在【本地机器】上导出数据
打开你本地的命令行或终端,使用mysqldump工具导出数据。
# 注意:这是在你的本地电脑上执行,不是在云服务器上!
mysqldump -u root -p 数据库名称 > 数据库名称_project.sql
# 输入你的本地MySQL密码后,会在当前目录生成一个`数据库名称_project.sql`文件2. 将导出的SQL文件上传到【云服务器】
你可以使用scp命令或FTP工具(如FileZilla)将文件上传到云服务器的某个目录,例如/home/。
# 在本地终端执行,将your_server_ip换成你云服务器的公网IP
scp ./数据库名称_project.sql root@your_server_ip:/home/3. 在【云服务器】上导入数据
SSH连接到你的云服务器,然后执行以下命令,将数据导入到Docker中的MySQL容器。
# 将SQL文件复制到MySQL容器内部
sudo docker cp /home/数据库名称_project.sql mysql-server:/tmp/
# 进入MySQL容器的bash终端
sudo docker exec -it mysql-server bash
# 现在你在容器的命令行里了,执行导入操作
mysql -u root -p 数据库名称 < /tmp/数据库名称_project.sql
# 输入之前启动MySQL容器时设置的密码(上面的例子是`123456`)
# 导入完成后,退出容器
exit