【发布时间】:2020-08-26 01:57:17
【问题描述】:
我有一个 docker compose 文件,我有一个 postgres 实例正在启动,还有一个 web api 项目,但是我收到以下错误:
api_1 | Application startup exception
api_1 | Npgsql.NpgsqlException (0x80004005): Exception while connecting
api_1 | ---> System.TimeoutException: Timeout during connection attempt
api_1 | at Npgsql.NpgsqlConnector.Connect(NpgsqlTimeout timeout)
api_1 | at Npgsql.NpgsqlConnector.Connect(NpgsqlTimeout timeout)
api_1 | at Npgsql.NpgsqlConnector.RawOpen(NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
api_1 | at Npgsql.NpgsqlConnector.Open(NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
api_1 | at Npgsql.NpgsqlConnection.<>c__DisplayClass32_0.<<Open>g__OpenLong|0>d.MoveNext()
api_1 | --- End of stack trace from previous location where exception was thrown ---
api_1 | at Npgsql.NpgsqlConnection.Open()
api_1 | at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists()
api_1 | at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists()
api_1 | at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
api_1 | at Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.Migrate(DatabaseFacade databaseFacade)
api_1 | at my.Claims.Engine.Api.Startup.Configure(IApplicationBuilder app, IWebHostEnvironment env, myDbContext ctx) in /src/my.Claims.Engine.Api/Startup.cs:line 56
api_1 | at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
api_1 | at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
api_1 | at Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder)
api_1 | at Microsoft.AspNetCore.Hosting.ConfigureBuilder.<>c__DisplayClass4_0.<Build>b__0(IApplicationBuilder builder)
api_1 | at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.<>c__DisplayClass13_0.<UseStartup>b__2(IApplicationBuilder app)
api_1 | at Microsoft.AspNetCore.Mvc.Filters.MiddlewareFilterBuilderStartupFilter.<>c__DisplayClass0_0.<Configure>g__MiddlewareFilterBuilder|0(IApplicationBuilder builder)
api_1 | at Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder app)
api_1 | at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)
api_1 | Unhandled exception. Npgsql.NpgsqlException (0x80004005): Exception while connecting
api_1 | ---> System.TimeoutException: Timeout during connection attempt
api_1 | at Npgsql.NpgsqlConnector.Connect(NpgsqlTimeout timeout)
api_1 | at Npgsql.NpgsqlConnector.Connect(NpgsqlTimeout timeout)
api_1 | at Npgsql.NpgsqlConnector.RawOpen(NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
api_1 | at Npgsql.NpgsqlConnector.Open(NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
api_1 | at Npgsql.NpgsqlConnection.<>c__DisplayClass32_0.<<Open>g__OpenLong|0>d.MoveNext()
api_1 | --- End of stack trace from previous location where exception was thrown ---
api_1 | at Npgsql.NpgsqlConnection.Open()
api_1 | at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists()
api_1 | at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists()
api_1 | at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
api_1 | at Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.Migrate(DatabaseFacade databaseFacade)
api_1 | at my.Claims.Engine.Api.Startup.Configure(IApplicationBuilder app, IWebHostEnvironment env, myDbContext ctx) in /src/my.Claims.Engine.Api/Startup.cs:line 56
api_1 | at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
api_1 | at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
api_1 | at Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder)
api_1 | at Microsoft.AspNetCore.Hosting.ConfigureBuilder.<>c__DisplayClass4_0.<Build>b__0(IApplicationBuilder builder)
api_1 | at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.<>c__DisplayClass13_0.<UseStartup>b__2(IApplicationBuilder app)
api_1 | at Microsoft.AspNetCore.Mvc.Filters.MiddlewareFilterBuilderStartupFilter.<>c__DisplayClass0_0.<Configure>g__MiddlewareFilterBuilder|0(IApplicationBuilder builder)
api_1 | at Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder app)
api_1 | at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)
api_1 | at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)
api_1 | at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
api_1 | at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
api_1 | at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost host)
api_1 | at my.Claims.Engine.Api.Program.Main(String[] args) in /src/my.Claims.Engine.Api/Program.cs:line 17
my-claims_api_1 exited with code 139
这是我的 docker-compose:
services:
db:
image: postgres
restart: always
ports:
- '5432:5432'
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: password
eventbus:
image: 'rabbitmq'
ports:
- '5672:5672'
- '15672:15672'
portal:
image: ${DOCKER_REGISTRY-}portal
build:
context: ./portal
dockerfile: Docker/Dockerfile
ports:
- "3000:80"
api:
image: ${DOCKER_REGISTRY-}my_claims_engine_api
build:
context: ./my.Claims.Engine
dockerfile: my.Claims.Engine.Api/Dockerfile
ports:
- "4000:80"
这是我的连接字符串:
"myDbContext": "Server=localhost;Port=5432;Database=mydatabase;User Id=root;Password=password;"
如果我将 postgres 作为它自己的映像运行,并通过我能够连接的本地地址进行连接,我的迁移就会运行,没有任何问题。
我唯一一次得到错误是通过 docker-compose。
另外,我无法通过 localhost:15672 连接到 rabbitmq 实例,任何关于此的建议也很棒......
有什么想法吗?
【问题讨论】:
标签: postgresql docker asp.net-core entity-framework-core