Ubuntu 22.04 快速部署 MySQL + Redis 测试环境(Docker Compose)
·
一、安装 Docker 环境
# 安装依赖
sudo apt update
sudo apt install -y ca-certificates curl gnupg
# 创建密钥环目录
sudo mkdir -p /etc/apt/keyrings
# 下载并添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 添加 Docker APT 软件源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 更新软件包索引
sudo apt update
# 安装 Docker 引擎及相关组件
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin
# 验证安装
sudo docker --version
# 启动并启用开机自启
sudo systemctl start docker
sudo systemctl enable docker
🔐 建议将当前用户加入
docker组以避免每次使用sudo:sudo usermod -aG docker $USER重新登录终端生效。
二、创建测试用 docker-compose.yml(非持久化)
此版本适用于快速启动、临时测试,容器删除后数据将丢失。
# 创建项目目录
mkdir ~/docker-mysql-redis && cd ~/docker-mysql-redis
✅ docker-compose.yml(测试版 - 无数据卷)
version: '3.8'
services:
mysql:
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:5.7.40
container_name: mysql-5.7.40
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: dbb_shop
ports:
- "3306:3306"
command: [
"--bind-address=0.0.0.0",
"--character-set-server=utf8mb4",
"--collation-server=utf8mb4_unicode_ci"
]
# ⚠️ 无 volumes,数据不持久化
redis:
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/redis:6-alpine
container_name: redis-6.0
restart: unless-stopped
ports:
- "6379:6379"
command: [
"--requirepass", "VwxY-z345A+b",
"--appendonly", "yes"
]
# ⚠️ 虽开启 AOF,但无挂载卷,重启后仍会丢失数据
启动服务
docker-compose up -d
三、客户端连接操作
🔌 连接 MySQL
mysql -h 127.0.0.1 -P 3306 -u root -p123456
提示:
-p后直接跟密码(无空格),或使用-p单独输入更安全。
🔌 连接 Redis
redis-cli -h 127.0.0.1 -p 6379 -a VwxY-z345A+b
建议首次连接后通过
ping测试连通性:127.0.0.1:6379> ping PONG
四、进阶:支持数据持久化的 docker-compose.yml
当您需要保留数据(如用于预发环境或本地开发),请使用以下版本,通过 volumes 挂载数据目录。
✅ docker-compose-persistent.yml(持久化版)
version: '3.8'
services:
mysql:
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:5.7.40
container_name: mysql-5.7.40
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: dbb_shop
ports:
- "3306:3306"
command: [
"--bind-address=0.0.0.0",
"--character-set-server=utf8mb4",
"--collation-server=utf8mb4_unicode_ci"
]
volumes:
- ./data/mysql:/var/lib/mysql # 数据文件持久化
- ./conf/mysql:/etc/mysql/conf.d # 可选:自定义配置
redis:
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/redis:6-alpine
container_name: redis-6.0
restart: unless-stopped
ports:
- "6379:6379"
command: [
"--requirepass", "VwxY-z345A+b",
"--appendonly", "yes"
]
volumes:
- ./data/redis:/data # AOF 和 RDB 文件保存位置
启动持久化服务
docker-compose -f docker-compose-persistent.yml up -d
📁 目录说明:
./data/mysql: 存放 MySQL 数据./data/redis: 存放 Redis 持久化文件./conf/mysql: 可放置.cnf配置文件进行定制
五、常用管理命令
| 功能 | 命令 |
|---|---|
| 查看容器状态 | docker-compose ps |
| 查看日志 | docker-compose logs -f |
| 停止服务 | docker-compose down |
| 停止并删除数据(慎用) | docker-compose down -v |
六、总结
| 版本 | 用途 | 是否推荐用于生产 |
|---|---|---|
| 默认版(无 volume) | 快速测试、CI/CD 临时环境 | ❌ 不推荐 |
| 持久化版(有 volume) | 开发、预发、需保留数据的场景 | ✅ 推荐 |
💡 小贴士:
- 使用华为云 SWR 镜像加速拉取速度。
- 生产环境建议额外配置:网络隔离、密码加密、定期备份、资源限制等。
- 可结合 Jenkins Pipeline 实现自动化部署(参考您的 CCE 发布流程)。
更多推荐
所有评论(0)