728x90
반응형
도커 컨테이너 배포: 개발에서 프로덕션까지
배포 개요
컨테이너 배포의 이점
- 일관된 환경: 개발 환경과 프로덕션 환경의 일치
- 독립적인 패키지: 애플리케이션 코드와 환경이 하나의 패키지로 제공
- 표준화: 도커가 설치된 모든 곳에서 동일하게 실행 가능
- 예측 가능성: "내 컴퓨터에서는 작동했는데..." 문제 해결
배포 프로세스 흐름
- 로컬에서 애플리케이션 개발 및 컨테이너화
- 도커 레지스트리(예: Docker Hub)에 이미지 푸시
- 리모트 호스트(클라우드 서버)에 도커 설치
- 리모트 호스트에서 이미지 풀(다운로드)
- 컨테이너 실행 및 필요한 포트 노출
주요 호스팅 프로바이더
- 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 인스턴스 설정
- EC2 인스턴스 생성
- VPC(Virtual Private Cloud) 및 보안 그룹 설정
- 필요한 포트 노출 (예: 웹 서버용 80/443 포트)
배포 단계
- SSH를 통한 리모트 서버 연결
- 리모트 서버에 도커 설치
- 도커 이미지 가져오기
- 컨테이너 실행 및 포트 매핑
컨테이너 실행 예시
# 로컬에서 이미지 빌드
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
주요 고려사항
- 보안: 컨테이너에 민감한 정보 포함 지양, 환경 변수 활용
- 성능: 필요한 최소한의 베이스 이미지 사용 (Alpine 등)
- 유지보수: CI/CD 파이프라인 구축 고려
- 로깅: 컨테이너 로그 관리 전략 필요
- 백업: 중요 데이터는 볼륨을 통해 지속성 확보
이러한 기본 원칙을 따르면 도커 컨테이너를 안정적으로 프로덕션 환경에 배포할 수 있습니다.
참고
728x90
반응형
'강의 > Docker & Kubernetes : 실전 가이드' 카테고리의 다른 글
[141-144] AWS ECS를 사용한 배포 정리 (0) | 2025.04.14 |
---|---|
[131-140] AWS EC2에 도커 컨테이너 배포하기 (0) | 2025.04.13 |
[115-124] Laravel & PHP 프로젝트 도커화: 다중 컨테이너 설정 (1) | 2025.03.31 |
[114] Target 설정 (1) | 2025.03.26 |
[104-112] 유틸리티 컨테이너에 대해서 (0) | 2025.03.24 |
댓글