Docker Compose 기본
도커 컴포즈는 여러 개의 Docker 컨테이너를 관리하는 도구이다.
각각의 컨테이너는 하나의 파일 안에 모두 정의되어 있다.
서비스 간의 의존성이나 도커의 네트워크도 파일 안에서 설정할 수 있다.
도커 컴포즈는 도커 데스크탑 설치 시 기본으로 설치된다.
한 번의 명령어로 여러 개의 컨테이너를 한 번에 실행하거나 종료할 수 있다.
로컬 개발 환경에서 활용하기 편리합니다.
YAML
YAML은 데이터를 표현하기 위한 포맷 중 하나이다.
도커 컴포즈를 통해 관리할 컨테이너(서비스)를 docker-compose.yml 파일에 정의한다.
yml은 JSON과 같이 데이터를 작성하기 위한 양식이다. JSON과 유사하지만 간결하고 가독성이 더 뛰어나다.
JSON은 {}와 "" , 가 필수인 반면 YAML은 띄어쓰기 기반으로 정보를 구분합니다.
Docker Compose 명령어
Docker Compose 에서 말하는 서비스는 컨테이너와 동일한 개념이다.
Docker Compose 실습
docker-compose.yml 파일은 크게 두 가지로 나눌 수 있다.
첫 번째 버전 부분에는 docker-compose의 버전을 의미한다.
어떤 버전을 사용하냐에 따라서 기능들이 더 추가되거나 없을 수도 있다.
services 부분에는 실제로 실행할 컨테이너들의 리스트를 출력한다.
services의 바로 아래 단계에 있는 목록들이 컨테이너를 의미한다.
docker compose up -d --build
로컬에 이미지가 있어도 다시 이미지를 빌드
소스 코드를 변경하고 새로운 버전으로 올리기 위해서는 이미지의 태그를 변경하거나 docker compose up 명령을 사용할 때 --build 옵션을 주면 된다.
공통 변수 활용
Docker Compose 예시
docker-compose.yml 파일의 leafy-postgres 부분이 실행하는 컨테이너는 docker run 명령을 사용해서 컨테이너를 실행하는 것과 완전히 동일한 결과를 제공한다. 컨테이너의 이름은 서비스의 이름과 매칭된다. 이미지명은 이미지 속성의 값과 매칭된다.
이미지가 없거나 --build 옵션을 줄 경우에는 leafy-backend 폴더의 Dockerfile파일과 소스 코드를 활용해서 새로운 이미지를 빌드한다.
environment를 통해 환경변수값을 설정한다.
depend_on 부분은 depend_on에 지정한 컨테이너가 실행될 때까지 해당 컨테이너의 실행을 대기한다.
Docker Compose volume
volumes:
mydata:
위와 같이 볼륨을 함께 생성할 수 있다.
볼륨을 사용할때는 컨테이너의 바로 아래 단계에서 volumes를 추가하면 된다.
volumes에 넣는 값을 보면 mydata 볼륨을 /var/lib/postgresul/data로 마운트 했다는 의미다.
리소스 사용량 제한, 재시작 정책 지정
-cpus와 -memory 옵션을 사용해서 컨테이너의 CPU와 메모리 사용량을 제한할 수 있다.
deploy:resources:limits 옵션에 cpus와 memory에 값을 지정하면 된다.
'Docker' 카테고리의 다른 글
10. 도커와 DevOps (0) | 2024.08.16 |
---|---|
7. 도커 볼륨 (0) | 2024.08.16 |
6. 네트워크 (0) | 2024.08.15 |
5. 컨테이너 애플리케이션 구성 (0) | 2024.08.15 |
4. 이미지 빌드 (0) | 2024.08.14 |