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/
'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 |