在Docker中使用pg_dump,没有现有的本地集群是合适的错误

在我的带有postgres 9.6的docker项目中,我需要添加对上传大型sql转储的支持。 我通过在web / Dockerfile.yml文件行中添加pg_dump:

postgresql-client-common  \

因为它包含pg_dump。

构建应用后,我输入bash和

# uname -a
Linux ff5146f21dbd 4.15.0-66-generic #75-Ubuntu SMP Tue Oct 1 05:24:09 UTC 2019 x86_64 GNU/Linux
root@ff5146f21dbd:/var/www/lprods_docker_root# pg_dump
Warning: No existing local cluster is suitable as a default target. Please see man pg_wrapper(1) how to specify one.
Error: You must install at least one postgresql-client-<version> package
root@ff5146f21dbd:/var/www/lprods_docker_root# locate -i pg_dump

最后一个命令什么也不输出

web/Dockerfile.yml contains :
  FROM php:7.1-apache

    RUN apt-get update && \
    apt-get install -y \
    python \
    libfreetype6-dev \
    libwebp-dev \
    libjpeg62-turbo-dev \
    libpng-dev \
    libzip-dev \
    nano \
    git-core \
    curl \
    build-essential \
    openssl \
    libssl-dev \
    libgmp-dev \
    libldap2-dev \
    libpq-dev \
    netcat \
    postgresql-client-common  \
    locate \
    && git clone https://github.com/nodejs/node.git \
    && cd node \
    && git checkout v12.0.0 \
    && ./configure \
    && make \
    && make install

    RUN npm install cross-env

    RUN  docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-webp-dir=/usr/include/  --with-jpeg-dir=/usr/include/


    RUN  docker-php-ext-install gd pgsql pdo_pgsql zip gmp bcmath pcntl ldap sysvmsg exif \
    && a2enmod rewrite

    COPY virtualhost.conf /etc/apache2/sites-enabled/000-default.conf

和docker-compose.yml:

version: '3'

services:

    web:
        build:
            context: ./web           # directory of web/Dockerfile.yml
            dockerfile: Dockerfile.yml

        environment:
            - APACHE_RUN_USER=#1000
            # - APACHE_RUN_USER=www-data

        container_name: lprods_web

        volumes:
            - ${APP_PATH_HOST}:${APP_pth_CONTAINER}
        ports:
            - "8086:80"
        working_dir: ${APP_pth_CONTAINER}



    db:
        image: postgres:9.6.10-alpine
        container_name: lprods_db
        ports:
            - '5433:5432'
        restart: always
        environment: 
            POSTGRES_USER: 'postgres'
            POSTGRES_PASSWORD: '1'
            POSTGRES_DB: 'wprods'
        volumes:
            - ./init:/docker-entrypoint-initdb.d/


    phppgadmin:
        image: dockage/phppgadmin:latest
        environment:
            - PHP_PG_ADMIN_SERVER_HOST=db
            - PHP_PG_ADMIN_SERVER_PORT=5432
            - PHP_PG_ADMIN_SERVER_DEFAULT_DB=postgres
        container_name: lprods_phppgadmin

        restart: always
        ports:
            - "8087:80"
            - "443:443"
        links:
            - db


    composer:
        image: composer:1.6
        container_name: lprods_composer
        volumes:
            - ${APP_PATH_HOST}:${APP_pth_CONTAINER}
        working_dir: ${APP_pth_CONTAINER}
        command: composer install  --ignore-platform-reqs

为什么出错以及如何解决?

已修改:

我有

# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

但是检查版本时出现错误:

# /usr/bin/pg_dump -v
Warning: No existing local cluster is suitable as a default target. Please see man pg_wrapper(1) how to specify one.
Error: You must install at least one postgresql-client-<version> package

我在运行psql命令时遇到了同样的错误(实际上我需要它):

 /usr/bin/psql  -h localhost  -d wprods -U  postgres  -W -f "/var/www/lprods_docker_root/wprods_2017_10_23.sql" 
Error: You must install at least one postgresql-client-<version> package

我的配置出了什么问题?

已修改2:

在我的docker-compose.yml中,我有:

db:
    image: postgres:9.6.10-alpine
    ...
    volumes:
        - ./init:/docker-entrypoint-initdb.d/

是吗?

命令:

locate -i postgresql.conf

什么都不输出

find /usr -name "postgresql.conf"

也什么也不输出。

我也有:

# ps -ef | grep postgres
root        28    21  0 08:40 pts/0    00:00:00 grep postgres

我想念什么?

villsonhua 回答:在Docker中使用pg_dump,没有现有的本地集群是合适的错误

postgresql-client-common是Ubuntu特定的脚本包,允许用户使用多个版本的Postgres(或多个数据库集群)。它提供了一些脚本和符号链接,这些脚本和符号链接实质上覆盖了“真实的” postgres实用程序(例如pg_dump)的功能:

root@foo:/usr/bin# ls -al | grep pg_dump
lrwxrwxrwx 1 root root        37 Feb  8  2018 pg_dump -> ../share/postgresql-common/pg_wrapper
lrwxrwxrwx 1 root root        37 Feb  8  2018 pg_dumpall -> ../share/postgresql-common/pg_wrapper

您可能还需要安装postgresql-client-10才能使pg_dump正常工作。

还请注意,您仅安装了客户端工具。如果您需要启动并运行功能齐全的PostgreSQL数据库,我相信您还需要安装postgresql-10软件包

本文链接:https://www.f2er.com/3143424.html

大家都在问