Dockerfile과 Docker Compose

y001·2025년 2월 23일
0
post-thumbnail

1. Dockerfile은 언제 사용하는가?

Dockerfile은 하나의 컨테이너 이미지를 정의할 때 사용. 즉, 컨테이너를 실행하기 전에 필요한 패키지 설치, 환경 변수 설정, 실행할 기본 명령어 지정 등을 미리 정의. 이렇게 하면 같은 설정을 반복해서 실행할 필요 없이, Dockerfile을 기반으로 동일한 환경을 쉽게 만들 수 있다.

사용 사례:

  • 애플리케이션 실행 환경을 표준화하고 싶을 때 (예: Node.js, Python, Java 기반 서비스)
  • 배포할 때 항상 동일한 환경을 보장해야 할 때
  • 특정한 애플리케이션을 단일 컨테이너에서 실행하고 싶을 때

예를 들어, Spring Boot 애플리케이션을 Docker로 실행할 때:

FROM openjdk:17
WORKDIR /app
COPY target/myapp.jar myapp.jar
CMD ["java", "-jar", "myapp.jar"]

이렇게 Dockerfile을 만들어 두면, docker build 명령어만으로 항상 같은 환경의 컨테이너를 생성할 수 있다.


2. Docker Compose는 언제 사용하는가?

Docker Compose는 여러 개의 컨테이너를 한 번에 관리할 때 사용한다. 즉, 하나의 애플리케이션이 데이터베이스, 캐시 서버, API 서버 등 여러 컨테이너로 구성될 경우, 이를 쉽게 실행하고 관리할 수 있도록 해준다.

사용 사례:

  • 여러 개의 컨테이너가 함께 동작해야 할 때 (예: 웹 서버 + 데이터베이스 + 메시지 큐)
  • 복잡한 환경을 손쉽게 재현하고 실행해야 할 때 (예: 개발 환경 구축)

예를 들어, Spring Boot + MySQL + Redis 환경을 Docker Compose로 정의하면:

version: '3.8'
services:
  app:
    build: .
    ports:
      - "8080:8080"
    depends_on:
      - db
      - redis

  db:
    image: mysql:8
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: mydb
    ports:
      - "3306:3306"

  redis:
    image: redis:latest
    ports:
      - "6379:6379"

이제 docker-compose up -d 명령어 하나로 Spring Boot 앱 + MySQL + Redis 환경이 한 번에 실행된다.


3. 정리하면

  • Dockerfile은 컨테이너를 위한 설치 과정과 실행 환경을 정의하는 파일.
  • Docker Compose는 여러 개의 컨테이너를 한 번에 실행하고 관리하는 도구.

둘은 함께 사용할 수도 있다. 예를 들어, 애플리케이션을 Dockerfile로 정의한 뒤, Docker Compose에서 이를 호출해서 여러 개의 컨테이너를 실행하는 식으로 활용할 수 있다.

0개의 댓글