Перейти до вмісту
КонтактПоштаПанель клієнта

Хостинг і сервер

Docker і Docker Compose у Plesk — як запустити контейнер?

Коротка відповідь: у Plesk контейнери запускаються розширенням Docker: ви обираєте образ (наприклад, з Docker Hub), налаштовуєте змінні середовища, прокидання портів і томи, а потім виставляєте контейнер під доменом правилом Docker Proxy Rules із HTTPS-сертифікатом домену. Застосунки з кількох контейнерів описуєте файлом docker-compose.yml і запускаєте як стек (Stack). Важливо: у Plesk контейнерами керує адміністратор сервера, а контейнери та їхні томи не потрапляють до резервних копій Plesk.

Розширення Docker у Plesk

Розширення Docker додає в Plesk графічний інтерфейс для стандартного Docker Engine, встановленого на сервері. Воно дозволяє шукати й завантажувати образи, запускати контейнери, налаштовувати їхні параметри, переглядати логи та використання ресурсів, а також запускати стеки Docker Compose. Починаючи з Plesk Obsidian 18.0.80, розширення працює також на серверах із CloudLinux 8 і 9.

Три речі, які варто знати перед початком:

  • Керує адміністратор. Клієнти й реселери не мають у Plesk доступу до Docker, а в тарифних планах немає для нього окремого права.
  • Контейнери не підпадають під ліміти акаунту. На них не поширюються ліміти CPU і RAM підписки (наприклад, LVE в CloudLinux), тож ліміти потрібно встановлювати для кожного контейнера окремо.
  • Резервні копії Plesk їх не охоплюють. Дані в томах потрібно захищати власним завданням резервного копіювання.

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

  1. У меню Docker відкрийте Образи і знайдіть образ, наприклад nginx, redis або n8nio/n8n.
  2. Оберіть конкретну версію (тег), а не latest — тоді оновлення образу не змінить роботу застосунку без вашого відома.
  3. Натисніть Запустити. У налаштуваннях контейнера вкажіть:
    • Змінні середовища — конфігурацію застосунку (паролі, адреси баз даних);
    • Прокидання портів — вручну, із блокуванням доступу з інтернету (опис нижче);
    • Прокидання томів — каталоги для постійних даних;
    • Ліміт пам'яті;
    • Автоматичний запуск після перезавантаження системи.
  4. Запустіть контейнер і перевірте вкладку логів.

Порти та мережева безпека

При автоматичному прокиданні Docker публікує порт контейнера на всіх адресах сервера, тобто й в інтернеті. Такі порти можуть обходити правила фаєрвола, яким керує панель. Безпечніше:

  • вимкнути автоматичне прокидання і встановити порт вручну;
  • позначити опцію, яка блокує доступ до порту з інтернету (тоді порт слухає лише на 127.0.0.1);
  • надавати доступ до застосунку лише через домен і reverse proxy (наступний розділ).

Бази даних, Redis та адміністративні панелі не повинні мати публічного порту.

Домен, reverse proxy і HTTPS

Щоб застосунок із контейнера був доступний за адресою https://app.twojafirma.pl:

  1. створіть домен або субдомен і випустіть для нього сертифікат Let's Encrypt;
  2. у налаштуваннях домену відкрийте Docker Proxy Rules і додайте правило: URL-адреса (наприклад, /), контейнер і його порт;
  3. Plesk додасть до конфігурації nginx домену перенаправлення proxy_pass на порт контейнера — HTTPS обробляє домен, а контейнер може працювати за звичайним HTTP.

Правило proxy вимагає ручного прокидання порту.

Томи і постійні дані

Усе, що контейнер записує у своїй файловій системі, зникає при його пересозданні (наприклад, після оновлення образу). Дані, які мають зберегтися, — файли бази даних, завантажені файли, конфігурацію — записуйте в томах, тобто каталогах сервера, прокинутих у контейнер. Добре тримати їх в одному каталозі, наприклад /var/www/vhosts/twojafirma.pl/docker/app/, поза публічним каталогом сайту. Контейнер може записувати файли з іншим власником (UID), ніж користувач підписки, — тому не прокидайте в контейнер каталог httpdocs.

Docker Compose: приклад стека

Стек (Stack) у Plesk — це файл docker-compose.yml, вставлений у редакторі, завантажений або вказаний із каталогу домену. Приклад застосунку з базою PostgreSQL — із закріпленими версіями, лімітами та портом, доступним лише локально:

services:
  app:
    image: ghcr.io/twoja-firma/aplikacja:1.4.2
    restart: unless-stopped
    environment:
      DATABASE_URL: postgres://app:${DB_PASSWORD}@db:5432/app
      NODE_ENV: production
    ports:
      - "127.0.0.1:8080:3000"     # tylko lokalnie; na zewnątrz przez Docker Proxy Rules
    depends_on:
      - db
    mem_limit: 512m
    cpus: 0.5
    pids_limit: 256
    security_opt:
      - no-new-privileges:true
    cap_drop:
      - ALL

  db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_DB: app
      POSTGRES_USER: app
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes:
      - ./data/postgres:/var/lib/postgresql/data
    mem_limit: 512m
    cpus: 0.5
    # bez sekcji ports: baza jest dostępna tylko dla kontenerów stosu

Паролі тримайте у файлі .env поруч із файлом Compose (поза репозиторієм), а не прописаними в docker-compose.yml. Стек можна запустити (up, зокрема із завантаженням нових образів), зупинити (stop) або видалити (down).

Резервні копії томів

Резервна копія Plesk не охоплює контейнери, образи чи томи, і навіть конфігурацію прокидань. Мінімальний набір захисту:

  • файл docker-compose.yml і опис конфігурації в репозиторії;
  • регулярний дамп бази даних із контейнера, збережений у каталозі, охопленому резервною копією підписки:
docker compose exec -T db pg_dump -U app app | gzip > backup/app-$(date +%F).sql.gz
  • архів каталогу тому з файлами (наприклад, tar), виконаний при зупиненому застосунку або за допомогою механізму узгодженості конкретного застосунку;
  • тест відновлення — копія, яку ніхто не відновлював, є лише сподіванням.

Ліміти ресурсів, перезапуск і логи

  • Ліміти: у панелі можна встановити ліміт пам'яті; CPU, кількість процесів та інші обмеження зручніше описати у файлі Compose (mem_limit, cpus, pids_limit).
  • Перезапуск: політика restart: unless-stopped піднімає контейнер після збою та після перезавантаження сервера; у панелі є також опція автоматичного запуску.
  • Логи: перегляд у деталях контейнера. Розмір логів варто обмежити, щоб вони не заповнили диск.
  • Оновлення: ви змінюєте тег образу, завантажуєте його і пересоздаєте контейнер. Дані з томів залишаються.

Найпоширеніші проблеми

  • Застосунок працює на порту, але не під доменом — немає правила Docker Proxy Rules або використано автоматичне прокидання порту замість ручного.
  • Після оновлення зникли дані — вони зберігалися в контейнері, а не в томі.
  • Контейнер перезапускається по колу — помилка конфігурації (відсутня змінна, неправильна адреса бази) або перевищено ліміт пам'яті; перевірте логи.
  • Порт бази даних видно з інтернету — публікація порту на всіх адресах; приберіть прокидання або обмежте його до 127.0.0.1.
  • Немає прав доступу до файлів у томі — контейнер працює як інший користувач (UID); встановіть власника каталогу відповідно до документації образу.

FAQ

Чи може клієнт хостингу сам запустити контейнер у Plesk?

У Plesk керування Docker доступне лише адміністратору сервера, тому на хостингу контейнер зазвичай запускає оператор.

Чи контейнери входять у резервну копію?

Ні. Копія Plesk не охоплює контейнери чи томи — дані потрібно захищати окремо.

Чи можу я використати готовий файл docker-compose.yml?

Так, як стек. Перед запуском закріпіть версії образів, приберіть публічні порти баз даних і додайте ліміти ресурсів.

Docker чи Node.js Toolkit?

Простий застосунок Node.js працює без контейнера, через Node.js Toolkit. Docker має сенс, коли застосунку потрібне власне середовище, кілька служб одночасно або готовий образ від виробника.

Технічна перевірка: 17.09.2026, документація Plesk Obsidian 18.0.80 і розширення Docker 2.x. На серверах DoSieci Docker ще не запускався. Пов'язані статті: застосунок Node.js у Plesk, PostgreSQL у Plesk. Пакети: NVMe Performance і Pro.