Instalacja Drupala lokalnie (DDEV, Lando, Docker)

drupal

Instalacja Drupala lokalnie z użyciem narzędzi takich jak DDEV, Lando czy Docker pozwala programistom i administratorom szybko tworzyć środowiska developerskie, które wiernie odzwierciedlają serwer produkcyjny. Taki sposób pracy ułatwia testowanie nowych modułów, aktualizacji oraz zmian w konfiguracji bez ryzyka zepsucia działającej strony. W tym artykule przejdziemy krok po kroku przez koncepcje i praktyczne przykłady wykorzystania tych narzędzi w codziennej pracy z Drupalem.

Dlaczego warto używać kontenerów do pracy z Drupalem

Czym są kontenery w praktyce

Kontenery bazują na współdzielonym jądrze systemu operacyjnego, ale izolują aplikacje od siebie w ramach odrębnych przestrzeni nazw. Dzięki temu można uruchomić wiele środowisk Drupala na jednym komputerze bez konfliktów w wersjach PHP, MariaDB czy narzędziach systemowych. W przypadku Drupala kluczowe elementy to serwer HTTP (Apache lub Nginx), interpreter PHP oraz baza danych, które w środowisku kontenerowym stanowią osobne, ale współpracujące ze sobą jednostki.

W odróżnieniu od wirtualnych maszyn, kontenery są znacznie lżejsze – startują w ułamku sekundy i zużywają mniej zasobów. To pozwala trzymać na dysku wiele konfiguracji projektów, np. Drupal 9 na PHP 8.1 oraz starsze instalacje na PHP 7.4, bez konieczności ręcznego przełączania wersji pakietów w systemie operacyjnym.

Zalety w porównaniu z klasycznym LAMP/WAMP

Tradycyjne podejście LAMP/WAMP/XAMPP wymaga instalacji i aktualizacji lokalnego serwera HTTP, PHP i bazy danych, co często kończy się konfliktem wersji lub problemami z rozszerzeniami PHP. Kontenery rozwiązują ten problem, ponieważ każda konfiguracja jest zdefiniowana w plikach konfiguracyjnych, a uruchomienie środowiska sprowadza się do jednego polecenia. Dzięki temu cały zespół może pracować na identycznym stosie technologicznym, co zmniejsza liczbę trudnych do odtworzenia błędów.

Kontenery ułatwiają także utrzymanie spójności pomiędzy środowiskiem lokalnym, testowym i produkcyjnym. Gdy definicje obrazów Dockera są współdzielone w repozytorium, różnice konfiguracji między programistami praktycznie znikają. To szczególnie istotne w projektach wieloosobowych, gdzie **reprodukowalność** środowiska ma bezpośredni wpływ na tempo pracy i jakość kodu.

Typowy skład środowiska kontenerowego dla Drupala

Typowe środowisko kontenerowe dla Drupala składa się z kilku usług: serwera WWW, PHP-FPM, bazy danych oraz często dodatkowych narzędzi, takich jak serwer Redis, Solr lub Elasticsearch. Zarządzanie każdą z tych usług ręcznie byłoby czasochłonne, dlatego narzędzia wyższego poziomu, takie jak DDEV czy Lando, automatyzują tworzenie i konfigurację odpowiednich kontenerów.

W efekcie użytkownik skupia się na samym Drupalu: instalacji modułów, tworzeniu konfiguracji, pracy nad motywami, podczas gdy szczegóły związane z konfiguracją usług systemowych pozostają w tle. To właśnie ta warstwa abstrakcji nad Dockerem jest głównym powodem popularności takich narzędzi w społeczności Drupala.

Rola narzędzi DDEV, Lando i czystego Dockera

DDEV i Lando to w dużej mierze nakładki na Dockera, które dostarczają zestaw gotowych szablonów i komend upraszczających pracę z projektami PHP, w tym z Drupalem. Zamiast samodzielnie pisać złożone pliki docker-compose, użytkownik definiuje jedynie podstawowe parametry środowiska w jednym lub kilku czytelnych plikach konfiguracyjnych. Dla osób początkujących to duże ułatwienie, a dla zaawansowanych – sposób na standaryzację pracy w zespole.

Bezpośrednie korzystanie z Dockera zapewnia największą elastyczność, ale wiąże się z koniecznością manualnego opisywania wszystkich usług. W praktyce wiele zespołów wybiera DDEV lub Lando, a czystego Dockera używa jedynie przy bardziej złożonych integracjach, np. z zewnętrznymi usługami czy niestandardowymi obrazami.

Instalacja i konfiguracja Drupala z użyciem DDEV

Wymagania wstępne i instalacja DDEV

Aby korzystać z DDEV, potrzebny jest system z obsługą Dockera: Linux, macOS lub Windows z WSL2. Należy zainstalować Docker Desktop (lub alternatywę, np. Docker Engine + Docker Compose), a następnie sam DDEV, dostępny jako pakiet binarny. Po instalacji można zweryfikować poprawność środowiska za pomocą polecenia ddev version, które wyświetla informacje o zainstalowanej wersji i statusie integracji z Dockerem.

DDEV instaluje się w systemie jako globalne narzędzie linii komend, dzięki czemu można tworzyć kolejne projekty Drupala w osobnych katalogach bez dodatkowych kroków konfiguracyjnych. Kluczowe jest także posiadanie **Composer**a, który umożliwia pobieranie kodu Drupala i zarządzanie zależnościami modułów oraz bibliotek PHP.

Tworzenie nowego projektu Drupala z Composerem i DDEV

Najpopularniejszym sposobem rozpoczęcia pracy jest stworzenie katalogu projektu i zainicjowanie tam Drupala za pomocą Composera. Używa się w tym celu szablonu recommended-project, który definiuje aktualne, wspierane zależności. Po pobraniu kodu Drupala należy uruchomić komendę ddev config, która przeprowadzi użytkownika przez konfigurację podstawową: nazwę projektu, typ aplikacji (drupal9, drupal10) oraz publiczny katalog dokumentów, zazwyczaj web.

Po zakończeniu konfiguracji plików DDEV można wywołać ddev start, co spowoduje pobranie odpowiednich obrazów Dockera, utworzenie kontenerów i uruchomienie całego środowiska. DDEV automatycznie konfiguruje bazę danych, serwer WWW, PHP i dostęp do projektu pod lokalnym adresem HTTP. Cały proces sprowadza się do kilku krótkich komend, bez edycji plików konfiguracyjnych serwera.

Instalacja Drupala wewnątrz środowiska DDEV

Po uruchomieniu środowiska można przejść do interfejsu instalacyjnego Drupala w przeglądarce lub skorzystać z Drush. W praktyce, przy pracy zespołowej, wygodniej jest użyć Drusha, aby odtworzyć instalację na podstawie eksportowanej konfiguracji. DDEV dostarcza komendę ddev drush, która uruchamia Drusha wewnątrz kontenera aplikacyjnego, dzięki czemu nie trzeba instalować go lokalnie.

Przykładowa instalacja może polegać na utworzeniu bazy danych z domyślnymi wartościami, włączeniu wybranych modułów i zaimportowaniu konfiguracji site:install. DDEV dba o to, by zmienne środowiskowe związane z połączeniem do bazy danych były już poprawnie ustawione w kontenerze, więc nie trzeba podawać ręcznie parametrów hosta, portu czy użytkownika.

Codzienna praca z projektem, aktualizacje i snapshoty

DDEV ułatwia codzienne czynności, takie jak wykonywanie zrzutów bazy danych, przywracanie ich czy przełączanie wersji PHP. Wystarczy użyć wbudowanych komend, aby wyeksportować bazę do pliku w katalogu projektu, a następnie wgrać ją z powrotem na innym komputerze. To sprzyja wymianie środowisk między członkami zespołu i szybkiemu odtwarzaniu warunków, w których wystąpił dany błąd.

Dodatkowo DDEV pozwala na definiowanie własnych kontenerów pomocniczych, np. dla narzędzi takich jak Mailhog czy phpMyAdmin, co zwiększa wygodę testowania. W przypadku konieczności aktualizacji Drupala lub modułów można korzystać z Composera uruchamianego wewnątrz kontenera, co gwarantuje, że wszystkie operacje odbywają się w spójnym środowisku z właściwą wersją PHP i rozszerzeniami.

Instalacja Drupala z użyciem Lando

Idea i architektura Lando w kontekście Drupala

Lando jest narzędziem, które stawia na prostotę pliku konfiguracyjnego i integrację ze znanymi stosami technologicznymi. Dla Drupala przygotowano specjalne receptury, które definiują optymalne ustawienia PHP, serwera HTTP oraz bazy danych. W przeciwieństwie do DDEV, konfiguracja Lando opiera się głównie na jednym pliku .lando.yml, w którym opisuje się wszystkie usługi i ich parametry.

Podobnie jak DDEV, Lando korzysta z Dockera jako warstwy wykonawczej, ale dostarcza własny zestaw komend linii komend. Dzięki temu można korzystać z ujednoliconej składni poleceń niezależnie od systemu operacyjnego. Lando kładzie też nacisk na łatwe definiowanie dodatkowych usług, takich jak cache, wyszukiwarki pełnotekstowe czy narzędzia CI.

Przygotowanie pliku konfiguracyjnego Lando

Aby rozpocząć pracę, należy stworzyć plik .lando.yml w katalogu projektu Drupala. W pliku tym określa się podstawowe parametry, takie jak nazwę projektu, typ receptury (drupal, drupal9 lub drupal10) oraz adres URL, pod którym będzie dostępna strona. Można także wskazać wersje PHP, baz danych oraz dodatkowe usługi, np. Redis czy Solr, które zostaną automatycznie uruchomione w osobnych kontenerach.

Konfiguracja Lando pozwala także na definiowanie aliasów dla narzędzi takich jak Drush czy wp-cli, co przyspiesza pracę z wierszem poleceń. Plik .lando.yml można umieścić w repozytorium, co gwarantuje, że każdy członek zespołu będzie miał identyczne środowisko po wykonaniu kilku prostych komend.

Uruchomienie środowiska i instalacja Drupala

Po przygotowaniu konfiguracji Lando kolejne kroki to uruchomienie środowiska za pomocą komendy lando start, która pobiera niezbędne obrazy i tworzy kontenery. Następnie można skorzystać z narzędzi dostarczanych przez Lando, aby zainstalować Drupala lub odtworzyć istniejącą instalację. Lando oferuje komendy typu lando drush, które działają podobnie jak ich odpowiedniki w DDEV, uruchamiając narzędzia wewnątrz kontenera.

Jeśli projekt jest już skonfigurowany, wystarczy zaimportować bazę danych oraz pliki, a następnie wykonać import konfiguracji. Dzięki dynamicznie generowanym adresom URL Lando ułatwia równoległą pracę nad kilkoma projektami Drupala, bez konieczności ręcznego zarządzania hostami lokalnymi czy portami serwera.

Typowe scenariusze pracy i integracje z innymi narzędziami

Lando dobrze sprawdza się w projektach, w których ważna jest integracja z innymi technologiami, np. Node.js, Python czy zewnętrznymi usługami API. Można w jednym pliku .lando.yml opisać cały zestaw usług niezbędnych do działania rozbudowanej aplikacji, w której Drupal pełni tylko jedną z ról. To ułatwia budowę środowisk deweloperskich dla systemów o architekturze mikroserwisowej.

W codziennej pracy Lando oferuje prosty zestaw komend do wykonywania najczęstszych zadań: podglądu logów, restartu usług, wchodzenia do kontenerów czy pracy z bazą danych. Dzięki temu programista spędza mniej czasu na administracji środowiskiem, a więcej na pisaniu kodu, co bezpośrednio przekłada się na **efektywność** zespołu i stabilność projektu.

Drupal na czystym Dockerze – pełna kontrola nad środowiskiem

Ręczne tworzenie pliku docker-compose dla Drupala

Korzyścią z pracy na czystym Dockerze jest pełna swoboda w doborze obrazów i konfiguracji. Można stworzyć plik docker-compose, w którym definiuje się kontener z serwerem WWW i PHP, kontener z bazą danych oraz ewentualne usługi pomocnicze. Daje to pełną kontrolę nad wersjami PHP, MySQL/MariaDB, a nawet nad systemem plików, na którym będzie działał projekt Drupala.

Ręczna konfiguracja wymaga jednak znajomości struktury Dockera, sieci, wolumenów oraz zmiennych środowiskowych. Trzeba samodzielnie zdefiniować połączenia między usługami, porty, nazwy baz oraz użytkowników. Dla zespołów, które potrzebują niestandardowych ustawień bezpieczeństwa lub integracji z istniejącą infrastrukturą, jest to często jedyne w pełni elastyczne rozwiązanie.

Dobór obrazów i konfiguracja PHP pod Drupala

Przy tworzeniu obrazu dla Drupala można skorzystać z oficjalnych obrazów PHP z wbudowanym Apache lub FPM, a następnie doinstalować wymagane rozszerzenia. Dla Drupala istotne są moduły takie jak gd, pdo_mysql, opcache i mbstring, które wpływają na wydajność i obsługę różnych funkcji. Własny Dockerfile zapewnia możliwość precyzyjnego dopasowania środowiska do konkretnych wymagań projektu.

Niezwykle ważna jest też konfiguracja limitów pamięci, czasu wykonywania skryptów i rozmiaru przesyłanych plików. Parametry ini można ustawić bezpośrednio w Dockerfile lub poprzez dodatkowe pliki konfiguracyjne montowane do kontenera. Tego rodzaju kontrola nad środowiskiem jest istotna w projektach o dużym obciążeniu lub szczególnych wymaganiach wydajnościowych.

Zarządzanie danymi, wolumenami i migracją między środowiskami

Zarządzanie danymi w czystym Dockerze opiera się na wolumenach, które przechowują zawartość katalogów web i storage oraz baz danych. Poprawne zdefiniowanie wolumenów pozwala na bezpieczne aktualizacje kontenerów bez ryzyka utraty danych. Przy migracji między środowiskami można eksportować i importować bazy danych oraz kopiować katalogi z plikami, co ułatwia odtworzenie stanu produkcyjnego w środowisku lokalnym.

W sytuacjach, gdy projekt musi zostać odtworzony na innym serwerze, plik docker-compose wraz z Dockerfile staje się pełną dokumentacją infrastruktury. To szczególnie ważne w kontekście zarządzania konfiguracją i zgodności z zasadami DevOps, gdzie **automatyzacja** i odtwarzalność są kluczowymi elementami procesu wdrażania.

Plusy i minusy czystego Dockera w porównaniu do DDEV i Lando

Główną zaletą bezpośredniego używania Dockera jest elastyczność i brak zależności od narzędzi pośrednich. Można precyzyjnie dostosować każdy aspekt środowiska, co jest nieocenione w skomplikowanych projektach. Z drugiej strony rośnie złożoność konfiguracji i czas potrzebny na utrzymanie plików docker-compose oraz obrazów, szczególnie gdy zespół liczy wiele osób.

Narzędzia takie jak DDEV i Lando wprowadzają warstwę uproszczenia kosztem części swobody. Dla większości standardowych projektów Drupala to jednak korzystna wymiana, bo znacząco przyspiesza start pracy, a jednocześnie utrzymuje wysoki poziom **standaryzacji**. Wybór pomiędzy czystym Dockerem a narzędziami pośrednimi powinien wynikać z realnych potrzeb projektu i kompetencji zespołu.

< Powrót

Zapisz się do newslettera


Zadzwoń Napisz