node.js - 将 NodeJS Express API 部署到 AWS
问题描述
我使用 CodeFresh 构建我的 Docker 映像并推送到 AWS ECR。
我检查了我的 ECR,我可以看到成功推送到那里。
我通过 SSH 连接到我的 EC2,在那里我看不到任何内容。
更新
[ec2-user@ip-10-0-0-47 share]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1e4d4eae6520 616934057156.dkr.ecr.us-east-2.amazonaws.com/bheng-api "sh cmd.sh" 29 hours ago Up 29 hours 3002/tcp ecs-api-1-bheng-api-88ef95c7ddc993badf01
44b78781d487 amazon/amazon-ecs-agent:latest "/agent" 30 hours ago Up 30 hours ecs-agent
[ec2-user@ip-10-0-0-47 share]$
[ec2-user@ip-10-0-0-47 share]$
[ec2-user@ip-10-0-0-47 share]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
616934057156.dkr.ecr.us-east-2.amazonaws.com/bheng-api latest 41e9eaa2aff2 29 hours ago 952MB
amazon/amazon-ecs-agent latest 622111e45fde 6 weeks ago 29.4MB
amazon/amazon-ecs-pause 0.1.0 b875fd8f097a 6 weeks ago 963kB
[ec2-user@ip-10-0-0-47 share]$
[ec2-user@ip-10-0-0-47 share]$
[ec2-user@ip-10-0-0-47 share]$
这是我的EC2的安全组
PM2
Use --update-env to update environment variables
[PM2] Applying action restartProcessId on app [all](ids: 0)
[PM2] [index](0) ✓
┌──────────┬────┬──────┬───────┬────────┬─────────┬────────┬─────┬───────────┬──────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │
├──────────┼────┼──────┼───────┼────────┼─────────┼────────┼─────┼───────────┼──────┼──────────┤
│ index │ 0 │ fork │ 23901 │ online │ 1 │ 0s │ 0% │ 12.8 MB │ node │ disabled │
└──────────┴────┴──────┴───────┴────────┴─────────┴────────┴─────┴───────────┴──────┴──────────┘
解决方案
第一件事
这样做ls
并不意味着它会显示 docker 图像。
如果 docker 图像拉取成功,则使用以下命令进行检查。
docker images
这将打印在这个 ec2 容器实例中运行的所有图像。类似的东西56789.dkr.ecr.us-east-2.amazonaws.com/bheng-api:latest
。
至于调试是一个问题,您需要检查您的 docker 容器是否正在运行。
docker ps
这将打印正在运行的容器。
复制容器的 id 并运行此命令。
docker exec -it {container_id} bash|ash
码头工人日志
docker logs {container_id}
您还可以通过将角色分配给您的 ece 容器实例并运行以下命令来检查图像的工作方式。
docker run -it --rm -p 80:80 56789.dkr.ecr.us-east-2.amazonaws.com/bheng-api:latest
我将再次提及步骤
- 创建 ECR 并推送你的 docker 镜像
- 创建任务定义
- 创建运行该任务定义实例的服务。如果没有服务,就不会有容器或 docker 镜像之类的东西。一旦您创建服务,您将在您的 ec2 实例中设置 docker 映像。
您还可以在 ECS -> 集群 -> 服务 -> 任务下使用 AWS 控制台查看任务事件
如果出现问题,您将在以下事件中看到
如果一切正常,那么
完整图像
推荐阅读
- powerbi - Power BI - 如何根据参数在 Power BI web 上获取报告
- firebase - 在用户导入时生成 Auth UID
- angular6 - 不在 Angular 6 中安装 ngx-mqtt?
- asp.net-mvc - 在没有 for 循环的情况下加载时在 Kendo Grid 中插入多行
- angular - Angular CLI 图像未在 css 中加载
- python-3.x - How to work with Values entered through Tkinter entry widgets
- deep-learning - 如何在 Mask RCNN 中使用多处理的概念?
- r - 逻辑回归:在预测时,它表示数据中的新水平
- excel-formula - 对于具有连字符“-”的单元格,基于周和年计数
- javascript - 正则表达式以验证最后一位非零的 IP 地址