This repository is a sample Node.js application for Docker's documentation.
Code and Documentation Reference Node.js language-specific guide
The guide does not contain code and walks you through the commands you need to perform for each course.
docker run -p 3000:3000 img:tag
docker builder prune
- 캐시 삭제- 주석 한 줄 또는 패키지 추가 후 재빌드
- package.json 분리하지 않고 빌드 - 198.63MB
- 초기: 10.3s
- 주석 + 재빌드: 5.0s
- 패키지 + 재빌드: 6.1s
- package.json 분리해서 빌드 - 243.38MB
- 초기: 32.8s
- 주석 + 재빌드: 0.8s
- 패키지 + 재빌드 29.2s
- package.json, package-lock.json 분리해서 빌드 - 197.57MB
- 초기: 8.6s
- 주석 + 재빌드: 0.4s
- 패키지 + 재빌드: 5.6s
- DB Volume 연결
compose.yaml
에 선언하여 postgres 컨테이너와 데이터를 volume으로 관리
- 네트워크 설정
docker run -it --network host <이미지>
- 이미지 크기도 중요하지만 파일 하나에 따라서 빌드 시간에 큰 차이가 있을 수 있다.
- 이미지 레이어 순서와 COPY 순서를 고려해야 한다.
이미지 최적화에서 고려해야할 것
- 크기: Base Image, Multi-stage, RUN 통합, Squash Image Layers, Install only what you need
- 빌드 시간: COPY
-
mount로 패키지, 캐시 분리, RUN 통합 - 164.91MB
- 초기: 9.8s
- 주석 + 재빌드: 0.8s
- 패키지 + 재빌드: 4.3s
-
MultiStage build
- Node.js 필수 -
alpine:latest
활용 불가 - 같은
node:${NODE_VERSION}-alpine
이미지를 활용으로 극적인 최적화 X
- Node.js 필수 -
-
docker scout
- NODE_VERSION 업데이트
-
sync 주의
`npm ci` can only install packages when your package.json and package-lock.json or npm-shrinkwrap.json are in sync. Please update your lock file with `npm install` before continuing.
-
Go 최적화
alpine
이미지로 멀티 스테이지 빌드가 가능한 정적 바이너리 파일을 활용하는 go 애플리케이션은 멀티 스테이지 빌드를 활용한 극적인 최적화가 가능할 것 같다.
- server, postgres 컨테이너 실행
docker compose up/down
- docker-compose vs docker compose
- docker-compose -> docker copmose
- docker cli에 통합
-
docker push access denied
- 로그인 확인
- 이미지 태그 바꾸기
docker tag SOURCE_IMAGE[:TAG] USERNAME/TARGET_IMAGE[:TAG]
docker push USERNAME/TARGET_IMAGE
-
적용 -
kubectl apply -f docker-node-k8s.yaml
-
삭제 -
kubectl delete -f docker-node-k8s.yaml
-
Scale
kubectl scale --replicas=n deployment <deploymentname>
- describe 상태 상세 조회