paint-brush
Docker 이미지에서 Azure에 ASP.NET Core 웹앱을 배포하는 방법~에 의해@igorlopushko
956 판독값
956 판독값

Docker 이미지에서 Azure에 ASP.NET Core 웹앱을 배포하는 방법

~에 의해 Igor Lopushko6m2024/01/19
Read on Terminal Reader

너무 오래; 읽다

이 문서에서는 간단한 ASP.NET Core 웹 애플리케이션을 만드는 방법, 애플리케이션으로 Docker 이미지를 만드는 방법, 그리고 이를 Azure에 배포하는 가장 쉬운 방법에 대한 자세한 가이드를 제공합니다. 결국, 웹 애플리케이션을 배포하고 전 세계에서 액세스할 수 있게 만드는 방법을 잘 이해하게 될 것입니다.
featured image - Docker 이미지에서 Azure에 ASP.NET Core 웹앱을 배포하는 방법
Igor Lopushko HackerNoon profile picture

소개

웹 개발자로서 우리는 애플리케이션 배포 및 유지 관리의 모든 복잡성을 안고 애플리케이션에 적합한 호스팅을 찾았습니다. 하지만 이제 우리는 클라우드 제공업체가 거의 무료로 많은 것을 만들 수 있는 새로운 시대에 살고 있습니다. .NET 개발자의 경우 Microsoft Azure는 웹 애플리케이션을 호스팅하는 데 가장 자연스러운 선택으로 보입니다.


Docker는 애플리케이션을 실행하는 플랫폼과 환경에서 추상화를 가능하게 하는 또 다른 기술입니다.


이 문서에서는 간단한 ASP.NET Core 웹 애플리케이션을 만드는 방법, 애플리케이션으로 Docker 이미지를 만드는 방법, 그리고 이를 Azure에 배포하는 가장 쉬운 방법에 대한 자세한 가이드를 제공합니다. 결국, 웹 애플리케이션을 배포하고 전 세계에서 액세스할 수 있게 만드는 방법을 잘 이해하게 될 것입니다.

1. ASP.NET Core 웹앱 만들기

이 글에서는 개발 목적으로 JetBrains Rider를 사용하겠습니다. 하지만 원하는 도구를 사용할 수 있습니다.


먼저, 새로운 프로젝트를 생성해야 합니다. 간단하게 ' webapp '이라고 부르자.

새 솔루션 만들기


새 프로젝트를 생성한 후에는 다음과 같아야 합니다.

프로젝트 구조


2. 도커 이미지 생성

프로젝트에 아무런 변화 없이 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 8080ENV 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 웹앱 홈 페이지를 볼 수 있습니다.

ASP.NET Core 웹앱: 홈 페이지



Docker Hub 에 이미지를 푸시해야 합니다. 그 전에 Docker Registry에 등록하고 저장소를 생성해야 합니다. 홈페이지 오른쪽 모서리에 있는 ' 저장소 만들기 ' 버튼을 클릭합니다.

Docker Hub의 새로운 저장소


Repository Name 필드를 지정하고 저장소 가시성을 Public 유지합니다.


명령줄에서 Docker Hub 레지스트리에 로그인해야 합니다.

 docker login


그런 다음 새로 생성된 이미지를 레지스트리에 푸시할 수 있습니다.

 docker push drmoz/webapp:latest


저장소로 이동하면 이미지에 대한 정보가 표시됩니다.

도커 허브 저장소


3. Azure에서 웹앱 만들기

이제 ASP.NET Core 웹 애플리케이션을 Azure에 배포할 준비가 되었습니다. Azure Portal에 로그인하고 새 리소스 그룹을 만들어 보겠습니다. 리소스 그룹 이름을 ' webapp-rg '로 지정하고 '검토 + 생성' 버튼을 클릭합니다.


리소스 그룹 생성: 기본 탭


다음 화면에서 '만들기' 버튼을 누르세요.

리소스 그룹 생성: 검토 + 생성 탭


이제 웹앱을 만들 수 있습니다. '리소스 만들기' 페이지로 이동하여 WebApp을 찾습니다. '만들기' 버튼을 클릭하세요.

웹앱 생성: 기본 탭

이전에 만든 Resource Group 을 지정해야 합니다. 또한 웹앱의 고유한 Name 지정합니다. Publish 필드에서 'Docker 컨테이너'를 선택합니다. 나중에 사용할 Docker 이미지를 지정할 수 있습니다.


Pricing plans 섹션에서 적합한 옵션을 선택하세요. 하지만 테스트 목적으로 무료 F1 타이어를 사용하는 것이 좋습니다. Docker 탭으로 이동합니다.


웹앱 만들기: Docker 탭


이 탭의 Image Source 필드에서 'Docker Hub'를 선택하세요. Access Type 필드에서 '공개'를 선택하고 Docker Hub에 푸시한 이미지 이름으로 Image and tag 값을 지정합니다. '검토 + 만들기' 탭으로 이동합니다. 이 탭에서 '만들기' 버튼을 클릭하세요.

웹앱 만들기: 검토 + 만들기 탭


새 리소스가 배포되면 이 리소스로 이동할지 묻는 메시지가 표시됩니다. 그냥 해. 웹앱 관련 정보를 보실 수 있습니다.

웹앱 리소스 정보


배포된 웹 애플리케이션을 열려면 '찾아보기' 버튼을 클릭하세요. 모든 것이 올바르게 진행되면 http://localhost:5555 이동하여 브라우저에서 본 것과 비슷한 ASP.NET Core 웹앱 홈 페이지가 표시됩니다.

지속적인 배포 활성화

'배포 센터' 설정으로 이동하여 '배포 계속'을 활성화하면 새 이미지를 Docker Hub에 푸시할 때마다 이미지를 재배포할 수 있습니다. 이러한 방식으로 코드를 변경하고, 새 이미지와 함께 Docker Hub에 푸시하고, Azure에서 몇 분 만에 변경 사항을 확인할 수 있습니다.

웹앱 - 배포 센터

Azure 웹앱 문제 해결

배포 로그를 보고 문제를 식별하려면 다음과 같이 'App Service 로그' 장에서 파일 시스템에 로그 저장을 활성화해야 합니다.

웹앱 - App Service 로그


완료되면 '배포 센터'로 이동하여 다음과 같이 로그를 볼 수 있습니다.

웹앱 - 배포 센터


요약

이 지점에 도달했다면 ASP.NET Core 웹 애플리케이션을 생성한 것입니다. Docker 이미지에 압축하고 Azure에 배포합니다. 오늘날 기술은 삶을 더 쉽게 만들고 개발 프로세스를 가속화합니다. 애플리케이션을 클라우드 제공업체에 배포하고 전 세계에 공개하고 테스트를 수행하고 작업 결과를 확인하는 것이 얼마나 쉬운지 확인할 수 있습니다.


이제 Microsoft 설명서를 사용하여 Azure 클라우드 공급자에 대한 세부 정보를 알아볼 수 있습니다. 또한 이 기술에 대해 더 깊이 이해하려면 Docker 설명서를 살펴보세요. 도움이 되었으면 좋겠습니다.