如何在容器中運行 .NET Web API?
這是我所做的:
1 創建foo檔案夾。
2 在檔案夾中,我打開一個終端并運行命令dotnet new webapi。然后我運行dotnet run并驗證了 swagger 可以通過瀏覽器訪問。
3 添加Dockerfile到foo檔案夾:
# syntax=docker/dockerfile:1
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build-env
WORKDIR /app
# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# Copy everything else and build
COPY ./ ./
RUN dotnet publish -c Release -o out
# Build runtime image
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "foo.dll"]

4 執行docker build -t aspnetapp .命令。
5Properties/launchSettings.json找到 的值profiles.foo.applicationUrl(我使用該值通過 2 中的瀏覽器訪問 swagger 來驗證應用程式是否正常作業)。值為https://localhost:7055;http://localhost:5062:

6 執行docker run -d -p 8080:7055命令。
7 現在我轉到瀏覽器https://localhost:8080/swagger并希望看到招搖頁面,但我什么也沒看到:

我還試圖做什么:
- 在 6 我嘗試將命令更改為
docker run -d -p 8080:5062 - 我檢查了控制臺中已啟動的應用程式,由于某些原因,它指的是第 80 個埠:
{"EventId":14,"LogLevel":"Information","Category":"Microsoft.Hosting.Lifetime","Message":"Now listening on: http://[::]:80","State":{"Message":"Now listening on: http://[::]:80","address":"http://[::]:80","{OriginalFormat}":"Now listening on: {address}"}}
{"EventId":0,"LogLevel":"Information","Category":"Microsoft.Hosting.Lifetime","Message":"Application started. Press Ctrl\u002BC to shut down.","State":{"Message":"Application started. Press Ctrl\u002BC to shut down.","{OriginalFormat}":"Application started. Press Ctrl\u002BC to shut down."}}
{"EventId":0,"LogLevel":"Information","Category":"Microsoft.Hosting.Lifetime","Message":"Hosting environment: Production","State":{"Message":"Hosting environment: Production","envName":"Production","{OriginalFormat}":"Hosting environment: {envName}"}}
{"EventId":0,"LogLevel":"Information","Category":"Microsoft.Hosting.Lifetime","Message":"Content root path: /app/","State":{"Message":"Content root path: /app/","contentRoot":"/app/","{OriginalFormat}":"Content root path: {contentRoot}"}}

如何使在容器中運行的應用程式可以通過瀏覽器訪問?即我怎樣才能看到招搖并通過瀏覽器呼叫端點?
uj5u.com熱心網友回復:
根據您的 docker 日志資訊,"Message":"Now listening on: http://[::]:80"您的 Web 應用程式公開的埠80來自容器。
所以我認為你可以嘗試用它來映射。
docker run -d -p 8080:80
我們可以使用以下方式通過Endpoint 配置更改使用埠,否則可能會使用默認埠。
ASPNETCORE_URLS環境變數。--urls命令列引數。- urls 主機配置密鑰。
- UseUrls 擴展方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/471218.html
下一篇:C 鏈表佇列指標導致未定義的行為
