我的DockerFile:

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
#USER app
WORKDIR /app
EXPOSE 80/tcp


FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["Services/Catalog/Catalog.API/Catalog.API.csproj", "Services/Catalog/Catalog.API/"]
RUN dotnet restore "./Services/Catalog/Catalog.API/./Catalog.API.csproj"
COPY . .
WORKDIR "/src/Services/Catalog/Catalog.API"
RUN dotnet build "./Catalog.API.csproj" -c $BUILD_CONFIGURATION -o /app/build

FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./Catalog.API.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false

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

我的docker-compose文件

version: '3.4'

services:

  catalogdb:
    container_name: cataloggdb
    restart: always
    ports:
      - "27017:27017"
    volumes:
      - mongo_data:/data/db 

  catalog.api:
    container_name: catalog.api
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - "DatabaseSettings:ConnectionString=mongodb://catalogdb:27017"
    depends_on:
      - catalogdb
    ports:
      - "8000:80"

我执行

docker-compose -f .\docker-compose.yml -f .\docker-compose.override.yml up -d

✔ Network src_default    Created                                                                                  0.0s
 ✔ Container cataloggdb   Started                                                                                  0.1s
 ✔ Container catalog.api  Started

enter image description here

当我升到http://localhost:27017/的时候,它就起作用了:

enter image description here

当我数到http://localhost:8000/swagger/index.html的时候,它不起作用:

enter image description here

推荐答案

EXPOSE并不实际设置端口,它基本上是文档:

EXPOSE指令实际上并不发布端口.它充当构建映像的人和运行容器的人之间的一种类型的文档,关于要发布的端口.

由于.NET 8在ASP.NET核心映像中的默认端口是8080-请参见Default ASP.NET Core port changed from 80 to 8080.

或者更改映射以反映这一点:

ports:
  - "8000:8080"

或者将port设置为80,例如使用ASPNETCORE_HTTP_PORTS环境变量:

environment:
   - ASPNETCORE_HTTP_PORTS=80

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
#USER app
WORKDIR /app
ENV ASPNETCORE_HTTP_PORTS=80
EXPOSE 80/tcp

Csharp相关问答推荐

发布.NET框架项目将.NET核心元素注入到web. connect中

List T.AddRange在传递ConcurrentDictionary作为参数时引发ArgumentExcellent

EF Core在请求列表时忽略列,但在按ID获取时包含

如何阻止注释被包含在C#release build. exe中

如何使用C#Interop EXCEL创建度量衡

从VS调试器而不是测试资源管理器运行的调试NUnitDotNet测试

未在数据流块之间传播完成

将类移动到新命名空间后更新RavenDB Raven-Clr-Type

DateTime ToString()未以指定格式打印

Regex字母数字校验

在被Interactive Server切换后,Blazor SSR页面无法正确加载JS

为什么我的伺服电机不动,下面的代码?

使用动态键从请求体反序列化JSON

WPF动态设置弹出窗口水平偏移

此异步方法在重写方法中缺少等待运算符警告

将J数组转换为列表,只保留一个嵌套的JToken

将字符串类型日期输入(yyyy-mm-ddthh:mm:ss)转换为MM/dd/yyyy格式

如何在特定时间间隔运行多个后台任务?

如何使用LINQ在C#中填充列表列表?

读取测试项目中的应用程序设置