[126 - 130] 도커 컨테이너 배포: 개발에서 프로덕션까지

    728x90
    반응형

     

    도커 컨테이너 배포: 개발에서 프로덕션까지

     

    배포 개요

    컨테이너 배포의 이점

    • 일관된 환경: 개발 환경과 프로덕션 환경의 일치
    • 독립적인 패키지: 애플리케이션 코드와 환경이 하나의 패키지로 제공
    • 표준화: 도커가 설치된 모든 곳에서 동일하게 실행 가능
    • 예측 가능성: "내 컴퓨터에서는 작동했는데..." 문제 해결

    배포 프로세스 흐름

    1. 로컬에서 애플리케이션 개발 및 컨테이너화
    2. 도커 레지스트리(예: Docker Hub)에 이미지 푸시
    3. 리모트 호스트(클라우드 서버)에 도커 설치
    4. 리모트 호스트에서 이미지 풀(다운로드)
    5. 컨테이너 실행 및 필요한 포트 노출

    주요 호스팅 프로바이더

    • Amazon Web Services (AWS)
    • Microsoft Azure
    • Google Cloud Platform (GCP)

     

     

    개발 vs 프로덕션 환경

    바인드 마운트의 활용

    개발 환경에서

    • 바인드 마운트 사용 권장
    • 코드 변경 시 실시간 반영
    • 이미지 재빌드 없이 개발 가능

    프로덕션 환경에서

    • 바인드 마운트 사용 지양
    • COPY 명령어로 소스코드 포함
    • 자체 완결적인 컨테이너 구성
    • 호스트 머신 설정에 의존하지 않음

    도커파일 예시

    FROM node:14-alpine
    WORKDIR /app
    COPY package.json .
    RUN npm install
    COPY . .
    EXPOSE 80
    CMD ["node", "app.js"]

    이 도커파일은 개발과 프로덕션 모두에서 사용 가능:

    • 개발: 바인드 마운트 추가 (docker run -v ...)
    • 프로덕션: 바인드 마운트 없이 실행

     

     

    AWS EC2 배포 과정

    EC2 인스턴스 설정

    1. EC2 인스턴스 생성
    2. VPC(Virtual Private Cloud) 및 보안 그룹 설정
    3. 필요한 포트 노출 (예: 웹 서버용 80/443 포트)

    배포 단계

    1. SSH를 통한 리모트 서버 연결
    2. 리모트 서버에 도커 설치
    3. 도커 이미지 가져오기
    4. 컨테이너 실행 및 포트 매핑

    컨테이너 실행 예시

    # 로컬에서 이미지 빌드
    docker build -t node-dep-example .
    
    # 로컬에서 테스트 실행
    docker run -d --rm --name node-dep -p 80:80 node-dep-example
    
    # 이미지 푸시를 위한 태그명 적용
    docker tag node-dep-example 사용자명/node-dep-example
    
    # 프로덕션 배포를 위한 이미지 푸시
    docker push 사용자명/node-dep-example
    
    # 리모트 서버에서 실행
    docker run -d --name node-dep -p 80:80 사용자명/node-dep-example

     

     

    주요 고려사항

    1. 보안: 컨테이너에 민감한 정보 포함 지양, 환경 변수 활용
    2. 성능: 필요한 최소한의 베이스 이미지 사용 (Alpine 등)
    3. 유지보수: CI/CD 파이프라인 구축 고려
    4. 로깅: 컨테이너 로그 관리 전략 필요
    5. 백업: 중요 데이터는 볼륨을 통해 지속성 확보

    이러한 기본 원칙을 따르면 도커 컨테이너를 안정적으로 프로덕션 환경에 배포할 수 있습니다.

     

     

     

     

     

    참고

    https://www.udemy.com/course/docker-kubernetes-2022

    728x90
    반응형

    댓글