[Docker] 8-1-1.Docker 실무: 캐싱을 활용한 빌드

null·2025년 2월 25일
0

Docker

목록 보기
18/24

캐싱을 활용한 빌드

  • 소스 코드가 변경 된 경우

  • 라이브러리를 설치하는 부분을 별도로 분리 -> 빌드 속도 향상

  • 프론트 도커 파일

# 빌드 이미지로 node:14 지정
FROM node:14 AS build

WORKDIR /app

# 라이브러리 설치에 필요한 파일만 복사
COPY package.json .
COPY package-lock.json .

# 외부 라이브러리 설치
RUN npm ci

# 소스코드 복사
COPY . /app

# 소스코드 빌드
RUN npm run build

FROM nginx:1.21.4-alpine

COPY --from=build /app/dist /usr/share/nginx/html

EXPOSE 80
ENTRYPOINT [ "nginx" ]
CMD [ "-g", "daemon off;" ]
  • 백엔드 도커 파일
# 빌드 이미지로 openJDK 11& gradle을 지정
FROM gradle:7.6.1-jdk11 AS build

# 소스코드를 복사할 작업 디렉토리를 생성
WORKDIR /app

# 외부 라이브러리 설치에 필요한 build.gradle 과 settings.gradle 파일만 복사
COPY build.gradle settings.gradle ./

# 의존 라이브러리 설치
RUN gradle dependencies --no-daemon

# 호스트 머신의 소스코드를 작업 디렉토리로 복사
COPY . /app

# gradle 빌드를 실행하여 jar 파일 생성
RUN gradle clean build --no-daemon

# 런타임 이미지로 openJDK11 JRE-slim 지정
FROM openjdk:11-jre-slim

# 애플리케이션을 실행할 작업 디렉토리를 생성
WORKDIR /app

# 빌드 이미지에서 생성된 jar파일을 런타임 이미지로 복사
COPY --from=build /app/build/libs/*jar /app/leafy.jar

EXPOSE 8080
ENTRYPOINT ["java"]
CMD ["-jar", "leafy.jar"]
  • --no-cahe 옵션 사용 : 캐시 사용 안함

  • 소스 코드가 바뀌고 나서 캐시 사용

0개의 댓글