Processing math: 100%

IT/Docker

docker-compose , compose file(YAML 파일)

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

1. YAML 또는 YML 파일 형식

<위키백과>

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

오늘날 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