一、准备工作
-
确保 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
-
上传项目代码到 ECS
将前端项目文件(包括
Dockerfile
、package.json
、源代码等)上传到 ECS 的任意目录(例如/home/project
)。-
可通过
scp
命令上传(本地终端执行):rubyscp -r 本地项目路径 root@8.134.155.9:/home/project
-
或通过工具(如 FileZilla)可视化上传。
-
二、构建 Docker 镜像
-
进入项目目录
bashcd /home/project # 替换为你的项目存放路径
-
构建镜像
执行以下命令,根据
Dockerfile
构建镜像(镜像名可自定义,如frontend-app
):erlangsudo 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 端口:
-
登录阿里云控制台
进入「云服务器 ECS」→ 找到实例 → 左侧「安全组」。
-
添加 80 端口规则
-
点击「配置规则」→「入方向」→「添加规则」。
-
填写参数:
- 协议类型:
TCP
- 端口范围:
80/80
- 授权对象:
0.0.0.0/0
(允许所有 IP 访问,生产环境可限制来源) - 描述:
允许80端口访问前端页面
- 协议类型:
-
保存规则(立即生效)。
-
五、验证部署结果
-
检查容器是否正常运行
bashsudo docker ps # 查看运行中的容器,确保 frontend-container 状态为 Up
- 若未运行,执行
sudo docker logs frontend-container
查看日志排查错误(如端口冲突)。
- 若未运行,执行
-
访问页面
在本地浏览器输入:
arduinohttp://+公网IP(或者域名)
-
若显示你的前端页面,说明部署成功。
-
若无法访问,按以下顺序排查:
- 容器是否运行:
docker ps
- 容器 80 端口是否映射到 ECS 80 端口:
docker port frontend-container
(应显示80/tcp -> 0.0.0.0:80
) - ECS 防火墙是否开放 80 端口(临时关闭测试:
sudo systemctl stop firewalld
) - 安全组规则是否正确(重点检查授权对象是否为
0.0.0.0/0
)
- 容器是否运行:
-
六、后续管理(可选)
-
重启容器 :
sudo docker restart frontend-container
-
更新项目:
- 上传新代码到 ECS 并重新构建镜像:
docker build -t frontend-app .
- 停止旧容器:
docker stop frontend-container
- 删除旧容器:
docker rm frontend-container
- 运行新容器:
docker run -d -p 80:80 --name frontend-container frontend-app
- 上传新代码到 ECS 并重新构建镜像:
总结
核心流程:上传代码 → 构建镜像 → 运行容器(映射80端口) → 开放安全组80端口
。
关键是确保 ECS 80 端口与容器 80 端口映射成功 且 安全组允许 80 端口入站,最终通过公网 IP 直接访问页面。
-
你的项目文件(包括
Dockerfile
、源代码等)已经上传到了阿里云 ECS 服务器(如/home/project
目录)。 -
构建镜像时,Docker 需要读取服务器上的
Dockerfile
和项目文件,并在服务器的 Docker 引擎中执行构建过程(下载依赖、编译代码等)。
正确操作步骤:
-
用 SSH 工具(如终端、Xshell)远程连接到阿里云 ECS:
bashssh root@你的公网IP # 输入服务器密码登录
-
在 ECS 的终端中,进入项目文件所在目录(例如
/home/project
):bash
bashcd /home/project
-
执行构建命令:
bash
erlangsudo docker build -t frontend-app .
这样构建出的镜像会保存在阿里云 ECS 的 Docker 环境中,后续可以直接在 ECS 上运行容器。
下次重新启动可以直接用
sudo docker restart 容器名字