反应应用程序未加载到 AWS ECS 集群中?

Posted

技术标签:

【中文标题】反应应用程序未加载到 AWS ECS 集群中?【英文标题】:React app not loading in AWS ECS Cluster? 【发布时间】:2022-01-05 19:01:28 【问题描述】:

我有以下 dockerfile:

# Multi-stage
# 1) Node image for building frontend assets
# 2) nginx stage to serve frontend assets

# Name the node stage "builder"
FROM node:10 AS builder
# Set working directory
WORKDIR /app
# Copy all files from current directory to working dir in image
COPY . .
# install node modules and build assets
RUN yarn install && yarn build

# nginx state for serving content
FROM nginx:alpine
# Set working directory to nginx asset directory
WORKDIR /usr/share/nginx/html
# Remove default nginx static assets
RUN rm -rf ./*
# Copy static assets from builder stage
COPY --from=builder /app/build .
# Containers run nginx with global directives and daemon off
ENTRYPOINT ["nginx", "-g", "daemon off;"]

这适用于本地 docker。

我正在使用带有 ecs 集群的 T2.micro ec2 实例。服务部署成功,并且正在为容器映像运行任务。我尝试访问 ec2 实例的公共地址,但它返回需要很长时间才能响应。如果您需要任何其他详细信息,请告诉我。

想法?

【问题讨论】:

既然您将应用程序编译为静态文件,您是否可以将它们推送到 S3 存储桶中,从而完全避免使用 Docker/ECS?您不需要最后的ENTRYPOINT 行(Docker 将从nginx 基本映像继承相同的CMD),这并非不可能导致问题。 这可能是一堆东西(也许是一些安全组配置不允许通过)。根据您使用的 LB,LB 级别可能有 SG。根据您使用的网络模式,您可能在任务级别或 EC2 实例级别拥有 SG。如果您对 ECS 不深入,您可能希望使用 Copilot 部署此应用程序,它将为您抽象出所有这些细节。 【参考方案1】:

我决定走@David Maze 建议的路线,并将其存储在 S3 存储桶中,而不是为网站使用 ECS。

我遵循了本指南并且它正在工作: https://serverless-stack.com/chapters/deploying-a-react-app-to-aws.html

【讨论】:

以上是关于反应应用程序未加载到 AWS ECS 集群中?的主要内容,如果未能解决你的问题,请参考以下文章

AWS-ECS 部署得到 404 NOT FOUND

AWS EC2 实例未加入 ECS 集群

使用 terraform 的 AWS ECS 容量提供程序

使用AWS ELB将域名添加到ECS应用程序

AWS ECS Fargate - 任务未运行

在 AWS ECS EC2 集群中运行 docker 镜像