여러 샘플 스택 배포
이 단계에서는 Docker Swarm 에 여러 스택을 배포하는 방법을 배웁니다. 이는 동일한 Swarm 내에서 서로 다른 애플리케이션 또는 서비스를 독립적으로 관리하는 방법을 보여줍니다.
Nginx 를 사용하는 스택과 Apache HTTP Server 를 사용하는 스택, 두 개의 간단한 스택을 배포합니다.
먼저 Apache 스택 정의를 위한 디렉토리를 생성해 보겠습니다. ~/project 디렉토리로 돌아가서 my-apache-stack이라는 새 디렉토리를 생성합니다.
cd ~/project
mkdir my-apache-stack
cd my-apache-stack
이제 nano 편집기를 사용하여 my-apache-stack 디렉토리 내에 docker-compose.yml 파일을 생성합니다.
nano docker-compose.yml
다음 내용을 docker-compose.yml 파일에 붙여넣습니다.
version: "3.8"
services:
web:
image: httpd:latest
ports:
- "81:80"
deploy:
replicas: 1
restart_policy:
condition: on-failure
이 docker-compose.yml 파일은 httpd:latest 이미지를 사용하는 web이라는 서비스를 정의합니다. 나중에 배포할 Nginx 스택과의 포트 충돌을 방지하기 위해 호스트의 포트 81 을 컨테이너의 포트 80 에 매핑합니다. 또한 하나의 레플리카와 재시작 정책을 지정합니다.
Ctrl + X, Y, Enter를 눌러 파일을 저장합니다.
배포하기 전에 httpd:latest 이미지를 풀 (pull) 합니다.
docker pull httpd:latest
이제 docker stack deploy 명령을 사용하여 Apache 스택을 배포합니다. 이 스택의 이름을 apache_stack으로 지정합니다.
docker stack deploy -c docker-compose.yml apache_stack
이 명령은 Apache 스택을 배포합니다.
다음으로, Nginx 스택을 다시 배포하기 위해 my-nginx-stack 디렉토리로 돌아갑니다.
cd ~/project/my-nginx-stack
docker stack deploy 명령을 사용하여 Nginx 스택을 배포합니다. 이 스택의 이름을 nginx_stack으로 지정합니다.
docker stack deploy -c docker-compose.yml nginx_stack
이제 두 스택이 모두 배포되었는지 확인해 보겠습니다. 배포된 스택을 나열합니다.
docker stack ls
apache_stack과 nginx_stack이 모두 나열되어야 합니다.
각 스택의 서비스를 개별적으로 확인할 수도 있습니다.
docker stack services apache_stack
docker stack services nginx_stack
apache_stack_web 서비스와 nginx_stack_web 서비스가 모두 1/1 레플리카로 실행 중인 것을 볼 수 있습니다.
웹 브라우저를 열고 LabEx VM 의 IP 주소와 포트 81 로 이동하여 Apache 웹 서버에 액세스할 수 있습니다. 기본 Apache 환영 페이지가 표시되어야 합니다. Nginx 웹 서버는 여전히 포트 80 에서 액세스할 수 있어야 합니다.