본문 바로가기
DevOps/Docker

[Docker] : YAML 파일 작성(1)

by 오주현 2022. 3. 8.
반응형

YAML 파일 작성

도커 컴포즈를 실 사용하기 위해 더 많은 옵션과 명령어를 공부해야 하고 YAML 파일 작성에도 익숙해야 한다. 기존에 사용하던 run 명령어를 YAML 파일로 변환해 사용하는 게 도커 컴포즈의 사용법이다.

 

YAML 파일은 버전, 서비스, 볼름, 네트워크 이렇게 총 4개의 정의 항목으로 구성된다. 가장 많이 사용하는 건 서비스 정의이고 볼륨과 네트워크 정의는 서비스로 생성된 컨테이너에 선택적으로 사용된다. 항목의 하위 항목을 정의하기 위해 2개의 공북으로 들여쓰기해서 상위 항목과 구분한다.

버전 정의

버전은 YAML 맨 윗 부분에 정의한다.

version: '3.0'

서비스 정의

서비스는 컨테이너로 구현된다. 하나의 프로젝트로서 도커 컴포즈에 의해 관리된다.

services:
  my_container_1:
    image:
  my_container_2:
    image:

여기서 image는 컨테이너를 생성할 때 사용할 이미지 이름을 설정하면 된다.

services:
	web:
	links:
		- db
		- db:database
		- redis

links는 docker run의 —link와 같다. 다른 서비스에 서비스명만으로 접근할 수 있게 한다.

services:
	web:
		enviroment:
			- MYSQL_ROOT_PASSWORD=mypassword
			- MYSQL_DATABASE_NAME=mydb

environment는 docker run의 —env, -e와 같다. 서비스 컨테이너 내부에서 사용할 환경변수를 지정하고 딕셔너리나 배열 형태로 사용할 수 있다.

web:
		command: [apachectl, -DFOREGROUND]

command는 컨테이너가 실행될 때 수행할 명령어를 설정한다.

web:
	depends_on
		- mysql

depends_on은 특정 컨테이너에 대한 의존 관계를 나타낸다.

web:
	image:
		ports:
			- "8080"

ports는 서비스의 컨테이너를 개방할 포트를 설정한다.

web:
	build: ./composetest

build 항목에 정의된 Dockerfile에서 이미지를 빌드해 서비스의 컨테이너를 생성하도록 설정한다.

web:
	extends:
	file: extend_compose.yml
	service: extend_web

다른 YAML 파일이나 현재 YAML 파일에서 서비스 속성을 상속받게 설정한다.

네트워크 정의

driver을 정의해 서비스의 컨테이너가 브리지 네트워크가 아닌 다른 네트워크를 사용하도록 설정할 수 있다.

ipam(IP Address Manager)를 사용한다. subnet, ip 범위 등을 설정한다.

external은 YAML 파일을 통해 프로젝트 생성 시 네트워크를 생성하는 게 아니라 기존 네트워크를 사용하도록 설정한다.

 

공백은 탭을 적어주었는데 깨진다. 스페이스바 2번으로 바꿔서 적용하면 된다.


📖 ← [ 시작하세요! 도커/쿠버네티스 ] 책을 참고하여 공부하였습니다.

반응형

댓글