Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor(server/Dockerfile): optimize #13

Open
agatha197 opened this issue Nov 6, 2020 · 0 comments
Open

refactor(server/Dockerfile): optimize #13

agatha197 opened this issue Nov 6, 2020 · 0 comments

Comments

@agatha197
Copy link
Contributor

https://github.com/kookmin-sw/capstone-2020-12/blob/d6996d708c9dce6c233a75b5b73c86f5288a8589/src/server/Dockerfile#L1-L8

 FROM node:12 
 WORKDIR /app 
 COPY package*.json /app/ 
 RUN npm install 
 COPY . . 
  
 EXPOSE 4000 
 CMD [ "node", "index.js" ] 

  1. 특수한 이유가 없는 한 alpine 을 써주는게 좋다고 생각합니다. (FROM node:12-alpine)

  2. devDependency 는 install 하지 않습니다. npm install 대신 npm install --only=prod 를 실행하여 가능합니다. 단, 3번을 참조해주세요!

  3. package-lock.json 만을 존중합니다. 프로덕션 용이므로 reproducibility 를 위해 개발환경과 완전히 같은 버전의 dependency 들이 install 되어야 합니다. 그런데 npm install은 package-lock.json 을 따르는 것이 아니고, 오히려 update 할 여지가 있습니다. 따라서 npm install 대신 npm ci 명령어를 사용합니다. 이때, devDependency 가 아닌 dependency 만 install 하도록 npm ci --production 을 실행하던가 NODE_ENV 환경변수를 "production"으로 설정합니다.

  4. WORKDIR 을 /app/ 으로 정했으니, COPY 명령어의 두번째 인자는 상대경로로 주는 일관성을 보입시다.
    (COPY package*.json /app/ 대신 COPY package*.json .)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant