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

在腾讯云 CVM(云服务器)上通过 Docker 快速部署 Nginx、MySQL 和 Redis 的最新稳定版,最推荐的方式是使用 docker-compose。这种方式可以将所有服务的配置、镜像版本和网络关系集中管理,避免命令繁琐且易于维护。

以下是完整的操作步骤:

第一步:环境准备与安装 Docker

首先登录到你的腾讯云 CVM,执行以下命令检查并安装 Docker 及 Docker Compose(如果尚未安装)。

# 1. 更新软件源
sudo apt-get update

# 2. 安装 Docker Engine (以 Ubuntu/Debian 为例)
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

# 3. 启动 Docker 服务并设置开机自启
sudo systemctl enable docker
sudo systemctl start docker

# 4. 安装 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-compose --version

注意:如果你使用的是 CentOS,请将 apt-get 替换为 yumdnf,Docker 官方脚本同样适用。


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

创建一个文件夹用于存放配置,并编写 docker-compose.yml 文件。这里我们使用最新的稳定版标签(目前通常为 MySQL 8.0, Redis 7.x, Nginx 最新稳定版)。

mkdir ~/nginx-mysql-redis
cd ~/nginx-mysql-redis

新建 docker-compose.yml 文件:

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_net

  # --- MySQL 服务 ---
  mysql:
    image: mysql:8.0
    container_name: my_mysql
    restart: always
    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
    networks:
      - app_net
    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 your_redis_password  # 开启持久化并设置密码
    networks:
      - app_net

networks:
  app_net:
    driver: bridge

配置说明:

  • Nginx: 挂载了 ./nginx/html (网页文件) 和 ./nginx/conf.d (配置文件)。
  • MySQL: 使用 mysql:8.0,挂载数据到本地防止重启丢失,设置了环境变量(账号密码)。
  • Redis: 使用 redis:7-alpine (轻量级),开启了 AOF 持久化 (--appendonly yes),并设置了访问密码。
  • 安全提示:请务必将 YAML 中的 your_strong_password_here 等占位符替换为你自己的强密码。

第三步:创建必要的目录结构

为了让 Nginx 能够正常读取配置和静态文件,需要手动创建对应的目录:

mkdir -p nginx/html nginx/conf.d mysql/data mysql/init redis/data

你可以放一个简单的测试页面到 nginx/html 目录下:

echo "<h1>Hello from Docker on Tencent Cloud!</h1>" > nginx/html/index.html

第四步:启动服务

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

docker-compose up -d
  • -d: 后台运行模式。
  • 首次运行会自动拉取镜像(latest, 8.0, 7-alpine),根据网络情况可能需要几分钟。

第五步:验证与后续操作

1. 查看容器状态

docker-compose ps

确保所有服务的 STATUS 都是 Up

2. 查看日志

如果启动失败,可以查看日志排查:

docker-compose logs -f nginx
docker-compose logs -f mysql
docker-compose logs -f redis

3. 腾讯云防火墙配置(关键步骤)

Docker 只是开放了容器内部的端口,你还需要在 腾讯云控制台 放行端口,否则外部无法访问。

  1. 登录 腾讯云控制台。
  2. 进入 云服务器 (CVM) -> 找到你的实例 -> 点击 更多 -> 安全组
  3. 编辑安全组规则,添加入站规则:
    • 协议类型: TCP
    • 端口范围: 80, 443, 3306, 6379 (或者只开放特定业务需要的端口,生产环境建议不要直接暴露 3306 和 6379 到公网,仅对特定 IP 开放或通过内网连接)。
    • 来源: 0.0.0.0/0 (允许全网) 或指定你的办公 IP。

4. 停止与重启

  • 停止服务:docker-compose down
  • 重启服务:docker-compose restart

常见问题提示

  1. MySQL 字符集问题:如果遇到中文乱码,可以在 mysqlcommand 中添加 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
  2. Redis 连接被拒:如果在应用端连接 Redis 报错,请确认 Redis 配置中是否开启了 bind 0.0.0.0(默认 alpine 镜像通常绑定所有网卡,但需检查 requirepass 密码是否正确传入)。
  3. 数据安全:生产环境中,建议将 volumes 指向云盘的独立挂载点,或者定期备份 mysql/dataredis/data 目录。
未经允许不得转载:CLOUD技术博 » 腾讯云cvm docker安装nginx、mysql、redis最新稳定版?