간단한 다중 서비스 애플리케이션 준비
이 단계에서는 이 랩 전체에서 Docker 서비스를 재시작하는 연습을 위해 사용할 간단한 다중 서비스 애플리케이션을 준비합니다. 이 애플리케이션은 웹 서비스와 데이터베이스 서비스의 두 가지 서비스로 구성됩니다. Docker Compose 파일을 사용하여 이러한 서비스를 정의합니다.
먼저 Docker Compose 를 설치해야 합니다. LabEx VM 환경에 미리 설치되어 있지 않으므로 다운로드하여 설치합니다.
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
첫 번째 명령은 공식 GitHub 저장소에서 Docker Compose 바이너리를 다운로드하여 /usr/local/bin/docker-compose에 저장합니다. $(uname -s) 및 $(uname -m) 부분은 운영 체제와 아키텍처를 자동으로 감지하여 올바른 바이너리를 다운로드합니다. 두 번째 명령은 다운로드한 파일을 실행 가능하게 만듭니다.
이제 Docker Compose 버전을 확인하여 설치를 확인해 보겠습니다.
docker-compose --version
Docker Compose version v2.20.2와 유사한 출력을 볼 수 있습니다.
다음으로, 이 랩의 작업 디렉토리인 ~/project 디렉토리로 이동합니다.
cd ~/project
이제 다중 서비스 애플리케이션을 정의하기 위해 docker-compose.yml 파일을 생성합니다. 이 파일은 서비스, 해당 이미지 및 필요한 구성을 지정합니다.
nano docker-compose.yml
다음 내용을 docker-compose.yml 파일에 붙여넣습니다.
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
depends_on:
- db
db:
image: postgres:latest
environment:
POSTGRES_PASSWORD: mysecretpassword
이 docker-compose.yml 파일에서:
version: '3.8'은 Docker Compose 파일 형식 버전을 지정합니다.
services:는 애플리케이션의 서로 다른 서비스를 정의합니다.
web 서비스는 nginx:latest 이미지를 사용하고, 호스트의 포트 80 을 컨테이너의 포트 80 에 매핑하며, db 서비스에 종속됩니다. 즉, db 서비스가 web 서비스보다 먼저 시작됩니다.
db 서비스는 postgres:latest 이미지를 사용하고 POSTGRES_PASSWORD 환경 변수를 설정합니다. 이는 PostgreSQL 이미지에 필요합니다.
파일을 저장하고 nano 편집기를 종료합니다 ( Ctrl + X, 다음 Y, 다음 Enter를 누릅니다).
서비스를 시작하기 전에 필요한 Docker 이미지를 가져와야 합니다.
docker pull nginx:latest
docker pull postgres:latest
이 명령은 Docker Hub 에서 nginx:latest 및 postgres:latest 이미지를 다운로드합니다.
마지막으로, docker-compose.yml 파일에 정의된 서비스를 시작해 보겠습니다.
docker-compose up -d
docker-compose up -d 명령은 백그라운드 (분리 모드) 에서 서비스를 빌드, 생성 및 시작합니다.
다음 명령을 사용하여 실행 중인 서비스의 상태를 확인할 수 있습니다.
docker-compose ps
web 및 db 서비스가 모두 실행 중임을 나타내는 출력을 볼 수 있습니다.