在腾讯云 CVM(云服务器)上安装 Docker 并部署 Nginx、MySQL 和 Redis 的最新稳定版,最推荐的方式是使用 Docker Compose 进行编排。这种方式可以将所有服务配置在一个 docker-compose.yml 文件中,方便一键启动、管理和更新。
以下是完整的操作指南:
第一步:在 CVM 上安装 Docker 和 Docker Compose
首先通过 SSH 登录到你的腾讯云 CVM,执行以下命令安装 Docker Engine 和 Docker Compose(以 Ubuntu/Debian 为例,CentOS 逻辑类似):
# 1. 更新包索引
sudo apt-get update
# 2. 安装必要的依赖
sudo apt-get install -y ca-certificates curl gnupg lsb-release
# 3. 添加 Docker 官方 GPG 密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 4. 设置仓库
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
# 5. 安装 Docker Engine, CLI, Containerd
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 6. 验证安装
docker --version
docker compose version
注意:如果是 CentOS 系统,请将上述
apt-get相关命令替换为yum或dnf的安装方式,或者直接运行curl -fsSL https://get.docker.com | sh。
第二步:创建项目目录与配置文件
为了保持环境整洁,我们在 /opt 或 /root 下创建一个专用目录。
mkdir -p ~/my-app && cd ~/my-app
创建 docker-compose.yml 文件:
nano docker-compose.yml
将以下内容复制进去。注意:代码中已默认使用最新的稳定版标签(如 latest 通常指向当前最新稳定版,或者指定具体版本号如 mysql:8.0)。
version: '3.8'
services:
# Nginx 服务
nginx:
image: nginx:latest
container_name: my-nginx
restart: always
ports:
- "80:80"
- "443:443"
volumes:
# 挂载自定义配置文件(可选,若不需要自定义可注释掉)
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ./html:/usr/share/nginx/html:ro
depends_on:
- mysql
- redis
networks:
- app-network
# MySQL 服务 (使用 8.0 版本作为最新稳定版代表)
mysql:
image: mysql:8.0
container_name: my-mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_strong_password_123 # ⚠️ 请修改为你的强密码
MYSQL_DATABASE: mydb
MYSQL_USER: myuser
MYSQL_PASSWORD: mypassword123 # ⚠️ 请修改为你的强密码
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
- ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql:ro
networks:
- app-network
command: --default-authentication-plugin=mysql_native_password
# Redis 服务 (使用 7.2 版本作为最新稳定版代表)
redis:
image: redis:7.2-alpine
container_name: my-redis
restart: always
ports:
- "6379:6379"
volumes:
- redis_data:/data
command: redis-server --appendonly yes --requirepass your_redis_password # ⚠️ 请修改密码
networks:
- app-network
networks:
app-network:
driver: bridge
volumes:
mysql_data:
redis_data:
关键配置说明:
- 密码安全:请务必修改
MYSQL_ROOT_PASSWORD、MYSQL_PASSWORD以及 Redis 的requirepass。生产环境严禁使用弱口令。 - 端口映射:
- Nginx 暴露了 80 和 443 端口。
- MySQL 暴露了 3306 端口(重要:需确保在腾讯云控制台的安全组中放行该端口,否则外部无法连接)。
- Redis 暴露了 6379 端口(强烈建议:Redis 默认不建议直接暴露公网,如需远程访问,请在安全组限制 IP;本地开发可保留,生产环境建议仅内网访问)。
- 数据持久化:使用了
volumes,即使容器删除,数据也不会丢失。
第三步:准备辅助文件(可选但推荐)
为了让 Nginx 能正常工作,我们需要创建简单的目录结构。
# 创建目录
mkdir -p nginx html
# 创建一个简单的 index.html 测试页面
echo "<h1>Hello from Docker on Tencent Cloud!</h1>" > html/index.html
# (可选) 如果你需要自定义 Nginx 配置,可以在此处编写 nginx.conf,否则可以使用镜像默认配置。
# 如果不想挂载自定义配置,可以在 docker-compose.yml 中注释掉 volumes 下的 nginx 部分。
第四步:启动服务
在项目目录下执行启动命令:
# 后台启动所有服务
docker compose up -d
# 查看运行状态
docker compose ps
如果看到三个服务的状态都是 Up,则说明安装成功。
第五步:腾讯云安全组配置(至关重要)
Docker 只是让服务在服务器内部运行,如果云服务器的防火墙(安全组)没开,外部依然无法访问。
- 登录 腾讯云控制台。
- 进入 CVM -> 实例列表 -> 点击你的实例 ID。
- 找到 安全组 区域,点击“管理”或对应的安全组 ID。
- 点击 入方向 -> 新建规则,添加以下规则:
- Nginx: 协议 TCP,端口 80, 443,来源
0.0.0.0/0(或特定 IP)。 - MySQL: 协议 TCP,端口 3306,来源
0.0.0.0/0(生产环境建议仅允许特定 IP 访问,不要对全网开放)。 - Redis: 协议 TCP,端口 6379,来源
0.0.0.0/0(极度不推荐对公网开放,建议仅在应用服务器内网互通,或仅允许特定管理 IP)。
- Nginx: 协议 TCP,端口 80, 443,来源
常用维护命令
- 查看日志:
docker compose logs -f nginx docker compose logs -f mysql - 停止服务:
docker compose down - 重启服务:
docker compose restart - 更新到最新版本(如果有新版本发布):
docker compose pull docker compose up -d
总结
通过以上步骤,你已经在腾讯云 CVM 上利用 Docker 快速搭建了包含 Nginx、MySQL 8.0 和 Redis 7.2 的最新稳定版微服务架构。记得在生产环境中务必检查安全组策略和容器内的数据库密码安全性。
CLOUD云计算