ecos-microservices-postgresql-app

Назначение

Образ, собранный на официальном образе postgresql 12.x с добавлением скрипта инициализации баз данных и пользователей

Теги:

nexus.citeck.ru/postrgesql:msvc-latest- собран на базовом образе postgres:12, используется в композ проектах, файлы конфигурации размещаются в образе

nexus.citeck.ru/postrgesql:12 - базовый образ postgres:12, размещен в нашем docker registry, используется в k8s объектах, файлы конфигурации и скрипт развертывания конфигурируются через configmap

Базовые образы

  • postgres:12

Шаблон сервиса docker-compose:

ecos-microservices-postgresql-app:
        container_name: ecos-microservices-postgresql-app
        hostname: ecos-microservices-postgresql-app
        restart: unless-stopped
        image: nexus.citeck.ru/postgresql:msvc-latest
        stop_grace_period: 1m
        command: ["postgres", "-c", "config_file=/var/lib/postgresql/conf/postgresql.conf"]
        expose:
        - 5432/tcp
        env_file:
        - ./env_dir/ecos-microservices-postgresql-app.env
        volumes:
        - /opt/ecos-microservices-postgresql:/var/lib/postgresql/data
        networks:
        - app_network

Используемые переменные:

  • ECOS_APPS_APP_DATASOURCE_DATABASE - база данных для мрк ecos-apps-app

  • ECOS_APPS_APP_DATASOURCE_USERNAME - пользователь для мрк ecos-apps-app

  • ECOS_APPS_APP_DATASOURCE_PASSWORD - пароль для мрк ecos-apps-app

  • ECOS_GATEWAY_APP_DATASOURCE_DATABASE - база данных для мрк ecos-gateway-app

  • ECOS_GATEWAY_APP_DATASOURCE_USERNAME - пользователь для мрк ecos-gateway-app

  • ECOS_GATEWAY_APP_DATASOURCE_PASSWORD - пароль для мрк ecos-gateway-app

  • ECOS_UISERV_APP_DATASOURCE_DATABASE - база данных для мрк ecos-uiserv-app

  • ECOS_UISERV_APP_DATASOURCE_USERNAME - пользователь для мрк ecos-uiserv-app

  • ECOS_UISERV_APP_DATASOURCE_PASSWORD - пароль для мрк ecos-uiserv-app

  • ECOS_INTEGRATIONS_APP_DATASOURCE_DATABASE - база данных для мрк ecos-integrations-app

  • ECOS_INTEGRATIONS_APP_DATASOURCE_USERNAME - пользователь для мрк ecos-integrations-app

  • ECOS_INTEGRATIONS_APP_DATASOURCE_PASSWORD - пароль для мрк ecos-integrations-app

  • ECOS_MODEL_APP_DATASOURCE_DATABASE - база данных для мрк ecos-model-app

  • ECOS_MODEL_APP_DATASOURCE_USERNAME - пользователь для мрк ecos-model-app

  • ECOS_MODEL_APP_DATASOURCE_PASSWORD - пароль для мрк ecos-model-app

  • ECOS_NOTIFICATIONS_APP_DATASOURCE_DATABASE - база данных для мрк ecos-notifications-app

  • ECOS_NOTIFICATIONS_APP_DATASOURCE_USERNAME - пользователь для мрк ecos-notifications-app

  • ECOS_NOTIFICATIONS_APP_DATASOURCE_PASSWORD - пароль для мрк ecos-notifications-app

  • ECOS_HISTORY_APP_DATASOURCE_DATABASE - база данных для мрк ecos-history-app

  • ECOS_HISTORY_APP_DATASOURCE_USERNAME - пользователь для мрк ecos-history-app

  • ECOS_HISTORY_APP_DATASOURCE_PASSWORD - пароль для мрк ecos-history-app

  • POSTGRES_PASSWORD - обязательный параметр за исключением POSTGRES_HOST_AUTH_METHOD=trust, пароль привилегированного пользователя postgres

  • POSTGRES_USER - переопределение дефолтного пользователя postgres

  • POSTGRES_DB - переопределение дефолтной базы данных

  • POSTGRES_INITDB_ARGS - дополнительные параметры для инициализации кластера

  • POSTGRES_INITDB_WALDIR - переопределение дефолтной директории хранения логов транзакций

  • POSTGRES_HOST_AUTH_METHOD - метод аутентификации host подключений для всех бд, пользователей и адресов в pg_hba.conf. Дефолтное значение md5

  • PGDATA - переопределение дефолтной директории хранения фалов инициируемого кластера

Известные проблемы:

  • Не реализована возможность конфигурирования датасорсов (добавление/удаление баз данных, пользователей) после первичного развертывания

  • Отсутствие конфигурации используемых схем

  • Конфигурирование postgresql только через пересборку образа с внесением изменений в конфигурационные файлы

Типовой вывод принятых настроек в лог контейнера:

The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.utf8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /var/lib/postgresql/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... UTC
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... sh: locale: not found
2020-04-28 08:59:20.042 UTC [30] WARNING:  no usable system locales were found
ok
syncing data to disk ... initdb: warning: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.
ok


Success. You can now start the database server using:

        pg_ctl -D /var/lib/postgresql/data -l logfile start

waiting for server to start....2020-04-28 08:59:20.503 UTC [35] LOG:  starting PostgreSQL 12.2 on x86_64-pc-linux-musl, compiled by gcc (Alpine 9.2.0) 9.2.0, 64-bit
2020-04-28 08:59:20.506 UTC [35] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2020-04-28 08:59:20.555 UTC [36] LOG:  database system was shut down at 2020-04-28 08:59:20 UTC
2020-04-28 08:59:20.563 UTC [35] LOG:  database system is ready to accept connections
done
server started

/usr/local/bin/docker-entrypoint.sh: sourcing /docker-entrypoint-initdb.d/init-db.sh
CREATE ROLE
CREATE DATABASE
GRANT
CREATE ROLE
CREATE DATABASE
GRANT
CREATE ROLE
CREATE DATABASE
GRANT
CREATE ROLE
CREATE DATABASE
GRANT
CREATE ROLE
CREATE DATABASE
GRANT
CREATE ROLE
CREATE DATABASE
GRANT
CREATE ROLE
CREATE DATABASE
GRANT

waiting for server to shut down....2020-04-28 08:59:21.371 UTC [35] LOG:  received fast shutdown request
2020-04-28 08:59:21.374 UTC [35] LOG:  aborting any active transactions
2020-04-28 08:59:21.376 UTC [35] LOG:  background worker "logical replication launcher" (PID 42) exited with exit code 1
2020-04-28 08:59:21.376 UTC [37] LOG:  shutting down
2020-04-28 08:59:21.409 UTC [35] LOG:  database system is shut down
done
server stopped

PostgreSQL init process complete; ready for start up.

2020-04-28 08:59:21.494 UTC [1] LOG:  starting PostgreSQL 12.2 on x86_64-pc-linux-musl, compiled by gcc (Alpine 9.2.0) 9.2.0, 64-bit
2020-04-28 08:59:21.494 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2020-04-28 08:59:21.494 UTC [1] LOG:  listening on IPv6 address "::", port 5432
2020-04-28 08:59:21.502 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2020-04-28 08:59:21.538 UTC [46] LOG:  database system was shut down at 2020-04-28 08:59:21 UTC
2020-04-28 08:59:21.542 UTC [1] LOG:  database system is ready to accept connections