728x90
반응형
출처 : 그림과 실습으로 배우는 도커 & 쿠버네티스
도커 컴포즈 정의 파일의 내용 살펴보기
- 도커 컴포즈는 정의 파일(컴포즈 파일)을 그대로 실행하는 역할을 하므로 컴포즈 파일이 반드시 필요하다.
- 이전에 만든 아파치 컨테이너와 똑같은 컨테이너를 만드는 컴포즈 파일을 살펴보자.
version: "3"
services:
zw_apache:
image: httpd
ports:
- 8080:80
restart: always
docker run --name zw_apache -d -p 8080:80 httpd
- 위 컴포즈 파일은 우리가 지금까지 했던 아파치 컨테이너를 만드는 명령어와 표현만 다를 뿐 동일한 내용이다.
- 워드프레스 컨테이너와 동일한 설정의 컨테이너를 만드는 컴포즈 파일로 한번 더 살펴보자. (편의상 MySQL과 네트워크 부분은 생략하고 워드프레스 컨테이너 부분만 작성)
version: "3"
services:
zw_wordpress:
depends_on:
- zw_mysql
image: wordpress
network:
- zw_wordpress_net
ports:
- 8085:80
restart: always
environment:
WORDPRESS_DB_HOST=zw_mysql
WORDPRESS_DB_NAME=wordpress_db
WORDPRESS_DB_USER=wordpress_zw
WORDPRESS_DB_PASSWORD=zwpass
docker run --name zw_wordpress -dit --net=zw_wordpress_net -p 8085:80 -e WORDPRESS_DB_HOST=zw_mysql -e WORDPRESS_DB_NAME=wordpress_db -e WORDPRESS_DB_USER=wordpress_zw -e WORDPRESS_DB_PASSWORD=zwpass wordpress
컴포즈 파일(정의 파일) 작성법
- 정의 파일은 YAML 형식을 따른다. 파일의 확장자는 .yml이다. 메모장 등의 텍스트 에디터로 작성하면 된다.
- 파일 이름은 docker-compose.yml 이라고 짓는다. -f 옵션을 사용해 파일 이름을 지정하면 다른 이름을 사용할 수 있지만 그렇지 않다면 정해진 이름을 사용해야 한다.
- 정의 파일의 형식
- YAML 형식
- 파일 이름
- docker-compose.yml
컴포즈 파일을 작성하는 방법
- 컴포즈 파일은 맨 앞에 컴포즈 버전을 적고, services와 networks, volumes를 차례로 기입한다.
- 도커 컴포즈와 쿠버네티스에서는 컨테이너의 집합체를 서비스라고 부른다(본질은 그냥 컨테이너다).
- 작성 요령은 주 항목 -> 이름 추가 -> 설정과 같은 순서이다.
- 주 항목은 services, networks, volumes 등이 있으며, 주 항목 아래에 정의 내용이 기재되므로 services: 와 같이 뒤에 콜론(:)을 붙인다.
version: <- 버전 기재
services: <- 컨테이너 관련 정보
networks: <- 네트워크 관련 정보
volumes: <- 볼륨 관련 정보
- 주 항목 아래에는 이름을 기재한다. 컨테이너는 컨테이너 이름, 네트워크는 네트워크 이름, 볼륨은 볼륨 이름을 기재한다.
- 이름은 주 항목보다 한 단 들여쓰기해서 적는다. 한 단의 공백 개수는 몇 개여도 상관없지만 탭은 사용할 수 없다. 한 단을 '공백 한 개'로 정했다면 그 뒤로도 계속 같은 갯수의 공백을 한 단으로 사용해야 한다. YAML 형식은 공백에 따라 의미가 달라지기 때문이다.
- 이름 뒤에는 반드시 콜론(:)을 붙인다.
- 해당 줄에 이어서 설정을 기재하려면 콜론 뒤로 공백이 하나 있어야 한다.
- 여러 항목이 있으면 같은 들여쓰기로 기재한다.
version: "3"
services:
컨테이너_이름1:
컨테이너_이름2:
networks:
네트워크_이름1:
volumes:
볼륨_이름1:
볼륨_이름2:
- 이름을 기재한 다음에는 각 컨테이너의 설정을 기재한다.
- 기재할 내용이 한 가지라면 콜론 뒤에 이어적으면 된다. 하지만 내용이 여러 개라면 줄을 바꿔 하이픈(-)을 앞에 적고 들여쓰기를 맞춘다. 이때 들여쓰기는 한 단을 더 들여쓴다.
컴포즈 파일 작성 요령 정리
- 첫 줄에 도커 컴포즈 버전을 기재한다.
- 주 항목(services, networks, volumes)아래에 설정 내용을 기재한다.
- 항목 간의 상화 관계는 공백을 사용한 들여쓰기로 나타낸다.
- 들여쓰기는 같은 수의 배수만큼의 공백을 사용한다.
- 이름은 주 항목 아래에 들여쓰기한 다음 기재한다.
- 컨테이너 설정 내용은 이름 아래에 들여쓰기한 다음 기재한다.
- 여러 항목을 기재하려면 줄 앞에 하이픈을 붙인다.
- 이름 뒤에는 콜론을 붙인다.
- 콜론 뒤에는 반드시 공백이 와야 한다.
- # 뒤의 내요은 주석으로 간주한다.
- 문자열은 작은 따옴표 또는 큰 따옴표로 감싼다.
- depends_on은 다른 서비스에 대한 의존관계를 나타낸다.
- restart는 컨테이너 종료 시 재시작 여부를 설한다.
[실습] 컴포즈 파일 작성
- 워드프레스 및 MySQL 컨테이너와 동일한 컨테이너를 만드는 컴포즈 파일을 작성해본다.
- 워드프레스 컨테이너는 depends_on 항목을 추가해 의존관계를 설정한다.
- 볼륨에 대한 정보도 추가한다.
실습 내용
- 주 항목 작성
- 이름 작성
- MySQL 컨테이너 정의 작성
- 워드프레스 컨테이너 정의 작성
실습
먼저 내 문서에 com_folder라는 이름의 폴더를 하나 생성한다. 그리고 메모장을 사용해 컴포즈 파일을 작성한다. 파일 이름은 docker-compose.yml로 한다.
version: "3"
services:
networks:
volumes:
버전과 필수 주 항목을 작성한다.
version: "3"
services:
zw_mysql:
zw_wordpress:
networks:
wordpress_net:
volumes:
mysql_vol:
wordpress_vol:
이름을 작성한다.
version: "3"
services:
zw_mysql:
image: mysql:5.7
networks:
- wordpress_net
volumes:
- mysql_vol:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: myrootpass
MYSQL_DATABASE: wordpress_db
MYSQL_USER: wordpress_zw
MYSQL_PASSWORD: zwpass
zw_wordpress:
networks:
wordpress_net:
volumes:
mysql_vol:
wordpress_vol:
MySQL 컨테이너의 정의를 작성한다.
version: "3"
services:
zw_mysql:
image: mysql:5.7
networks:
- wordpress_net
volumes:
- mysql_vol:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: myrootpass
MYSQL_DATABASE: wordpress_db
MYSQL_USER: wordpress_zw
MYSQL_PASSWORD: zwpass
zw_wordpress:
depends_on:
- zw_mysql
image: wordpress
networks:
- wordpress_net
volumes:
- wordpress_vol:/var/www/html
ports:
- 8085:80
restart: always
environment:
WORDPRESS_DB_HOST: zw_mysql
WORDPRESS_DB_NAME: wordpress_db
WORDPRESS_DB_USER: wordpress_zw
WORDPRESS_DB_PASSWORD: zwpass
networks:
wordpress_net:
volumes:
mysql_vol:
wordpress_vol:
워드프레스 컨테이너의 정의를 작성한다. 작성을 한 후 저장을 한다.
728x90
반응형
'Study > 도커와 쿠버네티스 (Docker & Kubernetes)' 카테고리의 다른 글
도커 엔진 - 도커 이미지와 컨테이너 (0) | 2024.02.19 |
---|---|
도커 컴포즈 실행 (0) | 2024.02.17 |
도커 컴포즈의 설치와 사용법 (0) | 2024.02.16 |
도커 컴포즈의 정의 (0) | 2024.02.16 |
컨테이너 개조 (0) | 2024.02.15 |