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

在腾讯云 CVM 上通过 Docker 部署 Nginx、MySQL 和 Redis,核心思路是“容器化隔离” + “数据持久化”。别整那些虚头巴脑的套话,直接上干货。

第一步:环境准备(CVM 基础配置)

登录你的腾讯云 CVM,确保系统更新并安装 Docker。这里以 Ubuntu/Debian 为例(CentOS 逻辑类似)。

# 1. 更新软件源
sudo apt update && sudo apt upgrade -y

# 2. 安装 Docker(推荐官方脚本或 apt 源)
curl -fsSL https://get.docker.com | sh -s -- --mirror Aliyun
# 或者手动安装最新版(视具体发行版而定)
sudo apt install docker-ce docker-ce-cli containerd.io -y

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

# 4. 验证安装
docker version
docker run hello-world

注意:如果是生产环境,记得去腾讯云控制台给 CVM 的安全组开放对应端口(80, 443, 3306, 6379),否则网络连不上。


第二步:编写 Docker Compose 文件

单条命令启动三个服务容易乱,用 docker-compose 管理最稳妥。在项目目录下新建 docker-compose.yml。

这里选取各组件的最新稳定版标签(Stable Tag),例如 MySQL 通常用 latest 但生产建议指定具体小版本如 8.0,Redis 用 latest 即可,Nginx 同理。

version: '3.8'

services:
  # --- Nginx (Web 服务器) ---
  nginx:
    image: nginx:latest
    container_name: my-nginx
    ports:
      - "80:80"
      - "443:443"
    volumes:
      # 挂载配置文件(需提前创建 conf.d/nginx.conf)
      - ./conf/nginx.conf:/etc/nginx/nginx.conf
      # 挂载网站目录
      - ./html:/usr/share/nginx/html
    depends_on:
      - mysql
      - redis
    restart: always

  # --- 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:
      # 数据持久化到本地,防止容器删除后数据丢失
      - ./data/mysql:/var/lib/mysql
    command: --default-authentication-plugin=mysql_native_password
    restart: always

  # --- Redis (缓存) ---
  redis:
    image: redis:latest
    container_name: my-redis
    ports:
      - "6379:6379"
    volumes:
      # 数据持久化
      - ./data/redis:/data
    command: redis-server --appendonly yes --requirepass your_redis_password
    restart: always

关键点说明:

  1. 数据安全:volumes 部分至关重要。如果不挂载宿主机目录,容器一删,数据库和缓存数据全没。
  2. 密码安全:环境变量里的密码必须替换成你自己的强密码,严禁使用默认值。
  3. 依赖关系:Nginx 设置了 depends_on,但这只是启动顺序,不是健康检查。如果业务复杂,建议加 healthcheck。

第三步:目录与配置文件初始化

运行 compose 前,需要准备好目录结构和 Nginx 配置。

mkdir -p conf html data/mysql data/redis

# 创建一个简单的 Nginx 测试页
echo "<h1>Hello from Docker on Tencent Cloud</h1>" > html/index.html

# 如果需要自定义 Nginx 配置(如反向X_X、SSL),请编辑 conf/nginx.conf
# 如果没有特殊需求,上面的 default config 也能跑起来,但建议至少挂载一个自定义配置来优化性能

第四步:一键启动

在项目根目录执行:

docker-compose up -d

-d 表示后台运行。


第五步:验证与排查

  1. 查看状态:

    docker-compose ps

    确认三个容器状态均为 Up。

  2. 查看日志(如果启动失败):

    docker-compose logs -f mysql
    docker-compose logs -f redis
    docker-compose logs -f nginx
  3. 连通性测试:

    • Nginx:浏览器访问 http://<你的 CVM 公网 IP>,应看到 HTML 页面。
    • MySQL:
      docker exec -it my-mysql mysql -uroot -p
      # 输入密码后进入命令行,执行 show databases;
    • Redis:
      docker exec -it my-redis redis-cli -a your_redis_password ping
      # 返回 PONG 即成功

生产环境特别提示(避坑指南)

  1. 网络模式:上述配置使用的是默认的 bridge 模式。如果多台 CVM 需要互通,建议改用 host 模式(去掉 ports 映射,直接在宿主机监听端口),或者配置 Docker 自定义网络。但在单台 CVM 上,默认桥接足够。
  2. 内存限制:MySQL 和 Redis 比较吃内存。如果 CVM 配置较低(如 1G 或 2G 内存),请在 docker-compose.yml 中为它们添加 deploy.resources.limits.memory 限制,防止 OOM(内存溢出)导致容器被杀。
  3. 备份策略:Docker 的数据卷虽然持久化了,但还是要定期备份 ./data 目录到云存储(COS)或其他异地备份方案。
  4. 防火墙:除了安全组,CVM 内部可能还有 ufw 或 iptables。如果外部能 Ping 通但端口不通,检查 sudo ufw status 或 systemctl stop firewalld(CentOS)。
  5. 版本选择:latest 标签虽然方便,但意味着代码可能会自动升级。生产环境建议锁定具体版本号(如 mysql:8.0.32),避免自动升级带来的兼容性问题。

按这个流程走,半小时内就能在腾讯云上拉起一套标准的 LAMP/LNMP 架构。有问题直接看日志,别猜。

未经允许不得转载:云知道CLOUD » 腾讯云cvm docker安装nginx、mysql、redis最新稳定版?