【发布时间】:2021-11-10 04:26:13
【问题描述】:
我已经编写了一个 docker 文件来构建我的 .Net 5.0 Web API,我能够构建它并推送它,但是我无法访问它。
我的 Docker 文件。
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["API/WebUI/Summit.API.csproj", "API/WebUI/"]
COPY ["Application/Summit.Application.csproj", "Application/"]
COPY ["Domain/Shared/Summit.Domain.csproj", "Domain/Shared/"]
COPY ["Domain/SqlKata.Execution/SqlKata.Execution.csproj",
"Domain/SqlKata.Execution/"]
COPY ["Domain/QueryBuilder/QueryBuilder.csproj", "Domain/QueryBuilder/"]
COPY ["Infrastructure/Summit.Infrastructure.csproj", "Infrastructure/"]
RUN dotnet restore "API/WebUI/Summit.API.csproj"
COPY . .
WORKDIR "/src/API/WebUI"
RUN dotnet build "Summit.API.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "Summit.API.csproj" -c Release -o /app/publish
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS runtime
WORKDIR /app
COPY --from=publish /app/publish .
ENV ASPNETCORE_URLS http://*:6000
ENTRYPOINT ["dotnet", "Summit.API.dll"]
构建解决方案后,我正在使用以下命令创建容器。
docker container run -itd --name WebAPIServer -p 6000:6000 image name.
但是当我尝试使用 http://localhost:6000 访问它时,我收到了无法访问此站点的错误消息。
我没有使用端口 5000,因为我的 docker 注册表正在该端口上运行。
容器的日志说:
ClientConnectionId:00000000-0000-0000-0000-000000000000 [05:58:37 警告] 无法绑定到 IPv6 环回接口上的 localhost:5000: '无法分配请求的地址'。 [05:58:37 INF] 现在收听: localhost:5000 [05:58:37 INF] 应用程序已启动。按 Ctrl+C 到 关掉。 [05:58:37 INF] 托管环境:生产 [05:58:37 INF] 内容根路径:/app root@labubuntu20-01:/home/spaadmin#
【问题讨论】:
-
容器的日志是怎么说的?
-
你没有
EXPOSE端口6000。 -
我尝试暴露 6000 端口但没有成功
-
ClientConnectionId:00000000-0000-0000-0000-000000000000 [05:58:37 WRN] 无法绑定到 IPv6 环回接口上的localhost:5000:“无法分配请求的地址”。 [05:58:37 INF] 现在收听:localhost:5000 [05:58:37 INF] 应用程序已启动。按 Ctrl+C 关闭。 [05:58:37 INF] 托管环境:生产 [05:58:37 INF] 内容根路径:/app root@labubuntu20-01:/home/spaadmin#
-
以上是我在运行命令 docker container logs container id 时得到的输出。
标签: .net docker dockerfile containers