"U mnie działa" to jeden z bardziej znanych problemów w zespołach deweloperskich. Docker rozwiązuje go przez izolację środowiska uruchomieniowego od systemu operacyjnego hosta - każdy programista uruchamia identyczne środowisko.
Czym jest Docker
Docker to platforma do uruchamiania aplikacji w kontenerach. Kontener to odizolowane środowisko z własną wersją PHP, bazą danych, serwerem webowym i wszystkimi zależnościami. Niezależnie czy programista ma macOS, Linux czy Windows, środowisko jest identyczne dla wszystkich.
Docker Compose dla projektu PHP
Docker Compose definiuje i uruchamia wielokontenerowe środowiska przez plik docker-compose.yml. Typowy setup dla projektu PHP lub PrestaShop zawiera kontener PHP-FPM, serwer Nginx lub Apache, bazę MySQL lub MariaDB, Redis do celów cache i MailHog do przechwytywania e-maili podczas developmentu.
Volumes i synchronizacja plików
Pliki projektu są montowane jako volume do kontenera. Zmiany w plikach na hoście są natychmiast widoczne w kontenerze bez restartowania i kopiowania plików. To sprawia że praca z Dockerem podczas developmentu jest praktycznie nieodróżnialna od lokalnego środowiska.
Korzyści dla pracy zespołowej
Nowy programista dołączający do projektu uruchamia docker-compose up i ma działające środowisko w kilka minut. Nie musi instalować PHP, MySQL, konfigurować virtualnych hostów i martwić się o wersje zależności. Wersja PHP i wszystkich narzędzi jest zapisana w repozytorium.
Ograniczenia na Windows
Docker Desktop na Windows korzysta z WSL2. Wydajność systemu plików przy montowaniu woluminów może być niższa niż na Linux lub macOS, co przekłada się na wolniejsze ładowanie stron w trybie deweloperskim. To znane ograniczenie, które można częściowo zniwelować odpowiednią konfiguracją woluminów.