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

