Есть два способа установить PostgreSQL в вашей системе.

  1. Установите PostgreSQL прямо в вашу систему (в зависимости от того, какая у вас ОС).
  2. Сначала установите Docker, а затем установите PostgreSQL поверх Docker. (Мы используем этот подход, потому что установка докера зависит от ОС, но поверх докера, когда мы устанавливаем любой образ — например, PostgreSQL здесь — тогда он не зависит от ОС, что означает, что этап установки PostgreSQL поверх докера и его использование останутся независимыми от ОПЕРАЦИОННЫЕ СИСТЕМЫ)

Шаги

Установите Docker в вашей системе.

Обратитесь к официальному сайту в зависимости от вашей ОС.

Установите образ PostgreSQL поверх докера

$ docker run --name my-own-postgres -e POSTGRES_PASSWORD=my_password -p 5432:5432 -d postgres
  • Флаг --name назначает конкретное имя контейнеру, который мы запустили.
  • Флаг -e устанавливает переменную среды внутри контейнера POSTGRES_PASSWORD. Эта переменная используется образом PostgreSQL для назначения корневого пароля Postgres.
  • Флаг -dзапустит контейнер в фоновом режиме в «отключенном» режиме. Это означает, что ваш терминал освобождается для следующих команд и не будет отображать запущенные скрипты для запуска PostgreSQL.
  • Флаг -pуказывает на соответствие между портом хоста и портом контейнера соответственно. Первый 5432относится к хосту, а следующий 5432 — к контейнеру. Все запросы, отправленные на порт 5432 на локальном хосте, будут перенаправлены на тот же порт внутри контейнера (где будет прослушиваться PostgreSQL).
  • Вы увидите что-то подобное по команде docker ps
$ docker ps
CONTAINER ID   IMAGE      COMMAND                  CREATED         STATUS         PORTS                                       NAMES
ef2331c777c1   postgres   "docker-entrypoint.s…"   3 seconds ago   Up 2 seconds   0.0.0.0:5432->5432/tcp, :::5432->5432/tcp   my-own-postgres
  • Чтобы убедиться, что установка PostgreSQL установлена ​​правильно, перейдите внутрь контейнера и проверьте пользователя postgres (пользователь по умолчанию, созданный при установке).
  • Переместить внутрь контейнера
$ docker exec -it my-own-postgres bash
root@ef2331c777c1:/# 
  • Войдите в командную строку psql разными способами, с паролем и без него (\q для выхода из оболочки и exit для выхода из контейнера)
---------------------Without hostname and password------------------root@ef2331c777c1:/# psql -U postgres
psql (14.4 (Debian 14.4-1.pgdg110+1))
Type "help" for help.
postgres=# \q
----------------------------With Hostname---------------------------
root@ef2331c777c1:/# psql -U postgres -h localhost
psql (14.4 (Debian 14.4-1.pgdg110+1))
Type "help" for help.
postgres=# \q
---------------------------With Password----------------------------
root@ef2331c777c1:/# psql -U postgres -h localhost -W
Password: 
psql (14.4 (Debian 14.4-1.pgdg110+1))
Type "help" for help.
postgres=# 
----------------------------List Databases--------------------------
postgres=# \l
List of databases
   Name    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges   
-----------+----------+----------+------------+------------+-----------------------
 postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 | 
 template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
(3 rows)
postgres=#

Установите PgAdmin (для простого доступа к PostgreSQL — необязательно)

  • Настройте PgAdmin, используя Docker-образ PgAdmin. Обратите внимание, что здесь порт машины — 5050, поэтому, когда мы получим доступ к консоли PgAdmin в браузере, нам нужно посетить URL-адрес, например http://localhost:5050/login. Также запомните логин и пароль, которые будут использоваться для входа. в пгадмин.
$ docker run --name pgadmin -e "[email protected]" -e "PGADMIN_DEFAULT_PASSWORD=admin" -p 5050:80 -d dpage/pgadmin4
  • Чтобы подключиться к базе данных PostgreSQL, убедитесь, что предыдущий контейнер PostgreSQL запущен, и получите его IP-адрес как
$ docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
/pgadmin - 172.17.0.3
/my-own-postgres - 172.17.0.2
  • Поместите IP-адрес PostgresSQL (172.17.0.2) в настройку подключения PgAdmin. Нажмите Сервер › Зарегистрировать › Сервер и введите данные ниже.

Имя хоста: IP-адрес контейнера PostgreSQL.

Порт: пост-машина PostgresSQL (не порт контейнера).

Имя БД: по умолчанию postgres БД создается при запуске.

Имя пользователя: имя пользователя, которое мы выбираем при запуске контейнера PostgresSQL (не PgAdmin).

Пароль: пароль базы данных PostgreSQL.

После подключения вы можете увидеть что-то вроде этого.

Мы также можем установить PgAdmin на локальный компьютер и подключить его к Docker PostgreSQL, но тогда имя хоста PgAdmin может быть localhost.

Ждать! Есть кое-что еще. Что, если мне нужна такая же оболочка PSQL здесь, в PgAdmin?

Этот способ установки PgAdmin отлично подходит для всех операций, за исключением одного случая, когда мы хотим получить доступ к оболочке PSQL в PgAdmin, подобно этому.

Я пытался, но не смог получить это в PgAdmin докера. Но мы можем легко получить это в PgAdmin4, который мы устанавливаем непосредственно в ОС. Но есть одна загвоздка. Эта прямая установка будет ссылаться на двоичные файлы, такие как psql и psql_dump, которые поставляются с установкой Postgres напрямую поверх ОС. Я думаю, что это причина, по которой PgAdmin, работающий в экземпляре докера, не может показать опцию оболочки PSQL, потому что один процесс контейнера (контейнер PgAdmin) не может ссылаться на двоичные файлы Postgres, присутствующие в другом контейнере (контейнере Postgres).

Для этого потребуется установка Postgres и PgAdmin поверх ОС, и как только мы сможем получить доступ к PgAdmin, мы установим соединение с обеими базами данных (ОС Postgres и Docker Postgres).

  • Установите Postgres в ОС Linux (Ubuntu) как (первая команда занимает две строки, но это одна)
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get -y install postgresql
  • Войдите в оболочку PSQL, как показано ниже.
$ sudo -u postgres psql
[sudo] password for ubuntu_user: 
psql (14.0 (Ubuntu 14.0-1.pgdg21.04+1))
Type "help" for help.

postgres=#
  • После установки Postgres в ОС Linux определите его двоичное расположение и сохраните его в безопасности, поскольку нам нужно указать путь к этой двоичной папке в PgAdmin, чтобы получить доступ к той же оболочке PSQL.
$ which psql
/usr/bin/psql
  • Кроме того, убедитесь, что процесс запущен и запущен. (В случае, если Docker Postgres работает на порту 5432, ОС Postgres автоматически выберет порт 5433)
$ sudo systemctl status postgresql.service
● postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Sun 2022-09-04 16:22:28 IST; 4h 6min ago
   Main PID: 10856 (code=exited, status=0/SUCCESS)
        CPU: 3ms
  • Если нет, то начните использовать приведенную ниже команду
$ sudo systemctl start postgresql.service
  • Установите PgAdmin сейчас
# Install the public key for the repository (if not done previously):
$ sudo curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add

# Create the repository configuration file:
$ sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'

# Install for both desktop and web modes:
$ sudo apt install pgadmin4
  • Откройте PgAdmin4 в ОС и перейдите в это место: Файл › Предпочтения › Пути › Двоичные пути и укажите указанный ниже путь для двоичного расположения.

  • Теперь подключите ваш PgAdmin как к Postgres в докере, так и к тому, что находится в ОС.

  • Теперь мы можем получить доступ к оболочке PSQL, выбрав любую из баз данных, щелкнув правой кнопкой мыши и выбрав PSQL Tool.