在腾讯云 CVM(云服务器)上通过 Docker 安装 Nginx、MySQL 和 Redis,最推荐的方式是使用 Docker Compose。这种方式可以将所有服务定义在一个 docker-compose.yml 文件中,方便统一管理、一键启动和版本控制。
以下是基于最新稳定版(截至 2024 年)的完整部署方案。
前置准备:安装 Docker 环境
如果你尚未在 CVM 上安装 Docker 和 Docker Compose,请先执行以下命令(以 Ubuntu/Debian 为例,CentOS 类似):
# 1. 更新软件包索引
sudo apt-get update
# 2. 安装 Docker Engine
sudo apt-get install -y docker.io
# 3. 安装 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
# 4. 验证安装
docker --version
docker-compose --version
注意:如果是生产环境,建议将当前用户加入 docker 组,避免每次运行都加
sudo:
sudo usermod -aG docker $USER(需重新登录生效)
第二步:创建项目目录与配置文件
在 CVM 上创建一个专门用于存放配置文件的目录,并编写 docker-compose.yml。
mkdir ~/my-web-stack
cd ~/my-web-stack
新建 docker-compose.yml 文件:
nano docker-compose.yml
将以下内容复制进去。这里使用了官方仓库的最新标签(latest),它会自动指向最新的稳定版本。
version: '3.8'
services:
# --- Nginx ---
nginx:
image: nginx:latest
container_name: my-nginx
ports:
- "80:80"
- "443:443"
volumes:
# 挂载自定义配置文件
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/html:/usr/share/nginx/html
depends_on:
- mysql
- redis
restart: always
networks:
- web-net
# --- MySQL ---
mysql:
image: mysql:8.0
container_name: my-mysql
environment:
MYSQL_ROOT_PASSWORD: your_strong_password_here
MYSQL_DATABASE: test_db
MYSQL_USER: app_user
MYSQL_PASSWORD: app_password
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
# 可选:挂载初始化脚本或日志
- ./mysql/init:/docker-entrypoint-initdb.d
restart: always
networks:
- web-net
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 5
# --- Redis ---
redis:
image: redis:7-alpine
container_name: my-redis
command: redis-server --appendonly yes --requirepass your_redis_password
ports:
- "6379:6379"
volumes:
- redis_data:/data
restart: always
networks:
- web-net
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
volumes:
mysql_data:
redis_data:
networks:
web-net:
driver: bridge
⚠️ 重要安全提示
- 密码修改:请务必将
your_strong_password_here、app_password和your_redis_password替换为强密码。 - 端口暴露:示例中开放了 80, 443, 3306, 6379。
- Nginx (80/443):通常必须开放。
- MySQL (3306) & Redis (6379):强烈建议不要直接暴露在公网。
- 最佳实践:在腾讯云控制台的安全组中,仅允许你的开发机 IP 访问这两个端口,或者不开放这些端口,让应用容器通过内部网络通信。
- 如果必须在公网测试,请确保密码极其复杂。
第三步:补充必要的子目录结构
为了让 Nginx 正常工作,需要创建对应的目录结构:
mkdir -p nginx/conf.d nginx/html
# 创建默认首页
echo "<h1>Hello from Docker on Tencent Cloud!</h1>" > nginx/html/index.html
你可以创建一个简单的 Nginx 配置文件来反向X_X(可选):
cat > nginx/conf.d/default.conf << EOF
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
# 示例:后端 API X_X到本地其他服务(如需)
# location /api/ {
# proxy_pass http://backend:8000;
# }
}
EOF
第四步:启动服务
在项目目录下执行:
docker-compose up -d
-d表示后台运行。- 首次运行会自动拉取镜像(可能需要几分钟)。
第五步:验证与查看状态
-
查看容器状态:
docker-compose ps所有服务的
STATUS应显示为Up。 -
查看日志(排查问题):
# 查看所有日志 docker-compose logs -f # 只看 Nginx 日志 docker-compose logs -f nginx -
浏览器访问:
打开浏览器,输入你的 CVM 公网 IP(例如http://<你的CVM_IP>),你应该能看到 "Hello from Docker…" 页面。 -
检查数据库连接(可选):
进入 MySQL 容器测试连接:docker exec -it my-mysql mysql -uroot -pyour_strong_password_here
进阶建议:腾讯云环境优化
-
安全组配置:
登录腾讯云控制台 -> 云主机 -> 安全组。- 放行:TCP 80, 443 (Web 服务)。
- 限制:TCP 3306, 6379 (数据库/缓存)。仅添加你个人电脑的 IP,不要对 0.0.0.0/0 开放,防止被暴力破解。
-
持久化备份:
上面的配置使用了 Docker Volumes (mysql_data,redis_data),数据存储在 CVM 本地磁盘。- 重要:如果 CVM 实例被释放或重装系统,数据会丢失。建议定期使用
docker run ... tar命令备份卷数据,或使用腾讯云提供的云硬盘快照功能。
- 重要:如果 CVM 实例被释放或重装系统,数据会丢失。建议定期使用
-
更换为特定版本:
如果你不需要“最新”版本,而是需要特定的稳定版(例如 MySQL 5.7 或 Redis 6),只需修改image字段:image: mysql:5.7image: redis:6-alpine
现在,你的腾讯云 CVM 已经拥有了一个标准的 Nginx + MySQL + Redis 容器化环境。
云服务器