我想将 React/Flask 应用程序部署到AWS EC2 t2.micro实例中。我得到了一个 docker-compose 文件以及 React 和 Flask 各自的 Dockerfile。Docker 为 Flask API 创建并运行映像,但是,当构建 React 应用程序时,它会因Javascript heap out of memory而崩溃。我尝试运行:运行节点 --expose-gc --max-old-space-size=1024 node_modules/react-scripts/scripts/build.js来自 Dockerfile,但是当我从 docker-compose 构建它时,它永远不会完成npm run 构建并保持库存。我也尝试添加模块增加内存限制,但也没有完成。这是我的 docker-compose.yml:version: '3.5'services: frontend: container_name: frontend build: context: ./frontend dockerfile: Dockerfile ports: - 80:80 - 443:443 env_file: - ./frontend/.env environment: - REACT_APP_FLASK_API= "api address" api: restart: always container_name: api build: context: ./api dockerfile: Dockerfile expose: - 5000 environment: - FLASK_ENV=development - FLASK_APP=app.py - FLASK_DEBUG=1我的反应应用程序 Dockerfile:FROM node:latest as buildRUN mkdir -p /usr/src/app# copy the react app to the containerWORKDIR /usr/src/appCOPY . /usr/src/appCOPY package.json /usr/src/app# adding env variableARG REACT_APP_FLASK_APIENV REACT_APP_FLASK_API "api address"# prepare the container for building reactRUN npm installRUN npm run build #node --expose-gc --max-old-space-size=1024 node_modules/react-scripts/scripts/build.js# preprare nginxFROM nginx:alpineCOPY --from=build /usr/src/app/build /usr/share/nginx/htmlRUN rm /etc/nginx/conf.d/default.confCOPY nginx/nginx.conf /etc/nginx/conf.d# fire up nginxEXPOSE 80CMD ["nginx", "-g", "daemon off;"]
2 回答
元芳怎么了
TA贡献1798条经验 获得超7个赞
问题的根本原因是 VM t2.micro 的弱点。
t2.micro 只有 1 个 vCPU 和 1GB 内存
我会说这个容量对于应用程序运行时(nginx)来说已经足够了。
但是对于应用程序构建(npm run build
)来说,这永远不够。
根据经验,我们负责构建 400 多个计划,并且可以为一些react/angular 项目npm build
占用高达16G的内存。
解决方法
如果您不想花钱打开更大的 VM(实例),这是解决方法:
在您的机器中构建映像。
将构建的镜像复制到 ec2 实例。
运行 ec2 实例中的图像。
在你的笔记本电脑中
# build it
docker build -t frontend:v1.0 -f react.Dockerfile .
# save the image as simple file
docker save frontend:v1.0 | gzip > frontend.tar.gz
# copy the file to your ec2 machine
scp frontend.tar.gz ec2-user@x.x.x.x:/tmp
在您的 ec2 实例中
# load the simple file into an image
docker load < /tmp/frontend.tar.gz
# validate that the image is loaded
docker images
不能帮助更多!祝你好运
添加回答
举报
0/150
提交
取消