Jandy-SeoulTech / Jandy_Web_Back

🆙 Talent Sharing Platform 'Upgle' Back-End Repo
GNU General Public License v3.0
6 stars 3 forks source link

AWS migration에서 Dockerfile 픽스 필요 #63

Closed Istiopaxx closed 3 years ago

Istiopaxx commented 3 years ago

Dockerfile

현재 프론트 코드를 서버에서 배포하기 위해 build 된 파일을 서버에서 보내주고 있습니다. 문제는 해당 레포지토리의 도커파일은 해당 레포지토리의 소스코드만 복사하여 도커 컨테이너 내에 만듭니다. 따라서, index.js에서 ../../ 를 하더라도 프론트 코드(빌드파일)는 해당 경로에 없습니다. 도커 컨테이너 내에 복사된 소스코드는 서버 레포지토리 뿐입니다. https://github.com/Jandy-SeoulTech/Jandy_Web_Back/blob/8c7c7ae7d4c321b035dccc5c62768fb0686d0e58/Dockerfile#L3-L10 docker build -t upgle . 를 수행하면 현재 디렉토리(Jandy_Web_Back)에서 수행하기 때문에 해당 레포만 복사하게 됨.

해결방법

  1. 차라리 프론트 빌드 파일을 서버의 루트 디렉토리에 sftp등으로 이전하고, 서버 인스턴스에 굳이 프론트 레포를 만들지 않는방법.

    • sh 스크립트로 git reset을 해주는데, 이 부분을 빼야 제대로 동작합니다.
    • 프론트에서 빌드를 실행하고 빌드파일을 매번 넣어야하는 불편함이 조금 있음
  2. 도커파일을 인스턴스 홈 디렉토리에 두고(혹은 docker build -t upgle ../.), 도커파일 내용을 수정한다.

    • 도커파일을 홈으로 옮기고, 도커파일 내에서는 워킹 디렉토리를 옮겨가며 소스파일을 복사하고 npm run build등을 수행합니다.
    • 프론트 빌드 같은건 sh 스크립트에서 빼면 됩니다.
    • 도커파일이 백과 프론트의 소스를 모두 복사하게끔 작성하는게 핵심.
  3. 어사인은 제가 작업하는 걸 기본으로 하고, @InHyeok-J 에게 작업 내역을 전달하도록 하겠습니다. 작업 진행상황 공유하겠음~!

InHyeok-J commented 3 years ago
Istiopaxx commented 3 years ago

진행 상황 추가

  1. 도커파일은 수정하지 않고, 쉘 스크립트 파일 만 수정했습니다. 자세한 건 PR에서 작성하겠습니다.
  2. ec2 t2.micro의 cpu 컴퓨팅 능력과 메모리 능력이 딸리기 때문에, 인스턴스 내에서 yarn build(프론트 레포, 백은 잘 됌)는 인스턴스가 락이 걸려버립니다. 따라서 프론트 레포는 빌드를 로컬에서 하고 sftp로 빌드 파일을 옮기는 방식으로 해야 할 것 같습니다. sftp로 빌드파일을 옮기는 작업은 쉘 스크립트로 자동화 할수 있는지 확실한 부분이 아니라서, 기존의 원하던 높은 수준의 자동화는 힘들것 같습니다.