Рубрики
Software

Odoo в контейнере. Как работать с PostgreSQL в контейнере?

Odoo использует для работы PostgreSQL. Если вы запускаете Odoo в контейнере, рано или поздно прийдется подключиться к базе данных напрямую. Как это сделать, показываю на примере:

services:
  db:
    image: postgres:11.6
    environment:
      - POSTGRES_PASSWORD=odoo
      - POSTGRES_USER=odoo
      - POSTGRES_DB=postgres
    restart: always
    volumes:
        - ./postgresql:/var/lib/postgresql/data

Первое — смотрим как называется контейнер с PostgreSQL. В нашем примере он называется просто db. В папке, в которой находиться docker-compose.yml выполняем команду:

docker-compose exec db bash

docker-compose exec — это эквивалент docker exec. С помощью этой подкоманды можно запускать произвольные команды сервисах.

Справка: https://docs.docker.com/compose/reference/exec/

В нашем случае, мы вызываем командную строку, через которую будем выполнять различные команды внутри контейнера.

Выполняем следующую команду:

psql postgres odoo

Все, мы подключились в базу данных и теперь можем выполнять команды и запросы напрямую.

  • psql — это терминальный клиент для работы с PostgreSQL.
  • postgres — название базы данных. В нашем случае, это POSTGRES_DB из docker-compose.yml
  • odoo — пользователь, от имени которого подключаемся. В нашем случае, это POSTGRES_USER из docker-compose.yml

В некоторых случаях система может запросить пароль (POSTGRES_PASSWORD). Это зависит от типа подключения, но в нашем случае он не требуется.

Первым делом, нужно посмотреть какие базы данных у нас существуют. Для этого выполняем команду \l или \list. В таблице увидим все базы, которые есть в контейнере.

Теперь переходим непосредственно в базу данных, которую использует Odoo. Для этого, выполняем команду:

\c odoo

В нашем случае odoo — то название базы данных. Именно оно отображается в /web/database/manager.

Несколько команд в PostgreSQL

  • \? — справка
  • \dt — список всех таблиц
  • \conninfo — информация о текущем соединении
  • \q — выход из psql