Docker로 애플리케이션 배포 자동화하기

Min Jae Cho·2024년 11월 24일
0

CS

목록 보기
1/1

1. Docker란 무엇인가?

Docker는 컨테이너 기술을 기반으로 애플리케이션과 그 실행 환경을 패키징하여 어디서든 동일한 환경에서 실행할 수 있게 해주는 도구입니다.
복잡한 설치 과정을 간소화하고, 개발 환경과 운영 환경의 차이를 줄여주는 장점이 있습니다.


2. Docker의 주요 개념

  • 이미지(Image): 실행 가능한 애플리케이션과 필요한 모든 것을 포함한 읽기 전용 템플릿.
  • 컨테이너(Container): 이미지로부터 생성된 실행 가능한 인스턴스.
  • Dockerfile: 이미지를 생성하기 위한 설정 파일.
  • Docker Hub: Docker 이미지를 공유할 수 있는 레지스트리 서비스.

3. Docker 설치하기

  • Docker 공식 사이트에서 OS에 맞는 Docker Desktop 설치.
  • 설치 후, 터미널에서 다음 명령어로 설치 확인:
    docker --version
  1. 간단한 Docker 프로젝트

여기서는 Python Flask 앱을 Docker로 컨테이너화하는 방법을 알아봅니다.

4.1 Flask 애플리케이션 만들기

아래와 같은 app.py 파일을 생성합니다:

from flask import Flask

app = Flask(name)

@app.route('/')
def home():
return "Hello, Docker!"

if name == 'main':
app.run(host='0.0.0.0', port=5000)

4.2 Dockerfile 작성

Dockerfile은 이미지 생성 규칙을 정의하는 파일입니다. 같은 디렉토리에 아래 내용을 작성합니다:

베이스 이미지 설정

FROM python:3.9-slim

작업 디렉토리 설정

WORKDIR /app

종속성 파일 복사 및 설치

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

애플리케이션 파일 복사

COPY . .

컨테이너 실행 시 실행될 명령어

CMD ["python", "app.py"]

4.3 requirements.txt 파일 작성

Flask를 설치하기 위한 종속성 파일을 작성합니다:

flask

4.4 Docker 이미지 빌드

아래 명령어로 Docker 이미지를 생성합니다:

docker build -t flask-app .

4.5 컨테이너 실행

이미지로부터 컨테이너를 생성하고 실행합니다:

docker run -p 5000:5000 flask-app

브라우저에서 http://localhost:5000에 접속하면 “Hello, Docker!” 메시지를 확인할 수 있습니다.

  1. Docker Compose로 서비스 관리

복잡한 애플리케이션에서는 여러 컨테이너를 조합해야 할 때가 많습니다.
이 경우, docker-compose를 사용하면 간단하게 설정할 수 있습니다.

5.1 docker-compose.yml 작성

version: '3.8'
services:
web:
build: .
ports:
- "5000:5000"

5.2 Compose 명령어 실행

docker-compose up

이 명령어 하나로 애플리케이션 빌드와 실행이 완료됩니다.

  1. Docker를 사용하는 이유

    • 환경 일관성: 개발 환경과 배포 환경의 차이를 제거.
    • 빠른 배포: 컨테이너 기반으로 신속하게 배포 가능.
    • 확장성: 여러 컨테이너를 조합하여 쉽게 확장 가능.
    • 경량화: 가상머신보다 가볍고 빠른 실행.

  2. 결론

Docker는 현대 소프트웨어 개발에서 필수 도구로 자리 잡았습니다.
위의 예제처럼 간단한 앱부터 시작하여, Docker Compose와 Kubernetes로 확장할 수 있습니다.
꾸준히 연습하며 Docker 생태계에 익숙해지세요!

profile
A.I. Engineer

0개의 댓글