首页 > 其他分享 >[MDP.NetCore] 開發一個從GitHub持續佈署到Azure Container Apps的Web站台

[MDP.NetCore] 開發一個從GitHub持續佈署到Azure Container Apps的Web站台

时间:2023-11-02 21:48:37浏览次数:58  
标签:Web GitHub Container Repository zone app sleep Azure

開發一個從GitHub持續佈署到Azure Container Apps的Web站台

程式碼簽入GitHub之後,啟動GitHub Action流程,編譯並部署程式到Azure Container Apps,是開發系統時常見的功能需求。本篇範例協助開發人員使用GitHub與Azure,逐步完成必要的設計和實作。

操作步驟

1.註冊並登入Azure Portal。於首頁左上角的選單裡,點擊資源群組後,進入資源群組頁面。

01.建立ResourceGroup01.png

2.於資源群組頁面,點擊建立按鈕,依照頁面提示建立一個ResourceGroup,並命名為sleep-zone-group。

01.建立ResourceGroup02.png

01.建立ResourceGroup03.png

3.於ResourceGroup頁面的屬性頁籤,取得「資源識別碼」。

01.建立ResourceGroup04.png

01.建立ResourceGroup05.png

4.回到Azure Portal。於右上角的選單裡,點擊Cloud Shell按鈕,依頁面提示開啟Cloud Shell視窗。

02.建立Application01.png

02.建立Application02.png

02.建立Application03.png

5.在Cloud Shell視窗,切換至Bash並執行下列指令,以取得「服務主體憑證」。該指令會建立名為sleep-zone-app的應用程式註冊,並授權它為sleep-zone-group資源群組的參與者(Contributor)角色。

az ad sp create-for-rbac \
    --name "sleep-zone-app" \
    --role Contributor \
    --scopes xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \
    --sdk-auth
	
- 服務主體名稱:--name "sleep-zone-app",可自訂,限制使用英文小寫與「-」。
- 服務主體授權角色:--role Contributor。
- 服務主體授權範圍:--scopes xxxxxxxxxxxxxxx。(xxxxx填入先前取得的資源識別碼)

02.建立Application04.png

02.建立Application05.png

6.註冊並登入GitHub Dashboard。點擊首頁左上角的New按鈕,依照頁面提示建立一個Repository,並命名為SleepZone。

03.建立Repository01.png

03.建立Repository02.png

7.於Repository頁面,點擊右上角的Setting按鈕進入Setting頁面,並選擇左側選單裡Secrets and variables的Action頁籤。於Action頁籤,點選New repository secret按鈕,依照頁面提示建立一個名為AZURE_CREDENTIALS的Actions Secret,Secret內容則是填入先前取得的「服務主體憑證」。

03.建立Repository03.png

03.建立Repository04.png

03.建立Repository05.png

8.Clone SleepZone Repository到本機Repository資料夾,於本機Repository資料夾裡建立src資料夾。開啟命令提示字元進入src資料夾,輸入下列指令,用以安裝MDP.WebApp範本、並且建立一個名為WebApplication1的Web站台。

// 建立Web站台
dotnet new install MDP.WebApp
dotnet new MDP.WebApp -n WebApplication1

04.建立WebApplication01.png

04.建立WebApplication02.png

9.於本機Repository資料夾裡,進入src/WebApplication1資料夾,並加入Dockerfile。

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /repo
COPY . .
RUN dotnet publish "src/WebApplication1/WebApplication1.csproj" -c Release -o /app/publish /p:UseAppHost=false

FROM base AS final
WORKDIR /app
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "WebApplication1.dll"]

04.建立WebApplication03.png

10.於本機Repository資料夾裡,建立.github\workflows資料夾,並加入azure-build-deployment.yml。


name: azure-build-deployment

on:
  push:
    branches:
      - main

env:
  RESOURCE_GROUP_NAME: sleep-zone-group
  CONTAINER_APPS_NAME: sleep-zone-app 
  DOCKER_FILE_PATH: ./src/WebApplication1/Dockerfile

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:  

      - name: Login Azure CLI
        uses: azure/login@v1
        with:
          creds: ${{ secrets.AZURE_CREDENTIALS }}

      - name: Checkout GitHub Repository 
        uses: actions/checkout@v4

      - name: Deploy AzureContainerRegistry by MDP
        uses: MDPOps/azure-container-registry-deploy@v1            
        with:
          resourceGroupName: ${{ env.RESOURCE_GROUP_NAME }}
          containerAppsName: ${{ env.CONTAINER_APPS_NAME }}
          dockerFilePath: ${{ env.DOCKER_FILE_PATH }}
        id: azure-container-registry-deploy

      - name: Deploy AzureContainerApps by MDP
        uses: MDPOps/azure-container-apps-deploy@v1            
        with:
          resourceGroupName: ${{ env.RESOURCE_GROUP_NAME }}
          containerAppsName: ${{ env.CONTAINER_APPS_NAME }}
          containerImageName:  ${{ steps.azure-container-registry-deploy.outputs.containerImageName }}
          containerRegistryName:  ${{ steps.azure-container-registry-deploy.outputs.containerRegistryName }}
        id: azure-container-apps-deploy

- Git分支名稱:main,要特別注意Repository裡的分支是 master or main。
- 資源群組名稱:RESOURCE_GROUP_NAME: sleep-zone-group,Azure資源群組名稱。
- 容器應用名稱:CONTAINER_APPS_NAME: sleep-zone-app,可自訂,限制使用英文小寫與「-」。
- Dockerfile路徑:DOCKER_FILE_PATH: ./src/WebApplication1/Dockerfile,路徑區分大小寫,相對於Repository資料夾。

04.建立WebApplication04.png

11.簽入並推送本機Repository的變更,到遠端GitHub主機之後。回到GitHub Dashboard,進入SleepZone Repository頁面。可以於Actions頁籤裡,可以看到GitHub Action流程已經觸發執行並成功完成部署。(需時約五分鐘)

05.執行結果01.png

12.回到Azure Portal。於首頁左上角的選單裡,點擊容器應用程式後,進入容器應用程式頁面,可以看到剛剛建立的sleep-zone-app容器應用程式。

05.執行結果02.png

05.執行結果03.png

13.於sleep-zone-app容器應用程式的概觀頁面,點擊「應用程式 URL」鏈結,在開啟的Browser視窗內,可以看到由WebApplication1程式碼所提供的Hello World。

05.執行結果04.png

05.執行結果05.png

14.完成上述步驟之後,每次推送程式碼到GitHub,都會啟動GitHub Action流程,編譯並部署程式到Azure Container Apps。

05.執行結果06.png

标签:Web,GitHub,Container,Repository,zone,app,sleep,Azure
From: https://www.cnblogs.com/clark159/p/17806372.html

相关文章

  • 【Azure Web Job】Azure Web Job执行Powershell脚本报错 The term 'Select-AzContext'
    问题描述AzureWebJob执行Powershell脚本报错 Select-AzContext:Theterm'Select-AzContext'isnotrecognizedasthenameofacmdlet,function,scriptfile,oroperableprogram.Checkthespellingofthename,orifapathwasincluded,verifythatthepa......
  • 将GitHub上的forked仓库删除
    内容来自DOChttps://q.houxu6.top/?s=将GitHub上的forked仓库删除我开始使用git和GitHub,有一个项目我正在GitHub上关注。我不小心点击了fork它。现在它似乎成了一个新的项目。我对这件事有一些疑问:我知道如果我对我的forked仓库进行提交或其他操作,它将会被更新,但是更新后......
  • 学习:javaweb-servlet
    1.在Idea中配置maven仓库,需要在idea中的setting设置maven的路径参数,包括maven的setting.xml和本地仓库的路径2.新建一个maven模板的javaweb项目,查看maven的配置setting.xml是否配置成功,成功的话可以下载模板所需要的一依赖包。3.查看projectStructure中的Modules项目中是否生成......
  • 技术教程 | 基于 Web 端的屏幕共享实践
    ​ 屏幕共享的英文叫做DesktopSharing,通俗点讲就是将自己电脑的画面分享给其他人,被分享的可以是整个电脑屏幕、应用程序或者某一个打开的网页等等。而随着音视频领域的深入发展,完备的功能在用户需求激增的背景下催生,不管是是在学习、生活或是娱乐场景下,屏幕共享作为实现互动......
  • 国产 Web 组态软件在玻璃生产线中的应用
    ​ 概述随着工厂信息化、数字化发展,智慧生产车间成为必然发展趋势,通过智能硬件、物联网、大数据等智慧化技术与手段,提高车间生产设备、工艺设备的智能执行能力,从而提升整个车间乃至工厂的智能化、网络化与自动化水平,从流通环节、底层技术、应用领域和功能目标等方面实现智慧化......
  • 如何通过HWebkit库配合Haskell语言采集链家图片
    链家是一个专业提供二手房源、楼盘等信息的网站,需要二手房的朋友,链家可是个首选的资源平台。今天我们将使用HWebkit库编写一个爬虫程序,然后使用Haskell语言来采集链家平台的相关图片,快来学习一下吧。```haskellimportNetwork.HTTP.Webkit--定义代理主机和端口proxyHost::Str......
  • Webman Admin安装体验
    系统deepin1.搭建PHP环境命令窗口中执行aptinstallphp2.安装数据库安装mariadbaptinstallmariadb初始化mysql_secure_installation3.安装配置composer安装aptinstallcomposer配置composerconfig-grepo.packagistcomposerhttps://mirrors......
  • 如何将flash动画放到web网页里面
    1、运用Dreamweaver软件先定义好一个网页:然后鼠标使用光标选择flash动画放置的位置:然后选择菜单栏中的插入-->HTML-->FlashSWF文件:选择自己的SWF文件:然后就导入到网页成功啦~~~......
  • Ajax + java Servlet 制作Web进度条
     运行效果图  index2.jsp <%@pagelanguage="java"pageEncoding="UTF-8"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><scripttype="text/javascript"langua......
  • 2021年github文件高速下载方法
     https://shrill-pond-3e81.hunsh.workers.dev/  ......