反应应用程序未加载到 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 集群中?的主要内容,如果未能解决你的问题,请参考以下文章