阿里云部署小白教程

一、准备工作

  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 容器名字
相关推荐
golang学习记9 小时前
从0死磕全栈之Next.js App Router动态路由详解:从入门到实战
前端
huangql5209 小时前
基于前端+Node.js 的 Markdown 笔记 PDF 导出系统完整实战
前端·笔记·node.js
在逃的吗喽10 小时前
Vue3新变化
前端·javascript·vue.js
yqwang_cn10 小时前
打造优雅的用户体验:自定义jQuery工具提示插件开发全解析
前端·jquery·ux
小Tomkk10 小时前
AI 提效:利用 AI 从前端 快速转型为UI/UX设计师和产品
前端·人工智能·ui
Demoncode_y10 小时前
Vue3中基于路由的动态递归菜单组件实现
前端·javascript·vue.js·学习·递归·菜单组件
杨超越luckly10 小时前
HTML应用指南:利用POST请求获取全国中国工商农业银行网点位置信息
大数据·前端·html·数据可视化·银行网点
皮蛋瘦肉粥_12111 小时前
pink老师html5+css3day02
前端·css3·html5
qianmo202111 小时前
基于pycharm实现html文件的快速实现问题讨论
前端·html
IT_陈寒11 小时前
SpringBoot3踩坑实录:一个@Async注解让我多扛了5000QPS
前端·人工智能·后端