728x90
Dockerfile 최적화
- 빠르게 만들기: Docker 이미지 만드는 시간을 줄일 수 있음
- 이미지 크기 줄이기: 저장 공간을 덜 차지하고 다운로드나 전송할 때도 더 빨라짐
- 재사용성 높이기: 여러 번, 여러 곳에서 쓸 수 있어서 편리
- 보안 강화
- 유지보수 쉽게: 나중에 수정하거나 업데이트할 때 훨씬 쉬움
# build 는 gradle 이미지에서 `builder`라는 이름으로.
FROM gradle:8.5-jdk21-alpine AS builder
WORKDIR /app
COPY ./ ./
RUN gradle clean bootJar
# App
FROM eclipse-temurin:21-jre-alpine
WORKDIR /app
COPY --from=builder /app/build/libs/spring-boot-0.0.1-SNAPSHOT.jar .
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "spring-boot-0.0.1-SNAPSHOT.jar"]
- 최소한의 라이브러리만 설치된 이미지를 사용하여 빌드
- multi stage를 사용하여 application 실행 Container에 gradle이 설치되는 것을 방지
Container 가상화
- Container 이점
- 경량화: 컴퓨터의 운영체제(OS)를 여러 앱과 공유해서 따로 운영체제를 설치할 필요가 없음. 크기가 작아서 빨리 시작 가능
- 이동성과 플랫폼 독립성: 앱을 실행하는 데 필요한 모든 것을 함께 담아 그대로 옮겨 실행 가능
- 현대적인 개발 및 아키텍처 지원: 크기가 작고 여러 플랫폼에서 잘 작동해서 최신 개발 방식과 앱 패턴에 잘 맞음
- 사용률 향상: 컴퓨터의 CPU나 메모리를 더 효율적으로 사용 가능. 앱의 각 부분을 따로따로 배치하거나 크기를 조절할 수 있기 때문에 유연하게 관리할 수 있음
- Container 용도
- 마이크로 서비스에 좋음: 앱을 여러 작은 부분으로 나눠 서로 독립적으로 잘 돌아가게 할 수 있음
- DevOps에 유용: 앱을 빠르고 효율적으로 개발하고 배포 가능
- 하이브리드, 멀티클라우드에 이상적
- 클라우드 마이그레이션에 도움: 앱을 클라우드로 쉽게 옮길 수 있고 관리도 편해짐
'[스파르타코딩클럽] > Docker & CICD' 카테고리의 다른 글
Docker Network (2) | 2024.03.19 |
---|---|
Docker volume (0) | 2024.03.19 |
Docker 모니터링&로깅 (0) | 2024.03.19 |
Docker Compose (1) | 2024.03.19 |
Dockerfile (0) | 2024.03.18 |