iT邦幫忙

2023 iThome 鐵人賽

DAY 11
0
Mobile Development

Ionic結合ChatGPT - 30天打造AI英語口說導師APP系列 第 11

【Day - 11】Azure + Docker - 建置和部署服務

  • 分享至 

  • xImage
  •  

在【Day - 10】,我們成功建置了一個能處理語音轉檔的API,並且已經順利與Whisper API整合。然而,目前的服務僅能在本地運行。因此,今天我們將會把這個服務包裝成Docker Image,再搭配Azure將其建置成一個服務,供APP使用。那麼,讓我們開始吧!

設置FFmpeg在Linux上的路徑

我們的目標是要將服務架設在Linux上。因此,在【Day - 10】時,Windows上的路徑可能不適用,我們必須在專案中重新指定Linux上的FFmpeg路徑,以確保能夠正常運行。我們可以在Program.cs的開頭加入以下程式碼來設置FFmpeg的路徑。在Linux上,FFmpeg的路徑通常位於/usr/bin/

//指定FFmpeg在Linux上的路徑
Xabe.FFmpeg.FFmpeg.SetExecutablesPath("/usr/bin/");

 

Dockerfile

在ASP.NET建立專案時,如果選擇啟用Docker的話,系統會自動建立一個Dockerfile檔案,因此我們只需要修改一下Dockerfile的內容即可。如果沒有的話也可以自己建立一個Dockerfile。
https://ithelp.ithome.com.tw/upload/images/20230911/20161663LmReYUaofN.png
接下來,我們需要在容器的環境內安裝FFmpeg包。這可以直接在mcr.microsoft.com/dotnet/aspnet:6.0映像上使用apt進行安裝:

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

#安裝FFmpeg
RUN apt-get update && apt-get install -y ffmpeg

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["AudioConvert.csproj", "./"]
RUN dotnet restore "./AudioConvert.csproj"
COPY . .
WORKDIR "/src/"
RUN dotnet build "AudioConvert.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "AudioConvert.csproj" -c Release -o /app/publish /p:UseAppHost=false

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

 

Docker建置和推送

Docker的建置,第一步是找到專案的Dockerfile檔案,然後使用以下的命令來構建Docker映像。使用--no-cache選項的目的是確保建置映像時不使用任何暫存,這樣可以確保每次建置都是全新的:

docker build -t audioconvert . --no-cache

第二步是將Docker映像標籤與你的Docker Hub帳號相連接。我們可以在命令行工具中運行以下命令來完成此操作:

docker tag audioconvert <你的Docker ID>/audioconvert:latest

https://ithelp.ithome.com.tw/upload/images/20230911/20161663lZx942QVuv.png
第三步是登入Docker Hub。我們可以在命令行工具中運行以下命令來進行登入:

docker login -u <你的Docker ID>

第四步是推送映像檔。直接使用以下命令推送映像檔到Docker Hub上:

docker push <你的Docker ID>/audioconvert:latest

這裡提供給大家我已經建置好的映像檔案。Docker Hub位置:AudioConvert Docker Image

建立Azure Web App

首先,我們需要建立一個資源群組。在Azure中,資源群組用於管理和組織你的資源。輸入以下命令來建立資源群組:

az group create --name <資源群組名稱> --location "East Asia"

接下來,我們要建立App Service Plan。App Service Plan定義了App運行的條件,例如:「虛擬機的大小」、「是否自動擴展」等。我們將使用B1(基本小型)定價層來建立。注意!B1定價層會有費用產生!若是想測試可以選用F1(免費)定價層做測試。以下是相關步驟:

az appservice plan create --name <App Server Plan名稱> --resource-group <資源群組名稱> --location "East Asia" --is-linux --sku B1

最後一步是建立Web APP。我們使用剛才建立好的資源群組和方案,並選擇Docker Hub上的映像來建立。設定的Web APP名稱則會直接套用到預設網域上:

az webapp create --resource-group <資源群組名稱> --plan <App Server Plan名稱> --name <Web App名稱> --deployment-container-image-name momochenisme/audioconvert:latest

完成這些命令後,稍等待一段時間,服務就會完成建立。另外也可以直接在Azure上查看服務是否已經正確建立。
https://ithelp.ithome.com.tw/upload/images/20230911/20161663pwdWkSF9tZ.jpg
最後,我們使用Postman來測試API服務,以確認剛才架設的雲端服務正在順利運作中。
https://ithelp.ithome.com.tw/upload/images/20230911/201616630o6eZ3au22.jpg

結語

今天我們終於順利的將服務運行起來。透過一些簡單的指令,我們快速的部署並啟動服務。這不只展示了雲端技術的便利性,更節省了我們在設備管理和維護上的時間和精力。明天我們就可以將此服務與我們的APP整合,讓我們期待明天的到來!



Github專案程式碼:Ionic結合ChatGPT - Day11


上一篇
【Day - 10】ASP.NET Web API - 用FFmpeg打造音訊轉換服務
下一篇
【Day - 12】串接Azure服務 - 完成語音轉文字功能
系列文
Ionic結合ChatGPT - 30天打造AI英語口說導師APP30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言