
도커 컴포즈의 최신 버전 기준(3.8
또는 3.x
버전)에서 사용되는 docker-compose.yml
기본 파일 형식은 다음과 같습니다.
기본적인 docker-compose.yml
예제
version: "3.8" # Docker Compose 파일 버전
services:
web: # 서비스 이름
image: nginx:latest # 사용할 도커 이미지
container_name: my_nginx # 컨테이너 이름
ports:
- "8080:80" # 호스트 포트:컨테이너 포트
volumes:
- ./html:/usr/share/nginx/html # 로컬 디렉토리를 컨테이너 내부와 연결
restart: always # 컨테이너 재시작 정책
networks:
- my_network # 네트워크 설정
db:
image: mysql:latest
container_name: my_mysql
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: mydb
MYSQL_USER: user
MYSQL_PASSWORD: password
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql
restart: unless-stopped
volumes:
db_data: # 볼륨 선언
networks:
my_network: # 사용자 정의 네트워크 설정
구성 요소 설명
version
- 도커 컴포즈 파일의 버전을 명시합니다. 최신 권장 버전은
"3.8"
입니다.
- 도커 컴포즈 파일의 버전을 명시합니다. 최신 권장 버전은
services
- 각 컨테이너(서비스)를 정의하는 섹션입니다.
- 위 예제에서는
web
(Nginx)과db
(MySQL) 서비스가 있습니다.
image
- 사용할 Docker 이미지 이름을 지정합니다. (
nginx:latest
,mysql:latest
등)
- 사용할 Docker 이미지 이름을 지정합니다. (
container_name
- 컨테이너의 이름을 지정합니다. (지정하지 않으면 자동 생성됨)
ports
- 컨테이너와 호스트 간의 포트 매핑을 설정합니다. (
호스트:컨테이너
)
- 컨테이너와 호스트 간의 포트 매핑을 설정합니다. (
volumes
- 로컬 디렉토리와 컨테이너 내부 디렉토리를 연결하거나 데이터 보존을 위한 볼륨을 정의합니다.
environment
- 컨테이너에 전달할 환경 변수를 설정합니다.
restart
- 컨테이너가 언제 다시 시작될지 결정합니다.
always
: 항상 재시작unless-stopped
: 수동으로 중지하지 않는 한 재시작on-failure
: 오류 발생 시 재시작
networks
- 서비스 간 통신을 위한 사용자 정의 네트워크를 설정할 수 있습니다.
volumes
- 데이터 지속성을 위한 볼륨을 생성하고 사용합니다.
실행 방법
- 도커 컴포즈 실행:
docker-compose up -d
- 컨테이너 중지 및 삭제:
docker-compose down
- 실행 중인 컨테이너 확인:
docker-compose ps
이 구성을 바탕으로 필요에 따라 추가 설정을 적용하면 됩니다.