IT/Docker

docker-compose , compose file(YAML 파일)

DS지니 2021. 3. 21. 05:52
728x90
반응형

1. YAML 또는 YML 파일 형식

<위키백과>

YAML은 원래 Yet Another Markp Languge(또 다른 마크업 언어)의 의미였으나, YAML의 핵심은 문서 마크업이 아닌 데이터 중심에 있다는 것을 보여주기 위해 이름을 `Ain't Markup Language`로 바꾸었다.

오늘날 XML과 JSON이 데이터 직렬화에 주로 쓰이기 시작하면서, 많은 사람들이 YAML을 '가벼운 마크업 언어`로 사용하려 하고 있다.

 

- 데이터 직렬화(Serializaition)는 데이터를 시스템끼리 전송하고 전달할 때 사용됩니다.

- Byte Array, JSON, YAML 등이 있습니다.

- JSON 디자인 목표 : 간편성, 보편성

- YAML 디자인 목표 : 가독성

 

2. docker-compose

: 여러개의 도커 컨테이너를 관리하기 위한 도구(Tool)

혹은 여러개의 컨테이너로 구성된 애플리케이션을 관리하기 위한 간단한 오케스트레이션(Orchestration) 도구

 

docker-compose에서 서비스를 정의하는 YAML 파일(docekr-compose.yml)을 만들고, 단일 명령을 사용해 여러 컨테이너들을 모두 실행하거나 종료할 수 있습니다. 

compose의 중요한 이점으로는 Compose file(=yaml)에서 어플리케이션 스택을 정의하고 프로젝트 리포지토리 루트에 파일을 저장해 다른 사용자가 프로젝트에 참여하기 쉽게 만들어 졌다는 것 입니다. 사용자가 리포지토리를 복제하고 Compose 앱을 시작하기만 하면 됩니다. 실제로도 Github에서 docker-compose를 수행하는 많은 프로젝트를 볼 수 있습니다. docs.microsoft - docker compose

 

docker-compose 실행 Step 4

1. 앱의 환경을 정의해 어디서나 재사용할 수 있는 Dockerfile을 정의

2. docker-compose.yml에서 앱 실행을 위한 사용자 정의를 작성해 하나의 환경에서 실행할 수 있게 하기

3. docker-compose up 명령어를 실행해 compose를 시작시키고 전체의 앱을 한번에 생성하고 실행시킴

- docker-compose up -d 로 -d 옵션을 사용해 백그라운드에서 컨테이너 띄우기

- 그렇지 않으면 현재 터미널에 컨테이너의 로그가 출력되고 Ctrl+C를 눌러 탈출하는 순간 컨테이너가 모두 정지된다.

4. docker-compose down 로 모든 서비스 컨테이너 한번에 정지시키고 삭제

 

<YAML 파일 작성 예시>

version: "3.7"

services:
  app:
    image: node:12-alpine
    command: sh -c "yarn install && yarn run dev"
    ports:
      - 3000:3000
    working_dir: /app
    volumes:
      - ./:/app
    environment:
      MYSQL_HOST: mysql
      MYSQL_USER: root
      MYSQL_PASSWORD: secret
      MYSQL_DB: todos

  mysql:
    image: mysql:5.7
    volumes:
      - todo-mysql-data:/var/lib/mysql
    environment: 
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: todos

volumes:
  todo-mysql-data:

 

하나의 docker-compose에서 관리되는 컨테이너끼리는 동일한 docker network에서 구동됩니다.

(docker run 명령과 다르게 docker-compose 파일 안에서 기본 network가 사용됨)

 

3. Docker Compose CLI

docker 공식문서

 

docs.docker.com/engine/reference/commandline/compose/

 

docker compose

docker compose: Docker Compose

docs.docker.com

docs.docker.com/compose/

 

Overview of Docker Compose

 

docs.docker.com

 

728x90
반응형

'IT > Docker' 카테고리의 다른 글

Docker CLI (Command Line Interface)  (0) 2021.03.21
Linux Container 리눅스 컨테이너  (0) 2021.03.20
Docker가 필요한 이유  (0) 2021.03.20
Docker 관련 영상 및 자료  (0) 2021.03.20