1. 개요
<Docker 가상 환경 구축 입문>의 <Chapter 9-11. 컴포즈 파일을 이용한 서비스 생성>을 읽고 정리한 내용입니다.
2. Compose 파일을 이용한 서비스 생성 (Wordpress 서비스 생성 예제)
- docker service create 명령어에 세세한 설정을 지정하여 실행하지 않고, 별도의 설정 파일인 docker-compose.yml을 작성하여 서비스를 생성할 수 있음.
-
docker-compose.yml
version: '3.4' services: wordpress: image: wordpress ports: - 8080:80 environment: WORDPRESS_DB_PASSWORD: samplewp deploy: replicas: 2 placement: constraints: - node.role == worker depends_on: - mysql mysql: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: samplewp volumes: - mysql_vol:/var/lib/mysql deploy: replicas: 1 placement: constraints: - node.hostname == manager1 volumes: mysql_vol:
- depends_on 항목에서 WordPress는 mysql 서비스에 의존적이라고 명시하였으므로, mysql이 먼저 기동됨.
- 기존의 docker-compose.yml 파일과 비슷하지만, deploy 부분에 Swarm과 관련된 설정을 기재함.
- 레플리카 수를 지정하거나, 어떤 노드에서 실행할 지 제한할 수 있음.
-
docker stack deploy 명령어 실행
# docker stack deploy --compose-file <compose file name> <stack name> $ docker stack deploy --compose-file docker-compose.yml wp $ docker service ls ID NAME MODE REPLICAS IMAGE PORTS ls6lglbddk2i wp_mysql replicated 1/1 mysql:5.7 i691r4z9vjs4 wp_wordpress replicated 2/2 wordpress:latest *:8080->80/tcp
- 만약 서비스가 올라오지 않고, 레플리카 수가 0에 멈춰있다면 docker service ps <NAME> 명령어로 현재 상태 및 서비스 기동 불가의 원인을 확인할 수 있음.
- Docker에서 스택이란 의존 관계를 가진 여러개의 서비스 그룹을 정의한 것으로 위 예제의 wordpress와 mysql의 관계가 스택이라고 할 수 있음.
- 스택 이름은 각 서비스의 접두사로 붙게 되니 참고.
-
docker stack 명령어를 통한 서비스 확인 및 삭제
$ docker stack ls NAME SERVICES ORCHESTRATOR wp 2 Swarm $ docker stack remove wp Removing service wp_mysql Removing service wp_wordpress Removing network wp_default $ docker stack ls NAME SERVICES ORCHESTRATOR