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
相关产品推荐
相关产品推荐

