当前位置: 首页 > 知识库问答 >
问题:

不使用Docker Compose的.NET Core 5 Web API项目

燕涵容
2023-03-14

我正在尝试使用docker-compose与我的项目。
.NET 5 API项目有问题。
它可以在ISS Express和Docker中正常工作,但是当我使用docker-compose api运行项目时,项目的工作不像预期的那样。

在运行docker-compose时,应该运行API项目并启动swagger API page,而不是在通过浏览器访问暴露端口时显示不同的错误。请在下面找到附上的快照。
Docker容器映像
浏览器Run1
浏览器Run2
浏览器Run3

正如您所看到的,对于每个url,它在浏览器中显示不同的错误消息

ports:
    - 51850:80
ARG BUILD_CONFIGURATION=Debug
ENV ASPNETCORE_ENVIRONMENT=Development
ENV DOTNET_USE_POLLING_FILE_WATCHER=true 
ENV ASPNETCORE_URLS=http://+:80

stackoverlow建议-设置要调试的环境

3.尝试使用VSCode docker-compose和Visual Studio docker-compose
在Visual Studio和VS code的帮助下重新生成docker-compose文件。

4.尝试在LaunchSettings.json上设置特定端口

    null
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app 
EXPOSE 44370

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

FROM build AS publish
RUN dotnet publish "TAPI.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "TAPI.dll"]
version: '3.4'

services:
  todoworker:
    image: tworker
    build:
      context: .
      dockerfile: TWorker/Dockerfile
  todoapi:
    image: tapi
    build:
      context: .
      dockerfile: TAPI/Dockerfile
    ports:
       - 80
       - 443
       - 44370
  tangular:
    image: tangular
    build:
      context: .
      dockerfile: TAngular/Dockerfile
    ports:
      - 4200:4200

共有1个答案

辛星宇
2023-03-14

日期:2021年5月20日:

我用两个Web API创建了另一个小示例。在我本地的笔记本电脑上测试过。请把它拿到你的本地盒子里执行。如果你需要任何进一步的帮助请告诉我。

GitHub URL:https://GitHub.com/vishipayyallore/mini-projects-2021/tree/master/projects/collegedockerdemo

#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:5.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

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

FROM build AS publish
RUN dotnet publish "College.WebAPI.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "College.WebAPI.dll"]
#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:5.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

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

FROM build AS publish
RUN dotnet publish "ToDo.WebAPI.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "ToDo.WebAPI.dll"]
version: '3.4'

services:
  college.webapi:
    image: ${DOCKER_REGISTRY-}collegewebapi
    build:
      context: .
      dockerfile: Source/College.WebAPI/Dockerfile
  todo.webapi:
    image: ${DOCKER_REGISTRY-}todowebapi
    build:
      context: .
      dockerfile: Source/ToDo.WebAPI/Dockerfile
version: '3.4'

services:
  college.webapi:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
    ports:
      - "8000:80"
    volumes:
      - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
      - ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro

  todo.webapi:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
    ports:
      - "8001:80"
    volumes:
      - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
      - ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
 类似资料:
  • 我已经将Jitpack repo和依赖项从Github添加到pom中。但它仍然无法编译。然而,当我指向导入块中的行时,它清楚地显示了模块的描述。VSCode截图 例如,我尝试导入com.github.kwhat.jnativehook.GlobalScreen,它显示了模块的描述,但仍然用红色下划线并显示错误: 类型为com。github。科哈特。jnativehook。无法通过Java访问Glo

  • 我有一个带有两个目录的 Git 存储库: (PHP/Laravel代码) (TypeScript/Vue代码) 我希望在WebStorm中打开项目时,标记为已排除,而在PhpStorm中创建项目时,将

  • 在我的spring项目中,我可以像这样用XML定义bean:

  • 我正在我们的项目中实施DynamoDB。我们必须将大型数据字符串放入数据库中,所以我们将数据拆分为小块,并插入多行,其中只有一个属性值发生了更改—这是字符串的一部分。一列(范围键)包含多个零件。插入和选择数据对于大小字符串都非常有效。问题是删除项目。我了解到,当您想要删除某个项时,需要为该项指定主键(哈希键或哈希键和范围键-取决于表)。但如果我想删除对其中一个属性具有特定值的项目,该怎么办?我是否

  • 我有以下问题--我用插件创建了一个名为“Spring”的简单Gradle项目。但是当我运行Gradle build和任务并输入http://localhost:8080/spring时,我得到404错误。当然,在构建和服务器启动期间,我没有收到任何错误消息。有Build.Gradle: 我还有一个名为的jsp文件放在中: 和文件放在中: 如您所见,服务器似乎正在成功启动:

  • type String(可选) - 以下之一: tasks - 此类别中的项目将被放置到标准的 Tasks 类别中。只能有一个这样的类别而且总是显示在跳转列表的底部。 frequent - 显示由应用程序频繁打开的文件的列表,类别的名称及其项目由Windows设置。 recent - 显示由应用程序最近打开的文件的列表,类别的名称及其项目由Windows设置。项目可以使用app.addRecent