Docker Compose 구성을 사용하여 다중 컨테이너(미리 보기) 앱 만들기
참고 항목
사이드카 컨테이너(미리보기)는 App Service에서 멀티 컨테이너 앱을 이어받게 됩니다. 시작하려면 자습서: Azure App Service(미리 보기) 사용자 지정 컨테이너에 대한 사이드카 컨테이너 구성을 참조하세요.
Web App for Containers는 Docker 이미지를 사용할 수 있는 유연한 방법을 제공합니다. 이 빠른 시작은 Docker Compose 구성을 사용하여 Cloud Shell에서 Web App for Containers에 다중 컨테이너 앱(미리 보기)을 배포하는 방법을 보여줍니다.
Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.
사전 요구 사항
Azure Cloud Shell에서 Bash 환경을 사용합니다. 자세한 내용은 Azure Cloud Shell의 Bash에 대한 빠른 시작을 참조하세요.
CLI 참조 명령을 로컬에서 실행하려면 Azure CLI를 설치합니다. Windows 또는 macOS에서 실행 중인 경우 Docker 컨테이너에서 Azure CLI를 실행하는 것이 좋습니다. 자세한 내용은 Docker 컨테이너에서 Azure CLI를 실행하는 방법을 참조하세요.
로컬 설치를 사용하는 경우 az login 명령을 사용하여 Azure CLI에 로그인합니다. 인증 프로세스를 완료하려면 터미널에 표시되는 단계를 수행합니다. 다른 로그인 옵션은 Azure CLI를 사용하여 로그인을 참조하세요.
메시지가 표시되면 처음 사용할 때 Azure CLI 확장을 설치합니다. 확장에 대한 자세한 내용은 Azure CLI에서 확장 사용을 참조하세요.
az version을 실행하여 설치된 버전과 종속 라이브러리를 찾습니다. 최신 버전으로 업그레이드하려면 az upgrade를 실행합니다.
이 문서에는 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에 다중 컨테이너 앱을 만들었습니다.
배포 정리
샘플 스크립트가 실행된 후, 다음 명령을 사용하여 리소스 그룹 및 리소스 그룹과 연관된 모든 리소스를 제거할 수 있습니다.
az group delete --name myResourceGroup