산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 산업기술

멀티 스테이지 컨테이너 빌드로 배포 간소화하기

애플리케이션을 빌드 환경과 함께 완전하게 배포하면 시스템 크기가 매우 커집니다. 빌드 및 테스트 환경까지 포함되기 때문입니다. 배포할 파일만 추출하는 것이 문제가 아니더라도 시간이 많이 소요됩니다.

컨테이너를 사용하면 이 과정을 자동화할 수 있습니다.

멀티 스테이지 빌드의 개념

하나의 Dockerfile에 여러 컨테이너 단계를 정의하고, 이전 단계에서 생성된 아티팩트만 다음 단계로 복사하는 방식입니다. Node.js로 빌드한 JavaScript 웹사이트가 대표적인 예입니다.

크기 비교

전체를 하나의 컨테이너로 만들면 600 MB 이상이지만, 실제 운영에 필요한 것은 22 MB(nginx + 웹사이트)뿐입니다. 불필요한 소프트웨어가 포함되어 보안 위험도 커집니다. 멀티 스테이지 빌드로 이 문제를 해결할 수 있습니다.

멀티 스테이지 Dockerfile 예제

1단계에서는 Node.js 컨테이너를 빌드 시스템으로 사용해 웹사이트를 빌드합니다. 2단계에서는 경량 nginx 컨테이너(Alpine 기반)에 빌드 결과물만 복사합니다.

# Stage 1: 빌드 시스템
FROM node:8.11.3 as buildsystem

# 소스 코드 복사
COPY ./source /root/frontend

# 프론트엔드 빌드
WORKDIR /root/frontend/
RUN npm install \
  && npm run build

#####################################################################

# Stage 2: 운영 환경
FROM nginx:alpine

# 1단계에서 빌드된 결과물 복사
RUN mkdir -p /var/www/html/<MyApp>
COPY --from=buildsystem /root/frontend/dist/ /var/www/html/<MyApp>/

# nginx 기본 설정 추가
ADD default.conf /etc/nginx/conf.d/

# 포트 노출
EXPOSE 80

# nginx 시작
CMD ["nginx", "-g", "daemon off;"]

결과는 필수 요소만 포함한 경량 컨테이너입니다. Alpine Linux 기반 nginx를 사용해 크기를 최소화했습니다.

추가 이점

산업기술

  1. 비즈니스 리더와의 신뢰 구축: 올바른 클라우드 서비스 선택
  2. 과학적 표기법으로 곱셈과 나눗셈 마스터하기
  3. 인더스트리 4.0 인사이트: 보쉬.IO 베레나 마윤트케와의 Q&A - IoT, 자동화, 미래 공장
  4. 라즈베리 파이, DHT11, ThingSpeak로 첫 IoT 프로젝트 만들기
  5. 마이크로소프트, 170억 파라미터 세계 최대 언어 모델 '튜링-NLG' 공개
  6. AI 기반 로드맵: 공급망 기업을 위한 전략적 가이드
  7. 스마트 조달: AI와 인간 통찰력의 융합
  8. 고효율 컨테이너 크레인: 항만·철도 야드 정밀 하역 솔루션
  9. x86 시스템에서 효율적인 ARM 컨테이너 빌드하기
  10. 멀티 스테이지 컨테이너 빌드로 배포 간소화하기