在腾讯云 CVM(云服务器)上通过 Docker 安装 Nginx、MySQL 和 Redis 的最新稳定版,最推荐的方式是使用 docker-compose。它能一键编排所有服务,管理配置和数据卷,避免手动输入复杂的启动命令。
以下是完整的操作步骤:
1. 环境准备与登录
首先,确保你的 CVM 已安装 Docker 和 Docker Compose。如果尚未安装,请在终端执行以下命令(以 Ubuntu/CentOS 为例):
# 更新包索引
sudo apt-get update || sudo yum update -y
# 安装 Docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
# 安装 Docker Compose (如果系统未自带)
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# 验证安装
docker --version
docker-compose --version
注意:如果是首次运行 Docker 命令可能需要添加当前用户到 docker 组:
sudo usermod -aG docker $USER,然后重新登录或执行newgrp docker。
2. 创建项目目录与配置文件
在服务器上创建一个专门用于存放配置的文件夹,并进入该目录:
mkdir -p ~/nginx-mysql-redis && cd ~/nginx-mysql-redis
创建 docker-compose.yml 文件。这里我们使用最新的稳定标签(目前通常为 latest,即对应最新的稳定版本),并配置了数据持久化(防止容器删除后数据丢失)。
nano docker-compose.yml
将以下内容复制粘贴进去(请根据实际需求修改密码和网络端口):
version: '3.8'
services:
# --- Nginx ---
nginx:
image: nginx:latest
container_name: my_nginx
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/html:/usr/share/nginx/html
- ./nginx/conf.d:/etc/nginx/conf.d
depends_on:
- mysql
- redis
networks:
- app-network
# --- MySQL ---
mysql:
image: mysql:8.0
container_name: my_mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: root_password_123456 # 【重要】请修改为强密码
MYSQL_DATABASE: test_db
MYSQL_USER: app_user
MYSQL_PASSWORD: app_password_123456 # 【重要】请修改为强密码
ports:
- "3306:3306"
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/logs:/var/log/mysql
networks:
- app-network
command: --default-authentication-plugin=mysql_native_password
# --- Redis ---
redis:
image: redis:7-alpine
container_name: my_redis
restart: always
ports:
- "6379:6379"
volumes:
- ./redis/data:/data
command: redis-server --appendonly yes --requirepass redis_password_123456 # 【重要】设置密码并开启持久化
networks:
- app-network
networks:
app-network:
driver: bridge
目录结构说明:
为了保持整洁,我们在 docker-compose up 之前需要手动创建对应的空目录,Docker 会自动挂载它们:
mkdir -p nginx/html nginx/conf.d
mkdir -p mysql/data mysql/logs
mkdir -p redis/data
3. 启动服务
配置完成后,使用以下命令启动所有容器:
docker-compose up -d
-d表示后台运行。- 如果需要查看日志确认是否启动成功:
docker-compose logs -f
4. 腾讯云 CVM 安全组配置(关键步骤)
这一步非常重要。默认情况下,CVM 的安全组只开放了 SSH 端口。你需要登录 腾讯云控制台 -> 云主机 (CVM) -> 安全组,添加入站规则,放行以下端口:
| 协议 | 端口范围 | 描述 |
|---|---|---|
| TCP | 80, 443 | Nginx Web 服务 |
| TCP | 3306 | MySQL 数据库 |
| TCP | 6379 | Redis 缓存 |
| TCP | 22 | SSH (通常已有) |
安全建议:生产环境中,建议不要直接对公网开放 3306 和 6379 端口。如果可能,仅允许特定的 IP 访问这些端口,或者通过 Nginx 反向X_X/内网通信来访问数据库。
5. 验证与常用操作
验证服务状态
docker-compose ps
你应该看到三个容器状态均为 Up。
检查具体服务
- Nginx: 浏览器访问
http://<你的CVM公网IP>,应看到默认的 Nginx 欢迎页。 - MySQL:
docker exec -it my_mysql mysql -uroot -proot_password_123456 - Redis:
docker exec -it my_redis redis-cli -a redis_password_123456
停止与重启
# 停止所有服务
docker-compose down
# 重启所有服务
docker-compose restart
更新镜像
如果需要升级到最新的小版本(例如从 MySQL 8.0.3x 升级到 8.0.3y),只需执行:
docker-compose pull
docker-compose up -d
常见问题提示
- 权限问题:如果挂载的目录(如
./mysql/data)是 root 创建的,而容器内是普通用户运行,可能会导致权限拒绝。如果发现无法写入数据,可以运行sudo chown -R 999:999 ./mysql/data(针对 MySQL 8.0)。 - 内存不足:Redis 和 MySQL 比较消耗内存。如果你的 CVM 配置较低(如 1核 2G),建议调整 MySQL 的
innodb_buffer_pool_size参数或在docker-compose.yml中限制资源配额。 - 数据安全:务必记得修改配置文件中预设的
root_password等弱密码,并定期备份./mysql/data和./redis/data目录。
云计算