腾讯云cvm docker安装nginx、mysql、redis最新稳定版?

在腾讯云 CVM(云服务器)上通过 Docker 安装 Nginx、MySQL 和 Redis 的最新稳定版,最推荐的方式是使用 docker-compose 进行编排。这种方式可以一键启动所有服务,并方便管理配置和数据持久化。

以下是完整的操作步骤,假设你使用的是 Ubuntu 20.04/22.04 或 CentOS 7/8 系统(其他 Linux 发行版命令类似)。

第一步:环境准备

首先确保你的 CVM 已经安装了 Docker 和 Docker Compose。如果未安装,请执行以下命令:

# 1. 更新包索引
sudo apt-get update -y  # Ubuntu/Debian
# 或者 sudo yum update -y # CentOS/RHEL

# 2. 安装 Docker (使用官方脚本最快)
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

# 3. 安装 Docker Compose 插件 (新版 Docker 已内置 compose 命令)
sudo apt-get install docker-compose-plugin -y
# 或者验证版本
docker compose version

注意:安装完成后,建议将当前用户加入 docker 组,避免每次都要输 sudo

sudo usermod -aG docker $USER
newgrp docker

第二步:创建项目目录与配置文件

我们在 /root/docker-stack 目录下创建一个项目文件夹,并编写 docker-compose.yml 文件。

mkdir -p /root/docker-stack/nginx/conf.d
mkdir -p /root/docker-stack/mysql/data
mkdir -p /root/docker-stack/redis/conf
cd /root/docker-stack

1. 编写 docker-compose.yml

此文件定义了三个服务的最新稳定版镜像、端口映射、环境变量及数据卷挂载。

关键说明

  • Nginx: 默认使用 latest 标签(通常指向最新稳定版),并挂载自定义配置文件。
  • MySQL: 使用 mysql:8.0mysql:9.0(取决于 MySQL 9.0 是否被标记为稳定,目前生产环境建议锁定 8.09.0,此处以 8.0 为例,它是目前最广泛使用的稳定版)。设置 root 密码。
  • Redis: 使用 redis:7-alpine,轻量且稳定。开启持久化 AOF。

创建文件:

nano docker-compose.yml

粘贴以下内容(请根据你的需求修改密码和端口):

version: '3.8'

services:
  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-net

  mysql:
    image: mysql:8.0
    container_name: my-mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: your_strong_password_123! # 请修改为强密码
      MYSQL_DATABASE: test_db
      MYSQL_USER: app_user
      MYSQL_PASSWORD: app_password_123!             # 请修改为强密码
    ports:
      - "3306:3306"
    volumes:
      - ./mysql/data:/var/lib/mysql
    command: --default-authentication-plugin=mysql_native_password
    networks:
      - app-net

  redis:
    image: redis:7-alpine
    container_name: my-redis
    restart: always
    ports:
      - "6379:6379"
    volumes:
      - ./redis/conf/redis.conf:/usr/local/etc/redis/redis.conf
    command: redis-server /usr/local/etc/redis/redis.conf
    networks:
      - app-net

networks:
  app-net:
    driver: bridge

2. 补充必要的配置文件

为了让 Nginx 正常工作,我们需要一个默认的 index.html;为了让 Redis 更安全,我们创建一个简单的配置文件。

创建 Nginx 默认页面:

mkdir -p ./nginx/html
echo "<h1>Hello from Nginx on Tencent Cloud!</h1>" > ./nginx/html/index.html

创建 Redis 配置文件 (启用密码保护):
由于 docker-compose.yml 中引用了 ./redis/conf/redis.conf,我们需要手动创建它。为了安全,建议设置密码。

cat > ./redis/conf/redis.conf <<EOF
# 绑定本地监听,禁止外部直接连接(如果需要网络访问,需配合防火墙策略)
bind 0.0.0.0

# 设置密码 (请替换为你的密码)
requirepass your_redis_password_123!

# 开启持久化 (AOF)
appendonly yes

# 关闭 RDB 快照 (可选,根据需求调整)
save ""
EOF

第三步:启动服务

在项目目录下执行启动命令:

docker compose up -d
  • -d: 后台运行。
  • 首次运行会自动拉取镜像并创建容器。

第四步:验证与检查

  1. 查看容器状态

    docker compose ps

    确保所有服务的 STATUS 都是 Up

  2. 测试 Nginx
    在浏览器访问 http://<你的CVM公网IP>,应该能看到 "Hello from Nginx…"。

  3. 测试 MySQL

    docker exec -it my-mysql mysql -uroot -p
    # 输入你在 yaml 中设置的 root 密码
    # 登录成功后输入 exit
  4. 测试 Redis

    docker exec -it my-redis redis-cli -a your_redis_password_123! ping
    # 应返回 PONG

第五步:腾讯云 CVM 安全组配置(非常重要)

Docker 内部服务启动后,默认只监听容器网络。必须在腾讯云控制台开放相应端口,否则外部无法访问。

  1. 登录 腾讯云控制台。
  2. 进入 云服务器 (CVM) -> 找到你的实例 -> 点击 安全组
  3. 编辑安全组规则,添加入方向规则:
    • 协议类型: TCP
    • 端口范围:
      • 80 (Nginx Web)
      • 443 (HTTPS, 如需)
      • 3306 (MySQL)
      • 6379 (Redis)
    • 授权对象: 0.0.0.0/0 (允许所有 IP,生产环境建议仅限制特定 IP 段)

安全警告:在生产环境中,强烈不建议直接将 MySQL (3306) 和 Redis (6379) 端口对 0.0.0.0/0 开放。

  • 最佳实践:仅在 Nginx 反向X_X后端服务,或者将数据库端口限制为你自己的办公 IP 地址。
  • Redis 加固:务必在 redis.conf 中设置 requirepass,并在安全组中限制来源 IP。

进阶建议

  1. 数据备份:虽然挂载了卷 (volumes),但建议定期使用 docker compose cp 或脚本将 ./mysql/data./redis/conf 备份到腾讯云 COS 对象存储。
  2. 日志管理:生产环境建议配置 Docker 的日志轮转策略,防止日志占满磁盘。可以在 docker-compose.yml 的服务下添加 logging 配置块。
  3. 自动重启restart: always 已配置,即使 CVM 重启或 Docker 崩溃,服务也会自动拉起。
未经允许不得转载:云知识CLOUD » 腾讯云cvm docker安装nginx、mysql、redis最新稳定版?