토. 8월 16th, 2025

D: Docker Compose는 여러 개의 Docker 컨테이너를 하나의 애플리케이션으로 정의하고 관리할 수 있는 강력한 도구입니다. 복잡한 멀티 컨테이너 애플리케이션을 쉽게 구성하고 실행할 수 있도록 도와주죠! 이 글에서는 Docker Compose의 기본 개념부터 핵심 기능까지 상세하게 알아보겠습니다. 🚀


1. Docker Compose란?

Docker Compose는 YAML 파일을 사용해 여러 컨테이너를 한 번에 정의하고 실행하는 도구입니다. 예를 들어, 웹 서버, 데이터베이스, 캐시 서버 등이 함께 동작해야 하는 애플리케이션을 단일 명령어(docker-compose up)로 실행할 수 있습니다.

왜 필요할까요?

  • 로컬 개발 환경을 쉽게 구성할 수 있습니다.
  • 테스트 및 배포 시 일관된 환경을 보장합니다.
  • 복잡한 인프라 설정을 코드로 관리할 수 있습니다. (Infrastructure as Code)

2. Docker Compose의 핵심 기능

(1) YAML 파일로 서비스 정의하기

docker-compose.yml 파일에서 서비스(컨테이너), 네트워크, 볼륨을 정의합니다.

예시:

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
  db:
    image: postgres:13
    environment:
      POSTGRES_PASSWORD: mysecretpassword

📌 webdb 서비스가 정의되었고, portsenvironment로 설정이 가능합니다.

(2) 서비스 간 의존성 관리

depends_on을 사용해 특정 서비스가 먼저 실행되도록 할 수 있습니다.

예시:

services:
  web:
    depends_on:
      - db

📌 web 서비스는 db가 실행된 후에 시작됩니다.

(3) 볼륨(Volume)을 이용한 데이터 관리

로컬 디렉토리와 컨테이너 내부 디렉토리를 연결해 데이터를 유지할 수 있습니다.

예시:

services:
  db:
    volumes:
      - ./data:/var/lib/postgresql/data

📌 호스트의 ./data 디렉토리가 컨테이너의 PostgreSQL 데이터 디렉토리와 연결됩니다.

(4) 환경 변수(.env) 사용

.env 파일에서 환경 변수를 관리할 수 있습니다.

예시 (.env):

DB_PASSWORD=mysecretpassword

docker-compose.yml에서 사용:

db:
  environment:
    POSTGRES_PASSWORD: ${DB_PASSWORD}

3. 실전 예제: 웹 애플리케이션 + DB 구성하기

Node.js 웹 서버와 PostgreSQL DB를 Docker Compose로 실행해봅시다!

Step 1: docker-compose.yml 작성

version: "3.8"
services:
  web:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - db
  db:
    image: postgres:13
    environment:
      POSTGRES_PASSWORD: mypassword
    volumes:
      - pgdata:/var/lib/postgresql/data
volumes:
  pgdata:

Step 2: Dockerfile (웹 서버용)

FROM node:14
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]

Step 3: 실행하기

docker-compose up -d  # 백그라운드 실행
docker-compose logs   # 로그 확인

🎉 이제 http://localhost:3000에서 웹 서버에 접근할 수 있습니다!


4. 자주 사용하는 Docker Compose 명령어

명령어 설명
docker-compose up 서비스 시작
docker-compose down 서비스 중지 및 삭제
docker-compose ps 실행 중인 컨테이너 확인
docker-compose logs 로그 출력
docker-compose build 이미지 재빌드

5. 마무리

Docker Compose를 사용하면 복잡한 멀티 컨테이너 애플리케이션도 쉽게 관리할 수 있습니다. � 개발, 테스트, 배포 환경을 일관되게 유지할 수 있어 DevOps 워크플로우에 큰 도움이 됩니다.

이제 여러분도 docker-compose.yml 파일을 작성해 보세요! 🚀

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다