Розгортання системи Odoo за допомогою Docker

Як встановити Odoo для робочого середовища за допомогою Docker

Підготовка сервера

Розглянемо процес підготовки сервера на Ubuntu 22.04 Server для розгортання робочого середовища системи Odoo версії 16.0. Всі налаштування ми проводимо на чистому, щойно створеному сервері.

Налаштування SSH доступу

Виконайте команду у терміналі для встановлення пакета openssh:

sudo apt-get install openssh-server

Далі внесіть зміни у налаштування SSH з метою підвищення безпеки:

sudo nano /etc/ssh/sshd_config
  • змінюємо номер порту зі стандартного 22 на інший у діапазоні від 1000 та вище:

Port 22
  • забороняємо підключення до ssh-сервера використовуючи логін суперкористувача:

PermitRootLogin no
  • забороняємо підключення до ssh-сервера використовуючи паролі (буде дозволено лише по ключах), для цього розкоментуйте цей рядок:

PasswordAuthentication no
  • дозволяємо підключення по ssh лише певним користувачам (додати рядок у самий низ файлу):

AllowUsers user1 user2
  • дозволяємо SSH підключення тільки з певних IP адрес:

AllowUsers = *@123.123.123.123
# Allow access only for IP 123.123.123.123

Генеруємо пару SSH ключів на локальній машині:

ssh-keygen -t rsa -b 4096

Додаємо відкриті ключі для доступу без вводу пароля:

  • На локальній машині, копіюємо ключ у буфер обміну

cat ~/.ssh/id_rsa.pub
odoo ssh public key
  • На сервері, вставляємо з буфера обміну та зберігаємо файл

nano ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys
ssh authorized keys

Після внесення змін перезавантажуємо сервіс SSH командою

sudo /etc/init.d/ssh reload

Відкриваємо новий термінал (не закриваючи поточний) та пробуємо під'єднатися до сервера по SSH. Якщо під'єднатися не вдалося, перевіряємо все ще раз і вносимо необхідні зміни через перший термінал.

Встановлення та налаштування Docker

Виконайте наступні команди для отримання оновлень системи:

sudo apt-get update
sudo apt-get upgrade -y

Наступні команди встановлять docker у вашій системі:

sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
UBUNTU_RLS=$(lsb_release -rs)
if [[ ${UBUNTU_RLS:0:2} -le 21 ]] ; then
   curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
   sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
else
   curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
   echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
fi
sudo apt update
apt-cache policy docker-ce
sudo apt install -y docker-ce docker-compose

Перевіряємо статус встановлення docker:

sudo systemctl status docker

Додаємо поточного користувача у групу docker:

sudo usermod -aG docker $(whoami)

Створимо каталог для docker контейнерів Odoo:

sudo mkdir /opt/docker
sudo chown -R $(whoami): /opt/docker

Moving on now ... create a directory structure for a separate project and give it a name, for example, "test":

mkdir /opt/docker/test
mkdir /opt/docker/test/config
mkdir /opt/docker/test/addons
mkdir /opt/docker/test/addons/custom
mkdir /opt/docker/test/backups
mkdir /opt/docker/test/build
mkdir /opt/docker/test/logs
mkdir /opt/docker/test/geoip

Далі створимо конфігураційний файл для Odoo "odoo.conf":

nano /opt/docker/test/config/odoo.conf

Додамо наступний текст у файл:

[options]
admin_passwd = MASTER_PASS
xmlrpc_port = 8069
db_user = odoo
db_password = odoo
addons_path=
dbfilter = ^%d$
list_db = True
log_db_level = warning
log_handler = :INFO
log_level = debug_rpc
logfile = /mnt/logs/odoo-server.log
logrotate = False
limit_time_cpu = 120
limit_time_real = 180
limit_time_real_cron = 0
max_cron_threads = 2
proxy_mode = True
workers = 3

Генерація надійного майстер-пароля "MASTER_PASS" може бути виконана наступним чином:

python3 -c 'import base64, os; print(base64.b64encode(os.urandom(72)))'

Вставте згенерований пароль у конфігураційний файл у параметр admin_passwd.

Creating the "docker-compose" file

Тепер створимо конфігураційний файл "docker-compose.yml" командою:

nano /opt/docker/test/docker-compose.yml

Додамо наступний текст у файл:

version: "2"
services:
  web:
    build: ./build
    depends_on:
      - db
    restart: unless-stopped
    ports:
      - "127.0.0.1:18069:8069"
      - "127.0.0.1:18072:8072"
    volumes:
      - odoo-web-data:/var/lib/odoo
      - ./config:/etc/odoo
      - ./addons:/mnt/extra-addons
      - ./backups:/mnt/backups
      - ./logs:/mnt/logs
      - ./geoip:/usr/share/GeoIP/
    # command: -u all -d test
    networks:
      - test
  db:
    image: postgres:12
    restart: unless-stopped
    command: postgres -c "max_connections=300"
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_PASSWORD=odoo
      - POSTGRES_USER=odoo
      - PGDATA=/var/lib/postgresql/data/pgdata
    volumes:
      - odoo-db-data:/var/lib/postgresql/data/pgdata
    logging:
      options:
        max-size: 50m
    networks:
      - test
volumes:
  odoo-web-data:
  odoo-db-data:
networks:
   test:

Створення конфігураційного файлу "Dockerfile"

Спочатку перегляньте ідентифікатор вашого поточного користувача Linux, наступним чином:

sudo grep "^$(whoami):" /etc/passwd | cut -f 3 -d:

Аналогічним чином отримаємо ідентифікатор групи користувача:

sudo grep "^$(whoami):" /etc/passwd | cut -f 4 -d:

Додамо файл для створення Odoo контейнера:

nano /opt/docker/test/build/Dockerfile

Вставимо наступний текст у файл Dockerfile:

FROM odoo:16.0
USER root
RUN usermod -u 1000 odoo
RUN groupmod -g 1000 odoo
RUN mkdir /var/lib/odoo/.local
RUN chown -R 1000:1000 /var/lib/odoo
RUN pip3 install --upgrade pip
# Adding additional python libraries is as follows:
# Python dependency for installing the "auto_backup" module
RUN pip3 install paramiko
# After adding a new line, the container needs to be rebuilt with the command: docker-compose down && docker-compose up -d –-build
USER odoo

Спробуємо запустити контейнер:

cd /opt/docker/test
docker-compose up -d

Почнеться процес завантаження образів та створення контейнера для поточного проєкту. Після завершення цих процесів, docker контейнер буде запущено. Ви можете переглядати лог Odoo використовуючи наступну команду:

tail -f /opt/docker/test/logs/odoo-server.log

Якщо створення контейнера відбулося успішно, зупиніть контейнер командою:

docker-compose down

Налаштування NGINX та Certbot

Додавання сторонніх модулів

Створення бази даних

Налаштування резервного копіювання

в Odoo
92 23.08.2023
Розгортання системи Odoo за допомогою Docker
Юрій Разумовський

Підприємець, Odoo консультант, учасник спільноти Odoo Україна, член ассоціації OCA, офіційний партнер Odoo (Learning Partner).

Розгортання системи Odoo за допомогою Docker
Yurii Razumovskyi 23 серпня, 2023
Поділитися цією публікацією
Як приєднати Google Calendar до Odoo
Кроки для налаштування синхронізації Odoo з календарем Google