亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 docker 容器中構建反應應用程序時,JavaScript 堆內存不足

在 docker 容器中構建反應應用程序時,JavaScript 堆內存不足

LEATH 2022-11-11 13:34:53
我想將 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 [email protected]:/tmp


在您的 ec2 實例中


# load the simple file into an image

docker load < /tmp/frontend.tar.gz


# validate that the image is loaded

docker images


不能幫助更多!祝你好運


查看完整回答
反對 回復 2022-11-11
?
千巷貓影

TA貢獻1829條經驗 獲得超7個贊

我在 macOS Big Sur 上遇到了同樣的問題,解決這個問題的唯一方法是像這樣設置 docker Preferences

http://img1.sycdn.imooc.com//636ddf2b0001a78e12370643.jpg

所有資源必須完全填滿



查看完整回答
反對 回復 2022-11-11
  • 2 回答
  • 0 關注
  • 315 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號