我有這個應用程式,你可以看到我在 IIS Express 中運行:

所以我想在 docker 上運行它,以便生成 docker 檔案:
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["Docker/Docker.csproj", "Docker/"]
RUN dotnet restore "Docker/Docker.csproj"
COPY . .
WORKDIR "/src/Docker"
RUN dotnet build "Docker.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "Docker.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Docker.dll"]
所以我用這個命令創建了你可以看到的影像:
docker build -t containername/tag -f docker/Dockerfile .
影像已創建,因此我想使用以下命令運行我的容器:
docker run -d -p 42419:42419 --name apitest containername/tag:latest
容器已創建,但是當我呼叫此 url 時,http://localhost:42419/swagger/index.html我看不到 swagger 頁面。為什么?
uj5u.com熱心網友回復:
您的應用程式需要將環境變數設定為“開發”才能使用 Swagger。它在生產中不可用,這是 Docker 默認的。
您可以像這樣在運行命令中添加 ASPNETCORE_ENVIRONMENT 變數
docker run -d -p 42419:80 -e ASPNETCORE_ENVIRONMENT=Development --name apitest containername/tag:latest
您也可以將其添加到 Dockerfile,如果您希望 Development 成為默認值,則添加
ENV ASPNETCORE_ENVIRONMENT=Development
在 Dockerfile 的“最后”部分的某個地方。
第三個選項是修改您的startup.cs檔案并在設定 Swagger 時洗掉對環境變數的檢查。這樣,無論發生什么,它都將始終可用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/365519.html
