阿里云部署小白教程

一、准备工作

  1. 确保 ECS 已安装 Docker

    登录 ECS 服务器(通过 SSH 工具,如 Xshell、终端),执行以下命令安装 Docker(以 CentOS 为例):

    bash 复制代码
    # 安装Docker
    sudo yum install -y docker
    # 启动Docker并设置开机自启
    sudo systemctl start docker
    sudo systemctl enable docker
    # 验证安装(显示版本即成功)
    docker --version
  2. 上传项目代码到 ECS

    将前端项目文件(包括 Dockerfilepackage.json、源代码等)上传到 ECS 的任意目录(例如 /home/project)。

    • 可通过 scp 命令上传(本地终端执行):

      ruby 复制代码
      scp -r 本地项目路径 root@8.134.155.9:/home/project
    • 或通过工具(如 FileZilla)可视化上传。

二、构建 Docker 镜像

  1. 进入项目目录

    bash 复制代码
    cd /home/project  # 替换为你的项目存放路径
  2. 构建镜像

    执行以下命令,根据 Dockerfile 构建镜像(镜像名可自定义,如 frontend-app):

    erlang 复制代码
    sudo docker build -t frontend-app .
    • 过程说明:

      • 会先拉取 node:18-alpine 镜像安装依赖并构建项目(npm run build)。
      • 再基于 nginx:alpine 镜像,将构建产物(build 目录)复制到 Nginx 的默认静态文件目录(/usr/share/nginx/html)。
    • 若构建失败,检查 Dockerfile 语法(如路径是否正确)、网络是否通畅(需拉取镜像)。

三、运行 Docker 容器(关键:映射 80 端口)

Dockerfile 中 EXPOSE 80 仅声明容器内 Nginx 监听 80 端口,需通过 -p 参数将容器 80 端口映射到 ECS 的 80 端口,才能通过域名访问:

arduino 复制代码
sudo docker run -d -p 80:80 --name frontend-container frontend-app
  • 参数说明:

    • -d:后台运行容器。
    • -p 80:80:将 ECS 的 80 端口映射到容器内的 80 端口(左侧是 ECS 端口,右侧是容器端口)。
    • --name frontend-container:给容器命名(方便后续管理)。
    • frontend-app:使用前面构建的镜像名。

四、配置 ECS 安全组(允许 80 端口访问)

阿里云 ECS 默认会拦截端口访问,需在安全组开放 80 端口:

  1. 登录阿里云控制台

    进入「云服务器 ECS」→ 找到实例 → 左侧「安全组」。

  2. 添加 80 端口规则

    • 点击「配置规则」→「入方向」→「添加规则」。

    • 填写参数:

      • 协议类型:TCP
      • 端口范围:80/80
      • 授权对象:0.0.0.0/0(允许所有 IP 访问,生产环境可限制来源)
      • 描述:允许80端口访问前端页面
    • 保存规则(立即生效)。

五、验证部署结果

  1. 检查容器是否正常运行

    bash 复制代码
    sudo docker ps  # 查看运行中的容器,确保 frontend-container 状态为 Up
    • 若未运行,执行 sudo docker logs frontend-container 查看日志排查错误(如端口冲突)。
  2. 访问页面

    在本地浏览器输入:

    arduino 复制代码
    http://+公网IP(或者域名)
    • 若显示你的前端页面,说明部署成功。

    • 若无法访问,按以下顺序排查:

      1. 容器是否运行:docker ps
      2. 容器 80 端口是否映射到 ECS 80 端口:docker port frontend-container(应显示 80/tcp -> 0.0.0.0:80
      3. ECS 防火墙是否开放 80 端口(临时关闭测试:sudo systemctl stop firewalld
      4. 安全组规则是否正确(重点检查授权对象是否为 0.0.0.0/0

六、后续管理(可选)

  • 重启容器sudo docker restart frontend-container

  • 更新项目

    1. 上传新代码到 ECS 并重新构建镜像:docker build -t frontend-app .
    2. 停止旧容器:docker stop frontend-container
    3. 删除旧容器:docker rm frontend-container
    4. 运行新容器:docker run -d -p 80:80 --name frontend-container frontend-app

总结

核心流程:上传代码 → 构建镜像 → 运行容器(映射80端口) → 开放安全组80端口

关键是确保 ECS 80 端口与容器 80 端口映射成功安全组允许 80 端口入站,最终通过公网 IP 直接访问页面。

  • 你的项目文件(包括Dockerfile、源代码等)已经上传到了阿里云 ECS 服务器(如/home/project目录)。

  • 构建镜像时,Docker 需要读取服务器上的Dockerfile和项目文件,并在服务器的 Docker 引擎中执行构建过程(下载依赖、编译代码等)。

正确操作步骤:

  1. 用 SSH 工具(如终端、Xshell)远程连接到阿里云 ECS

    bash 复制代码
    ssh root@你的公网IP  # 输入服务器密码登录
  2. 在 ECS 的终端中,进入项目文件所在目录(例如/home/project):

    bash

    bash 复制代码
    cd /home/project
  3. 执行构建命令:

    bash

    erlang 复制代码
    sudo docker build -t frontend-app .

这样构建出的镜像会保存在阿里云 ECS 的 Docker 环境中,后续可以直接在 ECS 上运行容器。

下次重新启动可以直接用

复制代码
sudo docker restart 容器名字
相关推荐
梵得儿SHI9 小时前
Vue 模板语法深度解析:从文本插值到 HTML 渲染的核心逻辑
前端·vue.js·html·模板语法·文本插值·v-text指令·v-html指令
浪裡遊9 小时前
HTML面试题
前端·javascript·react.js·前端框架·html·ecmascript
More more9 小时前
uniapp实时查看在线监控,JessibucaMobile实现横屏播放
前端·javascript·uni-app·jessibucamobile
i小杨9 小时前
React 状态管理库相关收录
前端·react.js·前端框架
Jiaberrr10 小时前
解决uni-app通用上传与后端接口不匹配问题:原生上传文件方法封装 ✨
前端·javascript·uni-app
listhi52010 小时前
CSS:现代Web设计的不同技术
前端·css
南囝coding10 小时前
现代Unix命令行工具革命:30个必备替代品完整指南
前端·后端
起风了___10 小时前
Flutter 多端音频控制台:基于 audio_service 实现 iOS、Android 锁屏与通知中心播放控制
前端·flutter
作业逆流成河10 小时前
🎉 enum-plus 发布新版本了!
前端·javascript·前端框架
WYiQIU10 小时前
高级Web前端开发工程师2025年面试题总结及参考答案【含刷题资源库】
前端·vue.js·面试·职场和发展·前端框架·reactjs·飞书