使用 docker 在 .net6 中浏览 .net 应用程序导致问题
browse .net application in .net6 with docker cause a problem
我有这个应用程序,你可以看到我在 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 页面。为什么?
您的应用程序需要将环境变量设置为 'Development' 才能使用 Swagger。它在生产中不可用,这是 Docker 默认的。
您可以像这样在 运行 命令中添加 ASPNETCORE_ENVIRONMENT 变量
docker run -d -p 42419:80 -e ASPNETCORE_ENVIRONMENT=Development --name apitest containername/tag:latest
您也可以将其添加到 Docker 文件中,如果您希望通过添加
将 Development 设为默认
ENV ASPNETCORE_ENVIRONMENT=Development
在 Docker 文件的 'final' 部分的某处。
第三个选项是修改您的 startup.cs
文件并在设置 Swagger 时删除对环境变量的检查。这样一来,无论如何它都可以使用。
我有这个应用程序,你可以看到我在 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 页面。为什么?
您的应用程序需要将环境变量设置为 'Development' 才能使用 Swagger。它在生产中不可用,这是 Docker 默认的。
您可以像这样在 运行 命令中添加 ASPNETCORE_ENVIRONMENT 变量
docker run -d -p 42419:80 -e ASPNETCORE_ENVIRONMENT=Development --name apitest containername/tag:latest
您也可以将其添加到 Docker 文件中,如果您希望通过添加
将 Development 设为默认ENV ASPNETCORE_ENVIRONMENT=Development
在 Docker 文件的 'final' 部分的某处。
第三个选项是修改您的 startup.cs
文件并在设置 Swagger 时删除对环境变量的检查。这样一来,无论如何它都可以使用。