웹 개발자로서 우리는 애플리케이션 배포 및 유지 관리의 모든 복잡성을 안고 애플리케이션에 적합한 호스팅을 찾았습니다. 하지만 이제 우리는 클라우드 제공업체가 거의 무료로 많은 것을 만들 수 있는 새로운 시대에 살고 있습니다. .NET 개발자의 경우 Microsoft Azure는 웹 애플리케이션을 호스팅하는 데 가장 자연스러운 선택으로 보입니다.
Docker는 애플리케이션을 실행하는 플랫폼과 환경에서 추상화를 가능하게 하는 또 다른 기술입니다.
이 문서에서는 간단한 ASP.NET Core 웹 애플리케이션을 만드는 방법, 애플리케이션으로 Docker 이미지를 만드는 방법, 그리고 이를 Azure에 배포하는 가장 쉬운 방법에 대한 자세한 가이드를 제공합니다. 결국, 웹 애플리케이션을 배포하고 전 세계에서 액세스할 수 있게 만드는 방법을 잘 이해하게 될 것입니다.
이 글에서는 개발 목적으로 JetBrains Rider를 사용하겠습니다. 하지만 원하는 도구를 사용할 수 있습니다.
먼저, 새로운 프로젝트를 생성해야 합니다. 간단하게 ' webapp '이라고 부르자.
새 프로젝트를 생성한 후에는 다음과 같아야 합니다.
프로젝트에 아무런 변화 없이 Dockerfile
에 집중하겠습니다. 다음 예시와 같이 수정하세요.
FROM mcr.microsoft.com/dotnet/aspnet:6.0 as base WORKDIR /app EXPOSE 8080 ENV ASPNETCORE_URLS http://+:8080 FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build COPY . /src WORKDIR /src RUN dotnet build "webapp.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "webapp.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "webapp.dll"]
HTTP를 통해 도커 컨테이너에 연결할 수 있으려면 EXPOSE 8080
및 ENV ASPNETCORE_URLS http://+:8080
줄에 주의해야 합니다.
명령줄에서 Docker 이미지를 빌드합니다. webapp
프로젝트 디렉터리로 이동하여 다음 명령을 실행해야 합니다.
DOCKER_BUILDKIT=1 docker buildx build --platform linux/amd64 --tag drmoz/webapp:latest .
Mac M1에서 실행 중이며 Azure 배포와 호환되도록 --platform
매개 변수를 명시적으로 지정해야 합니다. 또한 다른 아키텍처에 대한 이미지를 빌드하려면 DOCKER_BUILDKIT=1
매개변수를 지정하고 buildx
사용하여 Docker Buildkit을 활성화해야 합니다.
Intel x86/x64 플랫폼에서 실행하는 경우 --platform
매개변수를 지정하고 buildx
활성화할 필요 없이 docker build
명령을 사용할 수 있습니다.
이미지에 다른 태그를 지정할 수 있지만 Docker Hub를 사용할 예정이므로 이미지 태그 drmoz/webapp:latest
의 일부로 계정 이름 drmoz
지정해야 합니다.
이미지가 빌드되면 다음 명령을 실행하여 Docker에 이미지가 있는지 확인할 수 있습니다.
docker images
목록에 있어야 합니다:
REPOSITORY TAG IMAGE ID CREATED SIZE drmoz/webapp latest 0cfac748256b 37 minutes ago 216MB
새로 생성된 이미지가 제대로 작동하는지 확인하기 위해 Docker 컨테이너를 실행해 보겠습니다. docker run
명령을 실행하여 컨테이너를 시작합니다.
docker run -p 5555:8080 drmoz/webapp:latest
-p
매개변수를 지정하여 컨테이너 내부의 8080
포트를 로컬 시스템 5555
포트에 매핑합니다. 또한 컨테이너를 생성하려면 이미지 이름을 지정하세요. 제 경우에는 drmoz/webapp:latest
입니다.
이제 브라우저 http://localhost:5555
로 이동하여 ASP.NET Core 웹앱 홈 페이지를 볼 수 있습니다.
Docker Hub 에 이미지를 푸시해야 합니다. 그 전에 Docker Registry에 등록하고 저장소를 생성해야 합니다. 홈페이지 오른쪽 모서리에 있는 ' 저장소 만들기 ' 버튼을 클릭합니다.
Repository Name
필드를 지정하고 저장소 가시성을 Public
유지합니다.
명령줄에서 Docker Hub 레지스트리에 로그인해야 합니다.
docker login
그런 다음 새로 생성된 이미지를 레지스트리에 푸시할 수 있습니다.
docker push drmoz/webapp:latest
저장소로 이동하면 이미지에 대한 정보가 표시됩니다.
이제 ASP.NET Core 웹 애플리케이션을 Azure에 배포할 준비가 되었습니다. Azure Portal에 로그인하고 새 리소스 그룹을 만들어 보겠습니다. 리소스 그룹 이름을 ' webapp-rg '로 지정하고 '검토 + 생성' 버튼을 클릭합니다.
다음 화면에서 '만들기' 버튼을 누르세요.
이제 웹앱을 만들 수 있습니다. '리소스 만들기' 페이지로 이동하여 WebApp을 찾습니다. '만들기' 버튼을 클릭하세요.
이전에 만든 Resource Group
을 지정해야 합니다. 또한 웹앱의 고유한 Name
지정합니다. Publish
필드에서 'Docker 컨테이너'를 선택합니다. 나중에 사용할 Docker 이미지를 지정할 수 있습니다.
Pricing plans
섹션에서 적합한 옵션을 선택하세요. 하지만 테스트 목적으로 무료 F1 타이어를 사용하는 것이 좋습니다. Docker 탭으로 이동합니다.
이 탭의 Image Source
필드에서 'Docker Hub'를 선택하세요. Access Type
필드에서 '공개'를 선택하고 Docker Hub에 푸시한 이미지 이름으로 Image and tag
값을 지정합니다. '검토 + 만들기' 탭으로 이동합니다. 이 탭에서 '만들기' 버튼을 클릭하세요.
새 리소스가 배포되면 이 리소스로 이동할지 묻는 메시지가 표시됩니다. 그냥 해. 웹앱 관련 정보를 보실 수 있습니다.
배포된 웹 애플리케이션을 열려면 '찾아보기' 버튼을 클릭하세요. 모든 것이 올바르게 진행되면 http://localhost:5555
이동하여 브라우저에서 본 것과 비슷한 ASP.NET Core 웹앱 홈 페이지가 표시됩니다.
'배포 센터' 설정으로 이동하여 '배포 계속'을 활성화하면 새 이미지를 Docker Hub에 푸시할 때마다 이미지를 재배포할 수 있습니다. 이러한 방식으로 코드를 변경하고, 새 이미지와 함께 Docker Hub에 푸시하고, Azure에서 몇 분 만에 변경 사항을 확인할 수 있습니다.
배포 로그를 보고 문제를 식별하려면 다음과 같이 'App Service 로그' 장에서 파일 시스템에 로그 저장을 활성화해야 합니다.
완료되면 '배포 센터'로 이동하여 다음과 같이 로그를 볼 수 있습니다.
이 지점에 도달했다면 ASP.NET Core 웹 애플리케이션을 생성한 것입니다. Docker 이미지에 압축하고 Azure에 배포합니다. 오늘날 기술은 삶을 더 쉽게 만들고 개발 프로세스를 가속화합니다. 애플리케이션을 클라우드 제공업체에 배포하고 전 세계에 공개하고 테스트를 수행하고 작업 결과를 확인하는 것이 얼마나 쉬운지 확인할 수 있습니다.
이제 Microsoft 설명서를 사용하여 Azure 클라우드 공급자에 대한 세부 정보를 알아볼 수 있습니다. 또한 이 기술에 대해 더 깊이 이해하려면 Docker 설명서를 살펴보세요. 도움이 되었으면 좋겠습니다.