FROM node
WORKDIR /app
COPY . /app
RUN node install
CMD ["node", "server.js"]
- 도커 이미지는 여러개 레이어로 구성됨,
- 레이어는 캐싱 됨. (재사용 가능)
- Dockerfile 윗줄부터 순서대로 변경사항 체크
- 변경사항이 있을 때 그 밑으로 전부 새로운 레이어를 만듬.
결론 : 빌드 시간을 줄이기 위해선, 변경이 잦을 수록을 밑으로 배치함.
고민의 흔적
git pull ▷ mvn package ▷ run (deploy)
이 과정을 어디서부터 docker container 에서 실행할 지?
옵션 1 : docker run ▷ git pull ▷ mvn package ▷ run (deploy)장점 : 온전히 container 독립적. 빌드, 테스트, 배포 다 컨테이너 안에서 가능.단점 : docker image 사이즈가 큼 (git, mvn 다 갖춰진 base image)
옵션 2 : git pull ▷ mvn package ▷ docker run ▷ copy ▷ run (deploy)장점 : docker image 사이즈가 가벼움.단점 : 빌드가 도커서버 성능에 의해 좌우됨. docker container 가 실행만 독립적..
- 옵션 3 : docker run (maven image) -v jarfiles --rm▷ git pull ▷ mvn package ▷ docker stop (maven image) ▷ docker run (tomcat image) ▷ copy ▷ run (deploy)
이게 정답이었다. 이렇게 실행할 시 도커 이미지의 버전관리를 할 필요가 없어진다. 톰캣, 메이븐이 공식제공하는 이미지를 쓰기 때문에 자동으로 최신 버전으로 사용되고, 따라서 우린 우리 서비스만 관리하면 되게 된다.
반응형
'개발 > Linux & DevOps' 카테고리의 다른 글
자체 진행한 도커 젠킨스 해커톤 후기 ㅎㅎ (0) | 2022.11.01 |
---|---|
Docker Compose 사용 이유, 방법, 몇가지 꿀팁 (0) | 2022.11.01 |
구름 | 장애 대응 특강 노트 정리 (0) | 2022.08.29 |
Jenkins 공식문서 후기 (CasC, 디렉터리 구조, 시스템 설정 등) (0) | 2022.04.14 |
docker jenkins CD/CI ② - publish over ssh 와 pipeline sshTransfer (0) | 2022.03.22 |