简体   繁体   English

.net 核心无法连接到 postgres(docker compose)

[英].net core can not connect to postgres (docker compose)

I have a docker compose file which should build:我有一个 docker 撰写文件,它应该构建:

Database (Postgres)数据库(Postgres)

API (.net Core) API(.net核心)

FrontEnd (Vue)前端 (Vue)

docker-compose.yml docker-compose.yml

    version: '3.8'

networks:
  production:
    driver: bridge
  test:
    driver: bridge

docker-compose.test.yml 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

Starting with this script:从此脚本开始:

docker-compose -p papasmuenzen -f docker-compose.yml -f docker-compose.test.yml up -d --build

It looks like the database is starting fine, because i can connect to it with pgAdmin看起来数据库启动正常,因为我可以使用 pgAdmin 连接到它pgAdmin

When docker-compose starts the .net core project, it fails to start when trying to migrate the database docker-compose启动.net核心项目时,尝试迁移数据库时启动失败

    #region Database
    using (var dbContext = serviceProvider.GetService<CoinContext>())
        dbContext.Database.Migrate();
    #endregion

Connection String:连接字符串:

   "CoinDatabaseConnection": "Server=postgres_test;Port=5433;Database=coinManagerTest;username=coinManager;password=postgresTest;Integrated Security=true;Pooling=true;Timeout=300"

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)

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

I removed the network configurations.我删除了网络配置。 My docker compose file now looks like this and it works:我的 docker 撰写文件现在看起来像这样并且它可以工作:

  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'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 .net核心应用程序无法连接到RabbitMQ(两者都通过docker-compose在docker网络中运行) - .net core app ca't connect to rabbitMQ (both running in a docker network via docker-compose) 在 Docker 容器中运行 .Net 5 API 时无法连接到 Postgres - Can't connect to Postgres when running .Net 5 API in Docker container 无法从 App Engine 连接到 Google Cloud SQL 中的 postgres,该 App Engine 在 Docker 中使用自定义运行时运行 .NET 核心应用程序 - Unable to connect to postgres in Google Cloud SQL from App Engine running a .NET Core app in Docker with Custom runtime 无法从 Docker Z9E0DA8438E1E38A1C30F4B176CE7 Core 连接到 Docker SQL 服务器 - Can not connect to Docker SQL Server from Docker ASP.NET Core 3.1 Docker-Compose 连接被 ASP-NET Core 5 拒绝 - Docker-Compose Connection Refused with ASP-NET Core 5 .NET 核心工作者 - 因为启用 Docker 撰写我的服务无法从 appsettings.json 读取 IAM 凭证 - .NET Core worker - since enabling Docker Compose my service can't read IAM credentials from appsettings.json C# and Docker - Can't connect to containerized MySQL server from containerized .NET Core 3.1 Web API - C# and Docker - Can't connect to containerized MySQL server from containerized .NET Core 3.1 Web API 无法从 NET Core 2.2 Web API 连接到 docker sql server - Can't connect to docker sql server from NET Core 2.2 Web API 无法从运行在 docker 上的 .net 核心应用连接到 SQL Server express - Can't connect to SQL Server express from .net core app running on docker 无法从带有 ASP.NET Core 的 Docker 容器连接到 SQL Server 容器 - Can't connect from the Docker container with ASP.NET Core to SQL Server container
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM