gpt4 book ai didi

postgresql - 为什么docker-entrypoint-initdb.d中的脚本在数据库开始监听导致pg_restore失败的连接之前运行?

转载 作者:行者123 更新时间:2023-12-02 19:22:51 35 4
gpt4 key购买 nike

根据https://hub.docker.com/_/postgres的“初始化脚本”部分,我在docker-entrypoint-initdb.d中有两个文件:

  • init-db.sh
  • backup.dump

  • init-db.sh包含:
    #!/bin/sh
    pg_restore -h localhost -p 5432 -U postgres -d postgres -v "/docker-entrypoint-initdb.d/backup.dump"
    exit

    并且似乎可以执行,但出现服务器连接错误,因为似乎服务器尚未开始监听端口5432,如以下日志文​​件所示。

    我究竟做错了什么?我基本上想在postgres docker容器初始化并开始运行后恢复数据库。

    如果容器在运行,如果我在终端 session 中手动运行init-db.sh脚本,它将完全按照我的需要创建数据库...
    2019-10-23T17:09:43.032659100Z /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/backup.dump
    2019-10-23T17:09:43.032699100Z
    2019-10-23T17:09:43.032704200Z /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/init-db.sh
    2019-10-23T17:09:43.069092100Z pg_restore: connecting to database for restore
    2019-10-23T17:09:43.069518400Z pg_restore: error: connection to database "postgres" failed: could not connect to server: Connection refused
    2019-10-23T17:09:43.069534000Z Is the server running on host "localhost" (127.0.0.1) and accepting
    2019-10-23T17:09:43.069538000Z TCP/IP connections on port 5432?
    2019-10-23T17:09:43.069540800Z could not connect to server: Cannot assign requested address
    2019-10-23T17:09:43.069543700Z Is the server running on host "localhost" (::1) and accepting
    2019-10-23T17:09:43.069546600Z TCP/IP connections on port 5432?
    2019-10-23T17:09:45.514371200Z 2019-10-23 17:09:45.514 UTC [1] LOG: starting PostgreSQL 12.0 (Debian 12.0-2.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
    2019-10-23T17:09:45.514563000Z 2019-10-23 17:09:45.514 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
    2019-10-23T17:09:45.514629800Z 2019-10-23 17:09:45.514 UTC [1] LOG: listening on IPv6 address "::", port 5432
    2019-10-23T17:09:45.522068300Z 2019-10-23 17:09:45.521 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
    2019-10-23T17:09:45.547131800Z 2019-10-23 17:09:45.547 UTC [23] LOG: database system was interrupted; last known up at 2019-10-23 17:09:42 UTC
    2019-10-23T17:09:45.977904500Z 2019-10-23 17:09:45.977 UTC [23] LOG: database system was not properly shut down; automatic recovery in progress
    2019-10-23T17:09:45.980523000Z 2019-10-23 17:09:45.980 UTC [23] LOG: invalid record length at 0/16453B0: wanted 24, got 0
    2019-10-23T17:09:45.980590000Z 2019-10-23 17:09:45.980 UTC [23] LOG: redo is not required
    2019-10-23T17:09:45.994889300Z 2019-10-23 17:09:45.994 UTC [1] LOG: database system is ready to accept connections

    docker-compose.yml:
    version: '3.4'

    networks:
    dev01:
    driver: bridge

    services:
    webapplication2:
    image: ${DOCKER_REGISTRY-}webapplication2
    depends_on:
    - "pgdev01"
    build:
    context: .
    dockerfile: WebApplication2/Dockerfile
    networks:
    - dev01
    pgdev01:
    image: postgres
    restart: always
    volumes:
    - db_volume:/var/lib/postgresql/data
    - ./dbscripts/:/docker-entrypoint-initdb.d/
    networks:
    - dev01
    volumes:
    db_volume:

    docker-compose.override.yml:
    version: '3.4'

    services:
    webapplication2:
    environment:
    - ASPNETCORE_ENVIRONMENT=Development
    - ASPNETCORE_URLS=https://+:443;http://+:80
    - ASPNETCORE_HTTPS_PORT=44361
    ports:
    - "61225:80"
    - "44361:443"
    volumes:
    - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
    - ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
    pgdev01:
    ports:
    - "5434:5432"
    environment:
    POSTGRES_PASSWORD: "redacted"

    最佳答案

    您遇到此问题是因为您在-h localhost文件中包含了init-db.sh。如果删除它,一切都会正常。

    发生这种情况是因为在docker-entrypoint.sh图像提供的默认postgres文件中将是empty out listen_addresses during the initialization phase。因此,它不会监听localhost

    披露:我为Enterprisedb (EDB)工作

    关于postgresql - 为什么docker-entrypoint-initdb.d中的脚本在数据库开始监听导致pg_restore失败的连接之前运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58528091/

    35 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com