在腾讯云 CVM(云服务器)上安装最新稳定版的 Nginx、MySQL 和 Redis,使用 Docker 是最灵活且隔离性好的方式。
重要提示:Docker Hub 上的“最新版”标签(latest)通常指向最新的开发版或不稳定版。为了生产环境的稳定性,建议明确指定具体的大版本稳定号(例如 MySQL 8.0, Nginx 1.24, Redis 7)。
以下是基于 Ubuntu 22.04 或 CentOS 7/8 的通用操作步骤。请确保你的 CVM 已开通公网安全组端口(80, 3306, 6379)。
第一步:安装 Docker 环境
首先需要在 CVM 上安装 Docker Engine。
1. Ubuntu / Debian
# 更新软件包索引
sudo apt-get update
# 安装依赖
sudo apt-get install -y ca-certificates curl gnupg lsb-release
# 添加 Docker 官方 GPG 密钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 设置仓库
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
# 安装 Docker
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
2. CentOS / RedHat
# 安装 yum-utils
sudo yum install -y yum-utils
# 配置 Docker 官方源 (以 Docker CE 24.x 为例)
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装 Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
验证安装:运行
docker --version和docker compose version。
第二步:创建网络与目录结构
为了便于管理,我们创建一个专用网络,并将数据持久化到宿主机目录。
# 创建项目目录
mkdir -p ~/nginx-docker-project/{mysql-data,redis-data,nginx-html}
cd ~/nginx-docker-project
# 创建自定义 Docker 网络
docker network create my-app-network
第三步:编写 Docker Compose 文件
使用 docker-compose.yml 可以一键编排三个服务。我们将指定最新稳定版标签。
创建文件 docker-compose.yml:
version: '3.8'
services:
# --- Nginx ---
nginx:
image: nginx:1.25-alpine # 1.25 是最新稳定版,alpine 镜像体积小
container_name: nginx-container
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx-html:/usr/share/nginx/html
# 如需挂载配置文件,取消下面注释并准备 conf.d 目录
# - ./conf/nginx.conf:/etc/nginx/nginx.conf
networks:
- my-app-network
depends_on:
- mysql
- redis
# --- MySQL (8.0 是目前主流稳定版) ---
mysql:
image: mysql:8.0
container_name: mysql-container
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_strong_password # 【必须修改】
MYSQL_DATABASE: mydb
MYSQL_USER: myuser
MYSQL_PASSWORD: mypassword # 【必须修改】
ports:
- "3306:3306"
volumes:
- ./mysql-data:/var/lib/mysql
networks:
- my-app-network
command: --default-authentication-plugin=mysql_native_password
# --- Redis (7.2 是最新稳定版) ---
redis:
image: redis:7.2-alpine
container_name: redis-container
restart: always
ports:
- "6379:6379"
volumes:
- ./redis-data:/data
command: redis-server --appendonly yes --requirepass your_redis_password # 【必须修改】
networks:
- my-app-network
networks:
my-app-network:
driver: bridge
⚠️ 安全警告:
- 请务必将 YAML 中的
your_strong_password、mypassword替换为强密码。 - 生产环境中,强烈建议不要将数据库端口(3306, 6379)直接映射到公网(即去掉
ports部分),或者在腾讯云控制台的安全组中限制仅允许特定 IP 访问这些端口。
第四步:启动服务
在项目目录下执行:
# 后台启动所有服务
docker compose up -d
# 查看运行状态
docker compose ps
如果看到 Status 为 Up,说明安装成功。
第五步:后续配置与优化(腾讯云环境特有)
1. 配置 Nginx 反向X_X(可选)
如果你希望 Nginx 作为入口转发请求到后端应用(如 PHP/Java/Node),需要修改 ./nginx-html 下的 index.html 或添加 nginx.conf。
示例 nginx.conf 内容(放在 ./conf/nginx.conf):
events { worker_connections 1024; }
http {
server {
listen 80;
server_name _;
location / {
root /usr/share/nginx/html;
index index.html;
}
# 示例:转发 API 请求
# location /api {
# proxy_pass http://backend-service:8080;
# }
}
}
注意:如果使用自定义配置文件,需在 yaml 中取消对应的 volume 挂载注释。
2. 腾讯云安全组配置
登录 腾讯云控制台 -> 云主机 (CVM) -> 安全组。
确保以下端口已放行(入方向):
- 80 (HTTP)
- 443 (HTTPS)
- 3306 (MySQL) -> 建议仅对运维 IP 开放,或关闭此端口映射,通过内网连接
- 6379 (Redis) -> 建议仅对运维 IP 开放,或关闭此端口映射
3. 数据备份
由于使用了 volumes 挂载本地目录,数据实际上存储在 CVM 的系统盘上。
- 定期快照:在腾讯云控制台对 CVM 进行系统盘快照。
- 异地备份:建议编写脚本将
./mysql-data和./redis-data打包上传到腾讯云 COS(对象存储)。
常见问题排查
- 容器无法启动?
- 检查日志:
docker logs <container_name> - 常见原因:端口被占用(宿主机已有其他程序占用了 80 或 3306)、密码不符合策略。
- 检查日志:
- Nginx 无法访问?
- 确认 CVM 安全组是否放行了 80 端口。
- 确认浏览器使用的是
http://<CVM公网IP>。
- 如何升级版本?
- 修改
docker-compose.yml中的image版本号(例如从8.0改为8.0.35)。 - 执行
docker compose pull拉取新镜像。 - 执行
docker compose up -d重启容器(数据卷会自动保留)。
- 修改
通过以上步骤,你将在腾讯云 CVM 上获得一个基于最新稳定版的 Nginx + MySQL + Redis 开发/测试环境。
CLOUD云枢