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

ASP.NET连接Docker中PostgreSQL失败问题求助

ASP.NET连接Docker中PostgreSQL失败问题排查

所有ASP.NET项目均出现连接Docker中PostgreSQL失败的问题,起初以为是本地机器原因,但在GitHub Code Spaces测试仍出现相同错误,测试其他ASP.NET+PostgreSQL Docker仓库也存在该问题。

API日志

未处理的异常。Npgsql.NpgsqlException (0x80004005): 无法连接到172.19.0.4:5432
 ---> System.Net.Sockets.SocketException (111): 连接被拒绝
   在 Npgsql.Internal.NpgsqlConnector.Connect(NpgsqlTimeout timeout)
   在 Npgsql.Internal.NpgsqlConnector.Connect(NpgsqlTimeout timeout)
   在 Npgsql.Internal.NpgsqlConnector.RawOpen(SslMode sslMode, NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken, Boolean isFirstAttempt)
   在 Npgsql.Internal.NpgsqlConnector.<Open>g__OpenCore|213_1(NpgsqlConnector conn, SslMode sslMode, NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken, Boolean isFirstAttempt)
   在 Npgsql.Internal.NpgsqlConnector.Open(NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
   在 Npgsql.UnpooledDataSource.Get(NpgsqlConnection conn, NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
   在 Npgsql.NpgsqlConnection.<Open>g__OpenAsync|42_0(Boolean async, CancellationToken cancellationToken)
   在 Npgsql.NpgsqlConnection.Open()
   在 Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenDbConnection(Boolean errorsExpected)
   在 Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenInternal(Boolean errorsExpected)
   在 Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open(Boolean errorsExpected)
   在 Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists(Boolean async, CancellationToken cancellationToken)
   在 Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists(Boolean async, CancellationToken cancellationToken)
   在 Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists()
   在 Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists()
   在 Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrations()
   在 Npgsql.EntityFrameworkCore.PostgreSQL.Migrations.Internal.NpgsqlMigrator.Migrate(String targetMigration)
   在 Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.Migrate(DatabaseFacade databaseFacade)
   在 Products.Api.Extensions.MigrationExtensions.ApplyMigrations(IApplicationBuilder app) 位置 /src/Products.Api/Extensions/MigrationExtensions.cs:第15行
   在 Program.<Main>$(String[] args) 位置 /src/Products.Api/Program.cs:第23行
 *  终端将被任务复用,按任意键关闭。

docker-compose.yml配置

version: '3.4'

services:
  products.api:
    image: ${DOCKER_REGISTRY-}productsapi
    container_name: products.api
    build:
      context: .
      dockerfile: Products.Api/Dockerfile
    ports:
      - "5000:5000"
      - "5001:5001"

  products.database:
    image: postgres:latest
    container_name: products.database
    environment:
      - POSTGRES_DB=products
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
    volumes:
      - ./.containers/products-db:/var/lib/postgresql/data
    ports:
      - 5432:5432

  products.cache:
    image: redis:latest
    restart: always
    ports:
      - '6379:6379'

docker-compose.override.yml配置

version: '3.4'

services:
  products.api:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_HTTP_PORTS=5000
      - ASPNETCORE_HTTPS_PORTS=5001
    ports:
      - "5000:5000"
      - "5001:5001"
    volumes:
      - ${APPDATA}/Microsoft/UserSecrets:/home/app/.microsoft/usersecrets:ro
      - ${APPDATA}/ASP.NET/Https:/home/app/.aspnet/https:ro

PostgreSQL容器日志

PostgreSQL初始化过程完成;准备启动。

2024-05-22 06:09:30.105 UTC [1] LOG:  启动PostgreSQL 16.3 (Debian 16.3-1.pgdg120+1) on x86_64-pc-linux-gnu,由gcc (Debian 12.2.0-14) 12.2.0编译,64位
2024-05-22 06:09:30.105 UTC [1] LOG:  监听IPv4地址"0.0.0.0",端口5432
2024-05-22 06:09:30.106 UTC [1] LOG:  监听IPv6地址"::",端口5432
2024-05-22 06:09:30.130 UTC [1] LOG:  监听Unix套接字"/var/run/postgresql/.s.PGSQL.5432"
2024-05-22 06:09:30.163 UTC [65] LOG:  数据库系统于2024-05-22 06:09:29 UTC关闭
2024-05-22 06:09:30.183 UTC [1] LOG:  数据库系统已准备好接受连接
2024-05-22 06:14:30.261 UTC [63] LOG:  检查点开始:时间
2024-05-22 06:14:34.624 UTC [63] LOG:  检查点完成:写入45个缓冲区(0.3%);添加0个WAL文件,移除0个,回收0个;写入耗时4.244秒,同步耗时0.054秒,总耗时4.363秒;同步文件12个,最长0.016秒,平均0.005秒;距离260 kB,预估260 kB;lsn=0/1953468,redo lsn=0/1953430
 *  终端将被任务复用,按任意键关闭。

内容的提问来源于stack exchange,提问作者Regestea

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 11:17:02