logo
Published on

Docker Compose

Authors
  • Name
    Twitter

Docker Compose

앞서 도커(Docker)가 무엇인지 도커 내에 어떤 기능들이 있는지 보았다.

Docker의 기본

Docker 설치와 명령어

Docker 컨테이너 수명 & 지속적인 데이터

이제 도커 CLI 명령어를 통해 이미지를 만들고 컨테이너를 띄우고 불륨에 영구적으로 데이터를 저장시킬 수 있게 되었으며 DockerFile을 통해 파일 하나로 내 입맛대로 설정할 수 있게 되었다. 도커를 통해 내가 원하는 환경들을 쉽게 구성할 수 있게 된 것이다.

이제 이렇게 올린 컨테이너 안에 내가 만든 애플리케이션을 올린다고 생각해보자. 보통 하나의 애플리케이션에는 여러 개의 서비스로 이루어져 있는데, 이를 하나의 YAML파일에 정의하여 실행할 수 있도록 하는게 Docker Compose다.

compose는 보통 3가지의 단계로 이루어진 프로세스를 가진다.

  1. DockerFile은 어디서나 환경을 구성할 수 있도록 앱의 환경을 정의한다.
  2. Docker ComposeDockerFile로 만들어진 환경에서 함께 실행할 수 있도록 앱을 구성하는 서비스를 정의한다.
  3. docker compose up 명령을 하면 앞의 과정들이 실행되게 된다.

Docker Compose 파일 구성하기

version: '3' # 버전 지정

services: # 서비스 정의
  servicename: # 서비스 이름 지정
    image: # 사용할 이미지
    command: # 컨테이너 안에서 작동하는 명령어 지정
    environment: # docker run 명령어에서 -e 옵션과 같다.
    volumes: # docker run 명령어에서 -v 옵션과 같다.
    ports:
  sevicename2:
    # ....
volumes: # docker volume create 명령어와 같다. 불륨을 정의한다.

networks: # docker network create 명령어와 같다. 네트워크를 정의한다.

도커 파일자체를 지정해서 빌드할 수 도 있다.

services:
  servicename:
    bulid:
      context:
      dockerfile:

Docker Compose 장점 및 사용사례

위와 같이 Docker Compose를 이용하면 개발 환경을 컨테이너화 하여 언제 어디에서든 Docker만 설치하면 해당 파일을 통해 어플리케이션을 띄우고 개발을 시작할 수 있게 되어 매우 편리해진다. 환경을 설정하는데 들이는 리소스들을 도커 하나로 해결할 수 있게 되며 이는 개발에 좀 더 집중할 수 있게 해준다. 또한 모두가 동일한 환경으로 세팅되는 것을 보장받기 때문에 개발 환경 차이로 인해 생기는 알 수 없는 미묘한 문제들을 사전에 방지할 수 있다.

또한 테스트를 할 때도 용이한데 compose 파일을 정의하여 자동화된 테스트 환경을 구성할 수 있다.