无法使用 docker-compose 连接到 Postgres 数据库

米努什卡

我正在尝试构建一个 docker-compose 文件,该文件将启动我的 EF Core Web api 项目,连接到我的 Postgres 数据库。

我很难让 EF 项目连接到数据库。

这是我目前拥有的docker-compose.yml

version: '3.8'

services:

  web:
    container_name: 'mybackendcontainer'
    image: 'myuser/mybackend:0.0.6'
    build:
      context: .
      dockerfile: backend.dockerfile
    ports:
     - 8080:80
    depends_on:
     - postgres
    networks:
      - mybackend-network

  postgres:
    container_name: 'postgres'
    image: 'postgres:latest'
    environment:
      - POSTGRES_USER=username
      - POSTGRES_PASSWORD=MySuperSecurePassword!
      - POSTGRES_DB=MyDatabase
    networks:
      - mybackend-network
    expose: 
      - 5432
    volumes:
      - ./db-data/:/var/lib/postgresql/data/

  pgadmin:
    image: dpage/pgadmin4
    ports:
        - 15433:80
    env_file:
        - .env
    depends_on:
        - postgres
    networks:
        - mybackend-network
    volumes:
        - ./pgadmin-data/:/var/lib/pgadmin/

networks:
  mybackend-network:
    driver: bridge

我的 web 项目 docker 文件如下所示:

# Get base DSK Image from Microsoft
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build-env
WORKDIR /app

# Copy the CSPROJ file and restore any dependencies (via NUGET)
COPY *.csproj ./
RUN dotnet restore

# Copy the project files and build our release
COPY . ./
RUN dotnet publish -c Release -o out

# Generate runtime image - do not include the whole SDK to save image space
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
EXPOSE 80
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "MyBackend.dll"]

我的连接字符串如下所示:

User ID =bootcampdb;Password=MySuperSecurePassword!;Server=postgres;Port=5432;Database=MyDatabase; Integrated Security=true;Pooling=true;

目前我有两个问题:

  1. Npgsql.PostgresException (0x80004005): 57P03: the database system is starting up当我这样做时,我得到了docker-compose -up我试图将其添加healthcheck到我的 postgress 数据库中,但这没有用。当我转到我的 Docker 桌面应用程序并再次启动我的后端时,该消息消失了,我遇到了第二个问题......

  2. 其次,在数据库启动后,它说:FATAL: password authentication failed for user "username". 看起来它没有为数据库创建我的用户。我什至更改为不使用 .env 文件,但在我的 docker-compose 文件中有值,但它仍然无法正常工作。我试图docker-compose down -v确保我的卷被删除。

抱歉,这些可能是愚蠢的问题,我对容器化还很陌生,并试图让它发挥作用。

任何帮助将不胜感激!

汉斯·基利安

问题 1:depends_on仅意味着 docker-compose 将等到您的 postgres 容器启动后才会启动 Web 容器。postgres 容器需要一些时间来准备接受连接,如果您在它准备好之前尝试连接,则会收到您看到的错误。您需要以一种等待 Postgres 准备好通过延迟重试连接的方式对后端进行编码。

问题 2:Postgres 仅在没有数据库存在的情况下才创建用户和数据库。您可能在./db-data/主机上有一个现有的数据库。尝试删除./db-data/,Postgres 应该使用您设置的环境变量创建用户和数据库。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法从docker-compose连接到docker

无法使用docker-compose与mysql和php 7连接到数据库

无法使用Sequelize的Docker Compose连接到Postgres容器

如何使用SQLAlchemy在Windows 10中的Docker上连接到Postgres数据库?

postgres和docker-compose:无法创建自定义角色和数据库

Docker Compose无法连接到数据库

docker-compose-无法连接到MySQL数据库

无法使用docker compose将phpmyadmin连接到数据库

使用python连接到AWS RDS Postgres数据库

无法使用Adminer和docker-compose连接到MySQL数据库

无法在docker-compose(php和MariaDB)中连接到数据库服务器

.net核心无法连接到Postgres(Docker Compose)

无法通过Spring Boot将Docker Desktop Kubernetes(Windows)服务连接到本地Postgres数据库

无法使用Docker连接我的postgres数据库

Docker Compose:无法连接到Postgres

使用Java连接到Heroku Postgres数据库

在 Docker Compose 中连接到数据库的问题

Hyperledger Iroha 无法连接到 postgres 数据库?

后端容器无法连接到数据库 - Sequelize、Node、Postgres、Docker

使用 Docker 连接到 Postgres

Wordpress 未使用 nginx、letsencrypt 和 docker compose 连接到数据库

在 docker compose 上运行时无法连接到 rails 应用程序中的数据库

无法从 golang Docker 容器连接到 Postgres 数据库

如何使用连接到本地机器上的另一个服务的 docker-compose 连接到数据库(redash & mysql & python_script)

无法从我的本地机器连接到 docker 容器中的 postgres 数据库

Docker Compose 无法从用户“postgres”的数据库 (jdbc:postgresql://db:5432/postgres) 获取连接:连接尝试失败

使用 docker compose 将 API 连接到数据库

无法使用 pgadmin4 从 docker 连接到本地 postgres 数据库

使用 docker 安装竹试验并连接到本地主机上的 postgres 数据库时出现问题