paint-brush
Cách triển khai ứng dụng web ASP.NET Core trong Azure từ Docker Imageby@igorlopushko
986
986

Cách triển khai ứng dụng web ASP.NET Core trong Azure từ Docker Image

Igor Lopushko6m2024/01/19
Read on Terminal Reader

Trong bài viết này, tôi sẽ hướng dẫn chi tiết về cách tạo một ứng dụng web ASP.NET Core đơn giản, tạo hình ảnh docker với ứng dụng của bạn và cách dễ nhất để triển khai nó lên Azure. Cuối cùng, bạn sẽ hiểu rõ về cách triển khai ứng dụng web của mình và làm cho nó có thể truy cập được trên toàn thế giới.
featured image - Cách triển khai ứng dụng web ASP.NET Core trong Azure từ Docker Image
Igor Lopushko HackerNoon profile picture

Giới thiệu

Với tư cách là nhà phát triển web, chúng tôi thường tìm dịch vụ lưu trữ phù hợp cho các ứng dụng của mình với tất cả những rắc rối khi triển khai và duy trì chúng. Nhưng giờ đây, chúng ta đang sống trong một kỷ nguyên mới khi các nhà cung cấp dịch vụ đám mây có thể tạo ra rất nhiều thứ cho chúng ta mà hầu như không mất phí. Đối với các nhà phát triển .NET, Microsoft Azure có vẻ là sự lựa chọn tự nhiên nhất để lưu trữ các ứng dụng web.


Docker là một phần công nghệ khác giúp bạn có thể trừu tượng hóa khỏi nền tảng và môi trường mà bạn đang chạy ứng dụng của mình.


Trong bài viết này, tôi sẽ hướng dẫn chi tiết về cách tạo một ứng dụng web ASP.NET Core đơn giản, tạo hình ảnh docker với ứng dụng của bạn và cách dễ nhất để triển khai nó lên Azure. Cuối cùng, bạn sẽ hiểu rõ về cách triển khai ứng dụng web của mình và làm cho nó có thể truy cập được trên toàn thế giới.

1. Tạo ứng dụng web ASP.NET Core

Tôi sẽ sử dụng JetBrains Rider cho mục đích phát triển trong bài viết này. Nhưng bạn có thể sử dụng bất kỳ công cụ nào bạn muốn.


Đầu tiên, bạn cần tạo một dự án mới. Hãy gọi nó đơn giản là ' webapp '.

Tạo giải pháp mới


Sau khi tạo một dự án mới, nó sẽ trông như thế này:

Cấu trúc dự án


2. Tạo hình ảnh Docker

Nếu không có bất kỳ thay đổi nào trong dự án, chúng tôi sẽ tập trung vào Dockerfile . Sửa đổi nó như ví dụ sau:

 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"]


Bạn cần chú ý đến dòng EXPOSE 8080ENV ASPNETCORE_URLS http://+:8080 để có thể kết nối qua HTTP tới docker container.


Xây dựng hình ảnh docker từ dòng lệnh. Bạn cần điều hướng đến thư mục dự án webapp và thực hiện lệnh sau:

 DOCKER_BUILDKIT=1 docker buildx build --platform linux/amd64 --tag drmoz/webapp:latest .


Tôi đang chạy nó trên Mac M1 và tôi phải chỉ định rõ ràng tham số --platform để tương thích với việc triển khai Azure. Tôi cũng phải kích hoạt Docker Buildkit bằng cách chỉ định tham số DOCKER_BUILDKIT=1 và sử dụng buildx để có thể xây dựng hình ảnh cho kiến trúc khác.


Nếu bạn đang chạy nó trên nền tảng Intel x86/x64, bạn có thể sử dụng lệnh docker build mà không cần chỉ định tham số --platform và kích hoạt buildx .


Bạn có thể gắn thẻ hình ảnh của mình theo cách khác, nhưng vì tôi sẽ sử dụng Docker Hub nên tôi phải chỉ định tên tài khoản của mình: drmoz như một phần của thẻ hình ảnh drmoz/webapp:latest .


Khi một image được tạo, bạn có thể kiểm tra xem nó có trong Docker hay không bằng cách chạy lệnh sau:

 docker images


Nó phải có trong danh sách:

 REPOSITORY TAG IMAGE ID CREATED SIZE drmoz/webapp latest 0cfac748256b 37 minutes ago 216MB


Hãy chạy bộ chứa docker để xác minh rằng hình ảnh mới được tạo hoạt động tốt. Thực thi lệnh docker run để khởi động vùng chứa:

 docker run -p 5555:8080 drmoz/webapp:latest


Chỉ định tham số -p để ánh xạ cổng 8080 bên trong vùng chứa tới cổng 5555 trên máy cục bộ của bạn. Ngoài ra, chỉ định tên hình ảnh để tạo vùng chứa. Trong trường hợp của tôi, đó là drmoz/webapp:latest .


Bây giờ, bạn có thể điều hướng trong trình duyệt của mình http://localhost:5555 để xem trang chủ ASP.NET Core Web App.

Ứng dụng web ASP.NET Core: Trang chủ



Chúng ta cần đẩy một hình ảnh lên Docker Hub . Trước đó, bạn phải đăng ký trên Docker Register và tạo một kho lưu trữ. Nhấp vào nút “ Tạo kho lưu trữ ” ở góc bên phải của trang chủ.

Kho lưu trữ mới của Docker Hub


Chỉ định trường Repository Name và giữ chế độ hiển thị kho lưu trữ Public .


Trong dòng lệnh, bạn phải đăng nhập vào sổ đăng ký Docker Hub:

 docker login


Sau đó, bạn sẽ có thể đẩy hình ảnh mới tạo vào sổ đăng ký:

 docker push drmoz/webapp:latest


Điều hướng đến kho lưu trữ và bạn sẽ thấy thông tin về hình ảnh:

Kho lưu trữ Docker Hub


3. Tạo ứng dụng web trong Azure

Bây giờ, chúng tôi đã sẵn sàng triển khai Ứng dụng web ASP.NET Core của mình lên Azure. Hãy đăng nhập vào Cổng thông tin Azure và tạo một nhóm tài nguyên mới. Chỉ định tên Nhóm tài nguyên là ' webapp-rg ' và nhấp vào nút 'Xem lại + tạo'.


Tạo nhóm tài nguyên: Tab cơ bản


Trên màn hình tiếp theo, chỉ cần nhấn nút 'Tạo'.

Tạo nhóm tài nguyên: Xem lại + tạo tab


Bây giờ, chúng ta có thể tạo một Ứng dụng web. Điều hướng đến trang 'Tạo tài nguyên' và tìm WebApp. Nhấp vào nút 'Tạo'.

Tạo ứng dụng web: Tab cơ bản

Bạn cần chỉ định Resource Group mà chúng tôi đã tạo trước đó. Ngoài ra, hãy chỉ định một Name duy nhất cho Ứng dụng web. Chọn 'Docker Container' trong trường Publish . Sau này, chúng ta sẽ có thể chỉ định Docker image nào sẽ được sử dụng.


Chọn bất kỳ tùy chọn phù hợp nào trong phần Pricing plans , nhưng tôi khuyên bạn nên sử dụng lốp F1 miễn phí cho mục đích thử nghiệm. Điều hướng đến tab Docker.


Tạo ứng dụng web: tab Docker


Trên tab này, chọn 'Docker Hub' trong trường Image Source . Chọn 'Công khai' trong trường Access Type và chỉ định giá trị Image and tag cùng với tên của hình ảnh mà chúng tôi đã đẩy tới Docker Hub. Điều hướng đến tab 'Đánh giá + tạo'. Trên tab này, nhấp vào nút 'Tạo':

Tạo ứng dụng web: Xem lại + tạo tab


Khi tài nguyên mới được triển khai, bạn sẽ được hỏi liệu bạn có muốn điều hướng đến tài nguyên này hay không; cứ làm đi. Bạn sẽ có thể xem thông tin liên quan đến Ứng dụng web.

Thông tin tài nguyên ứng dụng web


Nhấp vào nút 'Duyệt' để mở ứng dụng web đã triển khai. Nếu mọi thứ đều ổn, bạn sẽ thấy trang chủ ASP.NET Core Web App tương tự như trang chủ bạn thấy trong trình duyệt của mình bằng cách điều hướng http://localhost:5555 .

Kích hoạt triển khai liên tục

Nếu bạn điều hướng đến cài đặt 'Trung tâm triển khai' và bật 'Tiếp tục triển khai', bạn sẽ có thể triển khai lại hình ảnh của mình mỗi khi bạn đẩy một hình ảnh mới vào Docker Hub. Bằng cách đó, bạn có thể thực hiện các thay đổi đối với mã của mình, đẩy mã đó vào Docker Hub bằng hình ảnh mới và xem các thay đổi trong vài phút trong Azure.

Ứng dụng web - Trung tâm triển khai

Khắc phục sự cố ứng dụng web Azure

Để có thể xem nhật ký triển khai và xác định sự cố, bạn cần bật tính năng lưu nhật ký vào hệ thống tệp trong chương 'Nhật ký dịch vụ ứng dụng' như sau:

Ứng dụng web - Nhật ký dịch vụ ứng dụng


Khi hoàn tất, bạn có thể điều hướng đến 'Trung tâm triển khai' và xem nhật ký như sau:

Ứng dụng web - Trung tâm triển khai


Bản tóm tắt

Nếu đạt đến điểm này, bạn đã tạo được một ứng dụng web ASP.NET Core; đóng gói nó vào hình ảnh Docker và triển khai nó lên Azure. Ngày nay, công nghệ giúp cuộc sống trở nên dễ dàng hơn và đẩy nhanh quá trình phát triển. Bạn có thể thấy bạn có thể triển khai ứng dụng của mình đến nhà cung cấp đám mây và hiển thị ứng dụng đó ra toàn thế giới dễ dàng như thế nào, thực hiện một số thử nghiệm và xem kết quả công việc của bạn.


Giờ đây, bạn có thể tìm hiểu chi tiết về các nhà cung cấp đám mây Azure bằng tài liệu của Microsoft. Ngoài ra, hãy xem tài liệu Docker để hiểu sâu hơn về công nghệ này. Tôi hy vọng nó có thể hữu ích.