You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器化.NET 7 API后无法外部访问的问题求助

Docker容器化.NET 7 API后无法外部访问的问题求助

各位大佬好,我刚接触Docker,最近把自己的项目(包含.NET 7 API、Angular UI和SQL Server数据库)做容器化,但遇到了个头疼的问题:启动所有容器后,API没法从外部正常访问。之前用Visual Studio启动docker-compose的时候一切正常,但现在在VS外启动,不管是访问localhost看Swagger还是通过UI调用API都不行。

先给大家看下我的项目结构:

  • 项目根目录
    • UI(内置Dockerfile)
    • Api
      • ResultsApi(内置Dockerfile)
    • docker-compose.yml
    • docker-compose.override.yml

我的API Dockerfile内容如下:

FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

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

FROM build AS publish
RUN dotnet publish "ResultsApi.csproj" -c Release -o /app/publish /p:UseAppHost=false

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

docker-compose.yml的配置:

version: '3.4'

networks:
  backend:
  frontend:

services:
  database:
    container_name: app-db
    image: mcr.microsoft.com/mssql/server:2022-latest
    ports:
      - 8002:1433
    environment:
      - ACCEPT_EULA=Y
      - MSSQL_SA_PASSWORD=password@123
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - backend

  resultsapi:
    container_name: app-api
    image: ${DOCKER_REGISTRY-}resultsapi
    build:
      context: .
      dockerfile: API\ResultsApi\Dockerfile
    depends_on:
      - database
    environment:
      - DB_HOST=database
      - DB_NAME=Results
      - DB_SA_PASSWORD=password@123
    networks:
      - backend
      - frontend

  ui:
    image: my-movies
    build:
      context: .
      dockerfile: UI\Dockerfile
    ports:
      - '4200:80'
    networks:
      - frontend

volumes:
  db_data:
    driver: local

docker-compose.override.yml的配置:

version: '3.4'

services:
  resultsapi:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=https://+:443;http://+:80
    ports:
      - "8001:80"
    volumes:
      - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
      - ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro

我启动容器用的命令是:

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

现在的问题是:UI访问localhost:4200完全正常,能看到页面也能操作,但访问localhost:8001或者localhost:8001/swagger/index.html的时候,浏览器会提示:

This site can’t provide a secure connection localhost sent an invalid response.

通过UI调用API的时候,浏览器控制台会报错:

net::ERR_SSL_PROTOCOL_ERROR

有没有大佬能帮我看看问题出在哪呀?

备注:内容来源于stack exchange,提问作者rjs52

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 07:13:12