
Dockerfile은 하나의 컨테이너 이미지를 정의할 때 사용. 즉, 컨테이너를 실행하기 전에 필요한 패키지 설치, 환경 변수 설정, 실행할 기본 명령어 지정 등을 미리 정의. 이렇게 하면 같은 설정을 반복해서 실행할 필요 없이, Dockerfile을 기반으로 동일한 환경을 쉽게 만들 수 있다.
사용 사례:
예를 들어, Spring Boot 애플리케이션을 Docker로 실행할 때:
FROM openjdk:17
WORKDIR /app
COPY target/myapp.jar myapp.jar
CMD ["java", "-jar", "myapp.jar"]
이렇게 Dockerfile을 만들어 두면, docker build 명령어만으로 항상 같은 환경의 컨테이너를 생성할 수 있다.
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 환경이 한 번에 실행된다.
둘은 함께 사용할 수도 있다. 예를 들어, 애플리케이션을 Dockerfile로 정의한 뒤, Docker Compose에서 이를 호출해서 여러 개의 컨테이너를 실행하는 식으로 활용할 수 있다.