Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .net core无法连接到postgres(docker compose)_C#_Postgresql_Docker_.net Core_Docker Compose - Fatal编程技术网

C# .net core无法连接到postgres(docker compose)

C# .net core无法连接到postgres(docker compose),c#,postgresql,docker,.net-core,docker-compose,C#,Postgresql,Docker,.net Core,Docker Compose,我有一个docker compose文件,该文件应构建: 数据库(Postgres) API(.net内核) 前端(Vue) docker-compose.yml version: '3.8' networks: production: driver: bridge test: driver: bridge docker-compose.test.yml version: '3.8' services: postgres_test: image:

我有一个docker compose文件,该文件应构建:

数据库(Postgres)

API(.net内核)

前端(Vue)

docker-compose.yml

    version: '3.8'

networks:
  production:
    driver: bridge
  test:
    driver: bridge
docker-compose.test.yml

version: '3.8'

services:
  postgres_test:
    image: postgres:11.4
    container_name: postgres_test
    environment:
      POSTGRES_USER: coinManager
      POSTGRES_PASSWORD: postgresTest
      POSTGRES_DB: coinManagerTest
    restart: always
    volumes:
      - /coinManager/postgres/test/data:/var/lib/postgresql/data
    ports:
      - '5433:5432'
    networks:
      - test

  web_test:
    build: ./papasmuenzenbackend/.
    container_name: api_test
    ports:
      - '50599:80'
    links:
      - postgres_test
    depends_on:
      - 'postgres_test'
    networks:
      - test

  client_test:
    build: ./papasmuenzenfrontend/.
    container_name: vue_test
    ports:
      - '8081:8080'
    networks:
      - test
从这个脚本开始:

docker-compose -p papasmuenzen -f docker-compose.yml -f docker-compose.test.yml up -d --build
看起来数据库启动得很好,因为我可以用pgAdmin连接到它

docker compose启动.net核心项目时,在尝试迁移数据库时无法启动

    #region Database
    using (var dbContext = serviceProvider.GetService<CoinContext>())
        dbContext.Database.Migrate();
    #endregion
例外情况:

    System.Net.Internals.SocketExceptionFactory+ExtendedSocketException (00000005, 0xFFFDFFFF): Name or service not known

at System.Net.Dns.InternalGetHostByName(String hostName)

at System.Net.Dns.GetHostAddresses(String hostNameOrAddress)

at Npgsql.NpgsqlConnector.Connect(NpgsqlTimeout timeout)

at Npgsql.NpgsqlConnector.RawOpen(NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)

at Npgsql.NpgsqlConnector.Open(NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)

at Npgsql.NpgsqlConnection.<>c__DisplayClass32_0.<<Open>g__OpenLong|0>d.MoveNext()

--- End of stack trace from previous location where exception was thrown ---

at Npgsql.NpgsqlConnection.Open()

at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists()

at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists()

at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)

at Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.Migrate(DatabaseFacade databaseFacade)

at CoinManager.Startup.Configure(IApplicationBuilder app, IWebHostEnvironment env, IServiceProvider serviceProvider) in /app/CoinManager/Startup.cs:line 86

at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)

at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)

at Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder)

at Microsoft.AspNetCore.Hosting.ConfigureBuilder.<>c__DisplayClass4_0.<Build>b__0(IApplicationBuilder builder)

at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.<>c__DisplayClass13_0.<UseStartup>b__2(IApplicationBuilder app)

at Microsoft.AspNetCore.Mvc.Filters.MiddlewareFilterBuilderStartupFilter.<>c__DisplayClass0_0.<Configure>g__MiddlewareFilterBuilder|0(IApplicationBuilder builder)

at Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder app)

at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)

Unhandled exception. System.Net.Internals.SocketExceptionFactory+ExtendedSocketException (00000005, 0xFFFDFFFF): Name or service not known

at System.Net.Dns.InternalGetHostByName(String hostName)

at System.Net.Dns.GetHostAddresses(String hostNameOrAddress)

at Npgsql.NpgsqlConnector.Connect(NpgsqlTimeout timeout)

at Npgsql.NpgsqlConnector.RawOpen(NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)

at Npgsql.NpgsqlConnector.Open(NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)

at Npgsql.NpgsqlConnection.<>c__DisplayClass32_0.<<Open>g__OpenLong|0>d.MoveNext()

--- End of stack trace from previous location where exception was thrown ---

at Npgsql.NpgsqlConnection.Open()

at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists()

at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists()

at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)

at Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.Migrate(DatabaseFacade databaseFacade)

at CoinManager.Startup.Configure(IApplicationBuilder app, IWebHostEnvironment env, IServiceProvider serviceProvider) in /app/CoinManager/Startup.cs:line 86

at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)

at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)

at Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder)

at Microsoft.AspNetCore.Hosting.ConfigureBuilder.<>c__DisplayClass4_0.<Build>b__0(IApplicationBuilder builder)

at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.<>c__DisplayClass13_0.<UseStartup>b__2(IApplicationBuilder app)

at Microsoft.AspNetCore.Mvc.Filters.MiddlewareFilterBuilderStartupFilter.<>c__DisplayClass0_0.<Configure>g__MiddlewareFilterBuilder|0(IApplicationBuilder builder)

at Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder app)

at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)

at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)

at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)

at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)

at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost host)

at CoinManager.Program.Main(String[] args) in /app/CoinManager/Program.cs:line 17
System.Net.Internals.SocketExceptionFactory+ExtendedSocketException(00000005,0xFFFDFFFF):名称或服务未知
位于System.Net.Dns.InternalGetHostByName(字符串主机名)
位于System.Net.Dns.GetHostAddresses(字符串hostNameOrAddress)
在Npgsql.NpgsqlConnector.Connect上(NpgsqlTimeout超时)
在Npgsql.NpgsqlConnector.RawOpen(NpgsqlTimeout timeout,布尔异步,CancellationToken CancellationToken)
在Npgsql.NpgsqlConnector.Open处(NpgsqlTimeout超时、布尔异步、CancellationToken CancellationToken)
在Npgsql.NpgsqlConnection.c__DisplayClass32_0.d.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
在Npgsql.NpgsqlConnection.Open()处
位于Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists()处
在Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists()中
位于Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(字符串targetMigration)
位于Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.Migrate(DatabaseFacade DatabaseFacade)
在/app/CoinManager/Startup.cs中的CoinManager.Startup.Configure(IApplicationBuilder应用程序、iWebHostenEnvironment环境、IServiceProvider服务提供商)处:第86行
在System.RuntimeMethodHandle.InvokeMethod(对象目标、对象[]参数、签名符号、布尔构造函数、布尔WrapeExceptions)
在System.Reflection.RuntimeMethodInfo.Invoke(对象obj、BindingFlags invokeAttr、绑定器绑定器、对象[]参数、CultureInfo区域性)
位于Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(对象实例,IAApplicationBuilder)
在Microsoft.AspNetCore.Hosting.ConfigureBuilder.c__显示类4_0.b__0(IApplicationBuilder生成器)
在Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.c__DisplayClass13_0.b__2(IApplicationBuilder应用程序)
在Microsoft.AspNetCore.Mvc.Filters.MiddlewareFilterBuilderStartupFilter.c_uuDisplayClass0_0.g_uuMiddleWareFilterBuilder | 0(IAApplicationBuilder builder)
在Microsoft.AspNetCore.HostFilteringStartupFilter.c__DisplayClass0_0.b_0(IApplicationBuilder应用程序)上
位于Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken CancellationToken)
未处理的异常。System.Net.Internals.SocketExceptionFactory+ExtendedSocketException(00000005,0xFFFDFFFF):名称或服务未知
位于System.Net.Dns.InternalGetHostByName(字符串主机名)
位于System.Net.Dns.GetHostAddresses(字符串hostNameOrAddress)
在Npgsql.NpgsqlConnector.Connect上(NpgsqlTimeout超时)
在Npgsql.NpgsqlConnector.RawOpen(NpgsqlTimeout timeout,布尔异步,CancellationToken CancellationToken)
在Npgsql.NpgsqlConnector.Open处(NpgsqlTimeout超时、布尔异步、CancellationToken CancellationToken)
在Npgsql.NpgsqlConnection.c__DisplayClass32_0.d.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
在Npgsql.NpgsqlConnection.Open()处
位于Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists()处
在Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists()中
位于Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(字符串targetMigration)
位于Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.Migrate(DatabaseFacade DatabaseFacade)
在/app/CoinManager/Startup.cs中的CoinManager.Startup.Configure(IApplicationBuilder应用程序、iWebHostenEnvironment环境、IServiceProvider服务提供商)处:第86行
在System.RuntimeMethodHandle.InvokeMethod(对象目标、对象[]参数、签名符号、布尔构造函数、布尔WrapeExceptions)
在System.Reflection.RuntimeMethodInfo.Invoke(对象obj、BindingFlags invokeAttr、绑定器绑定器、对象[]参数、CultureInfo区域性)
位于Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(对象实例,IAApplicationBuilder)
在Microsoft.AspNetCore.Hosting.ConfigureBuilder.c__显示类4_0.b__0(IApplicationBuilder生成器)
在Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.c__DisplayClass13_0.b__2(IApplicationBuilder应用程序)
在Microsoft.AspNetCore.Mvc.Filters.MiddlewareFilterBuilderStartupFilter.c_uuDisplayClass0_0.g_uuMiddleWareFilterBuilder | 0(IAApplicationBuilder builder)
在Microsoft.AspNetCore.HostFilteringStartupFilter.c__DisplayClass0_0.b_0(IApplicationBuilder应用程序)上
位于Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken CancellationToken)
位于Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken CancellationToken)
位于Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost主机,CancellationToken令牌)
位于Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost主机,CancellationToken令牌)
在Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost主机)上运行
在/app/CoinManager/Program.cs中的CoinManager.Program.Main(字符串[]args)处:第17行

我删除了网络配置。 我的docker compose文件现在看起来像这样,并且可以正常工作:

  version: '3.8'

        services:
          postgres_test_db:
            image: postgres:11.4
            container_

name: postgres_test
        environment:
          POSTGRES_USER: coinManager
          POSTGRES_PASSWORD: postgresTest
          POSTGRES_DB: coinManagerTest
        restart: always
        volumes:
          - /coinManager/postgres/test/data:/var/lib/postgresql/data
        ports:
          - '5433:5432'

      web_test:
        build: ./papasmuenzenbackend/.
        container_name: api_test
        ports:
          - '50599:80'
        depends_on:
          - postgres_test_db
        environment:
          - ASPNETCORE_ENVIRONMENT=Test

      client_test:
        build: ./papasmuenzenfrontend/.
        container_name: vue_test
        restart: always
        ports:
          - '8081:8080'

我删除了网络配置。 我的docker compose文件现在看起来像这样,并且可以正常工作:

  version: '3.8'

        services:
          postgres_test_db:
            image: postgres:11.4
            container_

name: postgres_test
        environment:
          POSTGRES_USER: coinManager
          POSTGRES_PASSWORD: postgresTest
          POSTGRES_DB: coinManagerTest
        restart: always
        volumes:
          - /coinManager/postgres/test/data:/var/lib/postgresql/data
        ports:
          - '5433:5432'

      web_test:
        build: ./papasmuenzenbackend/.
        container_name: api_test
        ports:
          - '50599:80'
        depends_on:
          - postgres_test_db
        environment:
          - ASPNETCORE_ENVIRONMENT=Test

      client_test:
        build: ./papasmuenzenfrontend/.
        container_name: vue_test
        restart: always
        ports:
          - '8081:8080'

当应用程序尝试连接到数据库时,数据库可能尚未初始化。看到了吗?我尝试过添加不同类型的等待凭条…仍然不起作用。您是否尝试过在连接字符串中使用
Host
Source
而不是
Server
?是的,我也尝试过。我现在修复了它,我完全删除了docker compose文件中的网络配置。当您的应用程序尝试连接到数据库时,可能数据库尚未初始化。看,我试过了,艾迪