Ни один из существующих локальных кластеров не подходит при использовании pg_dump в докере - PullRequest
0 голосов
/ 07 ноября 2019

В моем проекте Docker с Postgres 9.6 мне нужно добавить поддержку для загрузки больших дампов SQL. Я добавил pg_dump, добавив в мою строку файла web / Dockerfile.yml:

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

Что я пропустил?

1 Ответ

1 голос
/ 10 ноября 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...