샘플 스택 배포
이 단계에서는 Docker Compose 를 사용하여 샘플 스택을 배포하는 방법을 배우게 됩니다. Docker Compose 는 다중 컨테이너 Docker 애플리케이션을 정의하고 실행하기 위한 도구입니다. Compose 를 사용하면 YAML 파일을 사용하여 애플리케이션의 서비스를 구성합니다. 그런 다음, 단일 명령으로 구성에서 모든 서비스를 생성하고 시작합니다.
LabEx 환경에는 Docker Compose 가 사전 설치되어 있지 않으므로 먼저 설치해야 합니다. 설치된 Docker 버전과 호환되는 Docker Compose 버전 1.29.2 를 설치합니다.
먼저, Docker Compose 바이너리를 다운로드합니다.
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
이 명령어는 공식 GitHub 저장소에서 Docker Compose 바이너리를 다운로드하여 /usr/local/bin/docker-compose에 저장합니다. $(uname -s) 및 $(uname -m) 부분은 운영 체제와 아키텍처를 자동으로 감지합니다.
다음으로, 바이너리에 실행 권한을 적용합니다.
sudo chmod +x /usr/local/bin/docker-compose
이 명령어는 다운로드한 파일을 실행 가능하게 만듭니다.
이제 Docker Compose 버전을 확인하여 설치를 확인합니다.
docker-compose --version
docker-compose version 1.29.2, build 5becea4c와 유사한 출력을 볼 수 있습니다.
이제 Docker Compose 가 설치되었으므로 스택을 정의하기 위해 간단한 Docker Compose 파일을 만들어 보겠습니다. ~/project 디렉토리에 docker-compose.yml이라는 파일을 생성합니다.
nano 편집기를 사용하여 파일을 생성하고 편집합니다.
nano ~/project/docker-compose.yml
다음 내용을 docker-compose.yml 파일에 붙여넣습니다.
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
app:
image: alpine:latest
command: echo "Hello from Alpine"
이 docker-compose.yml 파일은 두 개의 서비스를 정의합니다.
web: nginx:latest 이미지를 사용하고 호스트의 포트 80 을 컨테이너의 포트 80 에 매핑합니다.
app: alpine:latest 이미지를 사용하고 간단한 echo 명령을 실행합니다.
Ctrl + S를 눌러 파일을 저장하고 Ctrl + X를 눌러 편집기를 종료합니다.
스택을 배포하기 전에 필요한 이미지를 가져오겠습니다. Docker Compose 는 배포 중에 자동으로 이미지를 가져올 수 있지만, 미리 명시적으로 가져오는 것이 도움이 될 수 있습니다.
nginx:latest 이미지를 가져옵니다.
docker pull nginx:latest
alpine:latest 이미지를 가져옵니다.
docker pull alpine:latest
이제 docker-compose up 명령을 사용하여 스택을 배포합니다. -d 플래그는 컨테이너를 분리된 모드 (백그라운드) 에서 실행합니다.
docker-compose.yml 파일을 생성한 ~/project 디렉토리로 이동합니다.
cd ~/project
그런 다음, 다음 명령을 실행합니다.
docker-compose up -d
이 명령어는 docker-compose.yml 파일을 읽고 정의된 서비스를 생성하고 시작합니다. web 및 app 서비스의 생성 및 시작을 나타내는 출력을 볼 수 있습니다.
서비스가 실행 중인지 확인하려면 실행 중인 컨테이너를 나열할 수 있습니다.
docker ps
web 서비스 ( nginx 기반) 와 app 서비스 ( alpine 기반) 에 대한 두 개의 컨테이너가 실행 중인 것을 볼 수 있습니다.