Docker Compose 구성을 사용하여 다중 컨테이너(미리 보기) 앱 만들기

참고 항목

사이드카 컨테이너(미리보기)는 App Service에서 멀티 컨테이너 앱을 이어받게 됩니다. 시작하려면 자습서: Azure App Service(미리 보기) 사용자 지정 컨테이너에 대한 사이드카 컨테이너 구성을 참조하세요.

Web App for Containers는 Docker 이미지를 사용할 수 있는 유연한 방법을 제공합니다. 이 빠른 시작은 Docker Compose 구성을 사용하여 Cloud Shell에서 Web App for Containers에 다중 컨테이너 앱(미리 보기)을 배포하는 방법을 보여줍니다.

Web App for Containers의 다중 컨테이너 앱 샘플

Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.

사전 요구 사항

이 문서에는 Azure CLI 버전 2.0.32 이상이 필요합니다. Azure Cloud Shell을 사용하는 경우 최신 버전이 이미 설치되어 있습니다.

샘플 다운로드

이 빠른 시작에서 Docker의 Compose 파일을 사용합니다. 구성 파일은 Azure 샘플에 있습니다.

version: '3.3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:

Cloud Shell에서 quickstart 디렉터리를 만든 다음, 해당 디렉토리로 이동합니다.

mkdir quickstart

cd $HOME/quickstart

이어서 다음 명령을 실행하여 quickstart 디렉터리에 샘플 앱 리포지토리를 복제합니다. 그런 다음, multicontainerwordpress 디렉터리로 변경합니다.

git clone https://github.com/Azure-Samples/multicontainerwordpress

cd multicontainerwordpress

리소스 그룹 만들기

리소스 그룹은 웹앱, 데이터베이스, 스토리지 계정과 같은 Azure 리소스가 배포되고 관리되는 논리적 컨테이너입니다. 예를 들어 나중에 간단한 단계 하나만으로 전체 리소스 그룹을 삭제하도록 선택할 수 있습니다.

Cloud Shell에서 az group create 명령을 사용하여 리소스 그룹을 만듭니다. 다음 예제에서는 미국 중남부 위치에 myResourceGroup이라는 리소스 그룹을 만듭니다. 표준 계층에서 App Service on Linux의 모든 지원 위치를 확인하려면 az appservice list-locations --sku S1 --linux-workers-enabled 명령을 실행합니다.

az group create --name myResourceGroup --location "South Central US"

일반적으로 사용자와 가까운 지역에서 리소스 그룹 및 리소스를 만듭니다.

명령이 완료되면 JSON 출력이 리소스 그룹 속성을 보여줍니다.

Azure App Service 계획 만들기

Cloud Shell에서 az appservice plan create 명령을 사용하여 리소스 그룹에 App Service 계획을 만듭니다.

다음 예제에서는 표준 가격 책정 계층(--sku S1) 및 Linux 컨테이너(--is-linux)에서 myAppServicePlan이라는 App Service 계획을 만듭니다.

az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku S1 --is-linux

App Service 계획을 만든 경우 Azure CLI는 다음 예제와 비슷한 정보를 표시합니다.

{
  "adminSiteName": null,
  "appServicePlanName": "myAppServicePlan",
  "geoRegion": "South Central US",
  "hostingEnvironmentProfile": null,
  "id": "/subscriptions/0000-0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/myAppServicePlan",
  "kind": "linux",
  "location": "South Central US",
  "maximumNumberOfWorkers": 1,
  "name": "myAppServicePlan",
  < JSON data removed for brevity. >
  "targetWorkerSizeId": 0,
  "type": "Microsoft.Web/serverfarms",
  "workerTierName": null
}

Docker Compose 앱 만들기

참고 항목

현재 Base64로 전환될 경우 Azure App Services의 Docker Compose는 4,000자로 제한되어 있습니다.

Cloud Shell 터미널에서 az webapp create 명령을 사용하여 myAppServicePlan App Service 계획에 다중 컨테이너 웹앱을 만듭니다. <app_name>을 고유한 앱 이름으로 바꿔야 합니다(유효한 문자는 a-z, 0-9-).

az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app_name> --multicontainer-config-type compose --multicontainer-config-file compose-wordpress.yml

웹앱이 만들어지면 Azure CLI는 다음 예제와 비슷한 출력을 표시합니다.

{
  "additionalProperties": {},
  "availabilityState": "Normal",
  "clientAffinityEnabled": true,
  "clientCertEnabled": false,
  "cloningInfo": null,
  "containerSize": 0,
  "dailyMemoryTimeQuota": 0,
  "defaultHostName": "<app_name>.azurewebsites.net",
  "enabled": true,
  < JSON data removed for brevity. >
}

앱으로 이동

(http://<app_name>.azurewebsites.net)에 배포된 앱으로 이동합니다. 앱을 로드하는 데 몇 분 정도 걸릴 수 있습니다. 오류가 발생하면 몇 분 후에 브라우저를 새로 고칩니다.

Web App for Containers의 다중 컨테이너 앱 샘플

축하합니다! Web App for Containers에 다중 컨테이너 앱을 만들었습니다.

배포 정리

샘플 스크립트가 실행된 후, 다음 명령을 사용하여 리소스 그룹 및 리소스 그룹과 연관된 모든 리소스를 제거할 수 있습니다.

az group delete --name myResourceGroup

다음 단계