Dockerfile와 docker-compose.yml 파일의 차이
도커를 생성하셨으면 이제 실제 애플리케이션을 컨테이너화 해야됩니다.
이때 사용되는 파일은 Dockerfile 과 docker-compose.yml 파일입니다.
두 파일 모두 컨테이너화를 위해 사용되는데 서로 다른 목적과 사용 사례를 갖고 있습니다.
Dockerfile 이란?
- 개별 컨테이너 정의 : 단일 도커 이미지를 정의하는데 사용됩니다. 이미지는 컨테이너를 시작하는데 사용되는 템플릿입니다.
- 컨테이너 빌드 지시사항 : 컨테이너를 빌드하기 위한 지시사항을 포함합니다. 기본 이미지, 작업 디렉토리, 파일 복사, 환경 변수 설정 등을 포함합니다.
- 단일 서비스 정의 : 사용하면 하나의 서비스 또는 애플리케이션의 컨테이너를 정의합니다. 보통 하나의 Dockerfile은 하나의 애플리케이션을 컨테이너화하기 위해 사용됩니다.
docker-compose.yml 이란?
- 다중 컨테이너 애플리케이션 정의 : 파일은 다중 컨테이너 애플리케이션의 전체 구성을 정의하는 데 사용됩니다. 여러 서비스 또는 컨테이너를 함께 실행하고 관리할 때 유용합니다.
- 서비스 간 의존성 관리 : 서비스 간의 읜존성과 상호 작용을 정의합니다. 이를 통해 여러 컨테이너를 함께 시작하고 관리할 수 있습니다.
- 환경 설정 및 네트워크 구성 : 각 서비스의 환경 변수, 포트 맵핑, 불륨 마운트, 서비스 간의 네트워크 구성 정의 등을 설정할 수 있습니다.
그래서 Dockerfile 이랑 docker-compose.yml 파일의 차이가 뭐야?
- docker-compose.yml 을 통해 다중 컨테이너 애플리케이션을 정의합니다.
- docker-compose.yml 을 통해 생성되는 컨테이너의 설정은 Dockerfile을 통해 이루어집니다.
즉, docker-compose.yml 을 통해 전체적인 애플리케이션 컨테이너를 생성하고 각 컨테이너의 세부 설정은 Dockerfile을 사용합니다.
[docker-compose.yml 파일과 각 dockerfile 경로]
docker-compose.yml 의 위치는 1depth 로써, 각 컨테이너(mysql, rabbitmq, kafka) 의 경로에 dockerfile 이 존재합니다.
1depth/
│
└── docker-compose.yml
│
├── mysql/
│ └── Dockerfile_mysql
│
├── rabbitmq/
│ └── Dockerfile_rabbitmq
│
└── kafka/
└── Dockerfile_kafka
[docker-compose.yml 예시]
version: '3' # Docker Compose 파일의 버전 지정
services: # 각 서비스를 정의합니다.
mysql: # 서비스 이름
image: mysql:latest # 사용할 도커 이미지
container_name: mysql-container # 컨테이너 이름
environment: # 환경 변수 설정
MYSQL_ROOT_PASSWORD: <password> # MySQL 루트 비밀번호 설정
ports: # 포트 매핑
- "3306:3306" # 호스트와 컨테이너의 포트를 매핑
rabbitmq:
image: rabbitmq:latest
container_name: rabbitmq-container
ports:
- "5672:5672"
- "15672:15672"
kafka:
image: wurstmeister/kafka:latest
container_name: kafka-container
ports:
- "9092:9092"
결론
- docker-compose.yml 을 통해 애플리케이션 컨테이너화를 합니다.
- 각 애플리케이션 컨테이너 경로의 dockerfile을 통해 설정을 합니다.
'Programming > Docker' 카테고리의 다른 글
[Docker] Docker 환경에 mysql 추가하기 (1) | 2024.04.12 |
---|---|
[Docker] 컨테이너 환경설정 딜레마. docker-compose.yml VS Dockerfile (1) | 2024.04.12 |
[Docker] Mac OS에 Docker 설치하기 (1) | 2024.04.10 |
[도커/Docker] 윈도우 환경에 도커 설치 (0) | 2021.09.10 |