728x90
aws에 도커를 통해 배포를 진행하려고 했다.
aws에서 도커허브에 올린 내 이미지를 받아와 npm start를 실행하도록 했지만
메모리가 부족하다는 오류가 뜨면서 실행되지 않았다.
오류에 대해 검색해보니 메모리를 올려주는 명령어를 추가하여 npm start를 하면 된다고 했지만 똑같은 오류가 발생했다.
문제는 근본적으로 내가 선택한 aws 인스턴스는 가장 작은 메모리를 사용하는 것이였기 때문이었다.
메모리가 부족했기 때문에 react를 빌드하여 실행시키는 방법을 생각했다.
이를 위해 Dockerfile을 새로 작성하고 이미지를 수정해야 했다.
기존 Dockerfile
FROM node:18
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "npm","start" ]
바뀐 Dockerfile
# nginx 이미지를 사용합니다. 뒤에 tag가 없으면 latest 를 사용합니다.
FROM nginx
# root 에 app 폴더를 생성
RUN mkdir /app
# work dir 고정
WORKDIR /app
# work dir 에 build 폴더 생성 /app/build
RUN mkdir ./build
# host pc의 현재경로의 build 폴더를 workdir 의 build 폴더로 복사
ADD ./build ./build
# nginx 의 default.conf 를 삭제
RUN rm /etc/nginx/conf.d/default.conf
# host pc 의 nginx.conf 를 아래 경로에 복사
COPY ./nginx.conf /etc/nginx/conf.d
# 80 포트 오픈
EXPOSE 80
# container 실행 시 자동으로 실행할 command. nginx 시작함
CMD ["nginx", "-g", "daemon off;"]
./nginx.conf
server {
listen 80;
location / {
root /app/build;
index index.html;
try_files $uri $uri/ /index.html;
}
}
바꾼 Dockerfile로 이미지를 리빌드하고 다시 실행했더니 정상적으로 작동했다.
728x90
'팀프로젝트 > close_sea' 카테고리의 다른 글
[CloseSea] 최종 정리 (0) | 2022.12.28 |
---|---|
[CloseSea] ERC721 tokenURI 연결 이슈 (0) | 2022.12.28 |
[CloseSea] NFT거래 권한 이슈 (0) | 2022.12.28 |
[CloseSea] 지갑연결 버튼 (0) | 2022.12.28 |
[CloseSea] 스마트 컨트랙트 (0) | 2022.12.27 |