Файл docker-compose для развертывания N8N

Обновлено и опубликовано Опубликовано:

Рассмотрим простой пример развертывания своего сервера N8N через docker-compose.

Пример файла docker-compose

Создадим каталог для хранения файлов проекта и перейдем в него:

mkdir -p /opt/n8n && cd /opt/n8n

Создаем файл docker-compose:

vi docker-compose.yml

---

services:

  n8n-db:
    image: postgres:${PG_VER}
    hostname: n8n-db
    container_name: n8n-db
    restart: unless-stopped
    environment:
      TZ: ${TZONE}
      POSTGRES_USER: ${PG_USER}
      POSTGRES_PASSWORD: ${PG_PASS}
      POSTGRES_DB: ${PG_DBNAME}
    volumes:
      - ./postgresql/data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${PG_USER} -d ${PG_DBNAME}"]
      interval: 5s
      timeout: 5s
      retries: 5

  n8n:
    image: n8nio/n8n:${N8N_VER}
    container_name: n8n
    hostname: n8n
    restart: unless-stopped
    environment:
      TZ: ${TZONE}
      GENERIC_TIMEZONE: ${TZONE}
      DB_TYPE: postgresdb
      DB_POSTGRESDB_HOST: n8n-db
      DB_POSTGRESDB_PORT: 5432
      DB_POSTGRESDB_DATABASE: ${PG_DBNAME}
      DB_POSTGRESDB_USER: ${PG_USER}
      DB_POSTGRESDB_PASSWORD: ${PG_PASS}
      N8N_HOST: ${N8N_URL}
      N8N_ENCRYPTION_KEY: ${N8N_SECRET}
      N8N_SECURE_COOKIE: "true"
      WEBHOOK_URL: https://${N8N_URL}/
    volumes:
      - ./n8n/data:/home/node/.n8n
    depends_on:
      n8n-db:
        condition: service_healthy
        
  caddy:
    image: caddy:${CD_VER}
    container_name: caddy
    hostname: caddy
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./caddy/Caddyfile:/etc/caddy/Caddyfile
      - ./caddy/data:/data
    environment:
      TZ: ${TZONE}
      N8N_URL: ${N8N_URL}
    healthcheck:
      test: ["CMD-SHELL", "curl -fI http://127.0.0.1:2019/metrics"]
      interval: 30s
      timeout: 5s
      retries: 3
      start_period: 10s

Создаем конфигурационный файл для docker compose:

vi .env

PG_VER=16-alpine
PG_USER=n8n
PG_PASS=n8n_password
PG_DBNAME=n8n

TZONE=Europe/Moscow

CD_VER=2.11-alpine

N8N_VER=2.23.1
N8N_URL=n8n.dmosk.ru

* меняем значения на свои:

  • PG_VER — версия postgresql. В данном примере берется образ для 16 версии на основе Alpine.
  • PG_USER — имя пользователя для подключения к базе данных.
  • PG_PASS — пароль для подключения к базе данных.
  • PG_DBNAME — имя базы данных.
  • TZONE — временная зона.
  • CD_VER — версия Caddy. Актуальную версию можно подобрать на Docker Hub.
  • N8N_VER — версия N8N. Нужную версию выбираем на Docker Hub.
  • N8N_URL — доменное имя, по которому будем подключаться к веб-интерфейсу n8n.

И сгенерируем секретный ключ для n8n:

echo "N8N_SECRET=$(openssl rand -hex 24)" >> .env

Файл docker-compose готов.

Настройка приложения и запуск

Создаем рабочий каталог для веб-сервера caddy:

mkdir caddy

Создаем конфигурационный файл:

vi caddy/Caddyfile

{$N8N_URL} {
    reverse_proxy n8n:5678
}

Готовим каталог для данных n8n:

mkdir -p n8n/data

chown -R 1000:1000 n8n

* где 1000 — идентификатор пользователя, под которым работает n8n.

Запускаем контейнеры:

docker-compose up -d

В браузере вводим адрес домена, в нашем примере — https://n8n.dmosk.ru — откроется страница создания первого пользователя. Вводим email, имя и пароль. Адрес электронной почты будет логином для входа.

N8N готов к работе.

# DevOps # Linux # Контейнеризация # Серверы # Управление
Дмитрий Моск — частный мастер
Был ли вам полезен этот скрипт?

Да            Нет

Дмитрий Моск
— IT-специалист.
Настройка серверов, услуги DevOps.

Заказать настройку контейнеризации

Нужна бесплатная консультация?

Скрипты

Пример файла docker-compose для запуска Garage S3

Развертывание N8N в среде контейнеров с помощью docker-compose

Сценарий в docker-compose для запуска Rocket.Chat

Запуск Nextcloud с помощью docker-compose со всем необходимым

Пример скрипта на Python для копирования пакетов NPM с одного репозитория Nexus в другой

Развертывание caddy прокси в docker с помощью docker-compose

Файл docker-compose для развертывания Nginx Proxy Manager

Другие скрипты

Все статьи

Нужен скрипт? Опишите его назначение:





Реклама