Przejdź do treści
PocztaPanel klienta

Hosting i serwer

Docker i Docker Compose w Plesk — jak uruchomić kontener?

Krótka odpowiedź: w Plesku kontenery uruchamia się rozszerzeniem Docker: wybierasz obraz (np. z Docker Hub), ustawiasz zmienne środowiskowe, mapowanie portów i wolumeny, a potem wystawiasz kontener pod domeną regułą Docker Proxy Rules z certyfikatem HTTPS domeny. Aplikacje z kilku kontenerów opisujesz plikiem docker-compose.yml i uruchamiasz jako stos (Stack). Ważne: w Plesku kontenerami zarządza administrator serwera, a kontenery i ich wolumeny nie trafiają do kopii zapasowych Pleska.

Rozszerzenie Docker w Plesku

Rozszerzenie Docker dodaje do Pleska graficzny interfejs dla standardowego Docker Engine zainstalowanego na serwerze. Pozwala wyszukiwać i pobierać obrazy, uruchamiać kontenery, ustawiać ich parametry, przeglądać logi i zużycie zasobów oraz uruchamiać stosy Docker Compose. Od Plesk Obsidian 18.0.80 rozszerzenie działa również na serwerach z CloudLinux 8 i 9.

Trzy rzeczy, które warto wiedzieć przed startem:

  • Zarządza administrator. Klienci i resellerzy nie mają w Plesku dostępu do Dockera, a w planach usług nie ma dla niego uprawnienia.
  • Kontenery nie podlegają limitom konta. Nie obejmują ich limity CPU i RAM subskrypcji (np. LVE w CloudLinux), więc limity trzeba ustawić dla każdego kontenera osobno.
  • Kopie zapasowe Pleska ich nie obejmują. Dane w wolumenach trzeba zabezpieczać własnym zadaniem.

Uruchomienie kontenera krok po kroku

  1. W menu Docker otwórz Obrazy i wyszukaj obraz, np. nginx, redis albo n8nio/n8n.
  2. Wybierz konkretną wersję (tag), nie latest — aktualizacja obrazu nie zmieni wtedy działania aplikacji bez Twojej wiedzy.
  3. Kliknij Uruchom. W ustawieniach kontenera określ:
    • Zmienne środowiskowe — konfigurację aplikacji (hasła, adresy baz);
    • Mapowanie portów — ręczne, z blokadą dostępu z internetu (opis niżej);
    • Mapowanie wolumenów — katalogi na trwałe dane;
    • Limit pamięci;
    • Automatyczny start po restarcie systemu.
  4. Uruchom kontener i sprawdź zakładkę logów.

Porty i bezpieczeństwo sieci

Przy automatycznym mapowaniu Docker publikuje port kontenera na wszystkich adresach serwera, czyli także w internecie. Takie porty potrafią ominąć reguły firewalla zarządzanego przez panel. Bezpieczniej:

  • wyłączyć automatyczne mapowanie i ustawić port ręcznie;
  • zaznaczyć opcję, która blokuje dostęp do portu z internetu (port nasłuchuje wtedy tylko na 127.0.0.1);
  • udostępniać aplikację wyłącznie przez domenę i reverse proxy (następna sekcja).

Bazy danych, Redis i panele administracyjne nie powinny mieć publicznego portu.

Domena, reverse proxy i HTTPS

Żeby aplikacja z kontenera była dostępna pod adresem https://app.twojafirma.pl:

  1. utwórz domenę lub subdomenę i wystaw dla niej certyfikat Let's Encrypt;
  2. w ustawieniach domeny otwórz Docker Proxy Rules i dodaj regułę: adres URL (np. /), kontener i jego port;
  3. Plesk dopisze do konfiguracji nginx domeny przekierowanie proxy_pass do portu kontenera — HTTPS obsługuje domena, a kontener może mówić zwykłym HTTP.

Reguła proxy wymaga ręcznego mapowania portu.

Wolumeny i trwałe dane

Wszystko, co kontener zapisuje w swoim systemie plików, znika przy jego odtworzeniu (np. po aktualizacji obrazu). Dane, które muszą przetrwać — pliki bazy danych, przesłane pliki, konfigurację — zapisuj w wolumenach, czyli katalogach serwera zamapowanych do kontenera. Dobrze trzymać je w jednym katalogu, np. /var/www/vhosts/twojafirma.pl/docker/app/, poza katalogiem publicznym strony. Kontener może zapisywać pliki z innym właścicielem (UID) niż użytkownik subskrypcji — nie mapuj więc do kontenera katalogu httpdocs.

Docker Compose: przykład stosu

Stos (Stack) w Plesku to plik docker-compose.yml wklejony w edytorze, wgrany albo wskazany z katalogu domeny. Przykład aplikacji z bazą PostgreSQL — z przypiętymi wersjami, limitami i portem dostępnym tylko lokalnie:

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

Hasła trzymaj w pliku .env obok pliku Compose (poza repozytorium), a nie wpisane w docker-compose.yml. Stos możesz uruchomić (up, także z pobraniem nowych obrazów), zatrzymać (stop) albo usunąć (down).

Kopie zapasowe wolumenów

Kopia zapasowa Pleska nie obejmuje kontenerów, obrazów ani wolumenów, a nawet konfiguracji mapowań. Minimalny zestaw zabezpieczeń:

  • plik docker-compose.yml i opis konfiguracji w repozytorium;
  • regularny zrzut bazy z kontenera, zapisany w katalogu objętym kopią subskrypcji:
docker compose exec -T db pg_dump -U app app | gzip > backup/app-$(date +%F).sql.gz
  • archiwum katalogu wolumenu z plikami (np. tar) wykonywane przy zatrzymanej aplikacji albo z mechanizmem spójności danej aplikacji;
  • test odtworzenia — kopia, której nikt nie odtworzył, jest tylko nadzieją.

Limity zasobów, restart i logi

  • Limity: w panelu ustawisz limit pamięci; CPU, liczbę procesów i inne ograniczenia najwygodniej opisać w pliku Compose (mem_limit, cpus, pids_limit).
  • Restart: polityka restart: unless-stopped podnosi kontener po awarii i po restarcie serwera; w panelu jest też opcja automatycznego startu.
  • Logi: podgląd w szczegółach kontenera. Rozmiar logów warto ograniczyć, żeby nie zapełniły dysku.
  • Aktualizacje: zmieniasz tag obrazu, pobierasz go i odtwarzasz kontener. Dane z wolumenów zostają.

Najczęstsze problemy

  • Aplikacja działa na porcie, ale nie pod domeną — brak reguły Docker Proxy Rules albo automatyczne mapowanie portu zamiast ręcznego.
  • Po aktualizacji zniknęły dane — zapisywane były w kontenerze, a nie w wolumenie.
  • Kontener restartuje się w kółko — błąd konfiguracji (brak zmiennej, zły adres bazy) albo przekroczony limit pamięci; sprawdź logi.
  • Port bazy danych widoczny z internetu — publikacja portu na wszystkich adresach; usuń mapowanie albo ogranicz je do 127.0.0.1.
  • Brak uprawnień do plików w wolumenie — kontener działa jako inny użytkownik (UID); ustaw właściciela katalogu zgodnie z dokumentacją obrazu.

FAQ

Czy klient hostingu może sam uruchomić kontener w Plesku?

W Plesku zarządzanie Dockerem jest dostępne tylko dla administratora serwera, dlatego na hostingu kontener zwykle uruchamia operator.

Czy kontenery są w kopii zapasowej?

Nie. Kopia Pleska nie obejmuje kontenerów ani wolumenów — dane trzeba zabezpieczać osobno.

Czy mogę użyć gotowego pliku docker-compose.yml?

Tak, jako stos. Przed uruchomieniem przypnij wersje obrazów, usuń publiczne porty baz danych i dodaj limity zasobów.

Docker czy Node.js Toolkit?

Prosta aplikacja Node.js działa bez kontenera, przez Node.js Toolkit. Docker ma sens, gdy aplikacja potrzebuje własnego środowiska, kilku usług naraz albo gotowego obrazu od producenta.

Weryfikacja techniczna: 17.09.2026, dokumentacja Plesk Obsidian 18.0.80 i rozszerzenia Docker 2.x. Na serwerach DoSieci Docker nie był jeszcze uruchamiany. Powiązane poradniki: aplikacja Node.js w Plesku, PostgreSQL w Plesku. Pakiety: hosting VIP.