Docker Compose 란?
다중 컨테이너 도커 애플리케이션을 정의하고 실행하기 위한 도구
Docker Compose 파일 – docker-compose.ymlYAML 이란?
YAML Ain’t Markup Language의 약자
일반적으로 구성 파일 및 데이터가 저장되거나 전송되는 응용 프로그램에서 사용됨
상대적으로 이해하기 쉽고 가독성이 좋도록 디자인 된 포맷
명령
의미
image
컨테이너에서 사용하는 이미지
version
docker compose 버전
services
이곳에 실행하려는 컨테이너들을 정의
build
build 파일 정보
context
docker 이미지를 구성하기 위한 파일과 폴더들이 있는 위치
dockerfile
Dockerfile명 지정
ports
호스트에 연결할 포트 맵핑 (형식 = 로컬 포트 : 컨테이너 포트)
volumes
로컬 머신에 있는 파일들 맵핑
stdin_open
기본 입력(stdin)을 연결
environment
환경 변수
mem_limit
메모리 제한 설정
network_disabled
네트워크 비활성화 여부
entrypoint
컨테이너 시작시 실행 명령어
depends_on
의존 관계의 docker container
간단한 Docker compose 파일 설정 예시
EB에서 docker-compose file version 2.0은 Dockerrun.aws.json로 불러옴 ( Amazon Linux AMI )
EB에서 docker-compose file version 3 이상일때 사용 ( Amazon Linux 2 )
version: "3"
services:
frontend:
image: image-name
volumes:
- volumes-path
stdin_open: true
mem_limit: memorys
environment:
TZ: "Asia/Seoul"
backend:
image: image-name
container_name: app_backend
volumes:
- volumes-path
mem_limit: 128m
environment:
MYSQL_HOST: $MYSQL_HOST
MYSQL_USER: $MYSQL_USER
MYSQL_ROOT_PASSWORD: $MYSQL_ROOT_PASSWORD
MYSQL_DATABASE: $MYSQL_DATABASE
MYSQL_PORT: $MYSQL_PORT
TZ: "Asia/Seoul"
nginx:
restart: always
image: image-name
ports:
- "80:80"
environment:
TZ: "Asia/Seoul"
Docker Compose 실행 및 중단
docker-compose.yml 파일이 있는 디렉터리에서 실행해야함
up 옵션 – 사용 예시 (또는 설명)
–build : 이미지 유무에 상관없이 빌드하고 컨테이너 시작
-d detached : 백그라운드 모드로 실행
-f file : 파일명 지정
# 이미지가 없을때만 빌드하고 컨테이너 시작
docker-compose up
docker-compose -f docker-compose-dev.yml up --build
# compose 컨테이너 중단
docker-compose stop
# compose 컨테이너 중단 및 삭제
docker-compose down
참고 자료