PRZYKŁADY

Prawdziwe aplikacje, zweryfikowane od początku do końca

Od Laravela po WordPressa na OxPHP — każdy przepis to samowystarczalny projekt Docker Compose: Dockerfile, plik compose, polecenia instalacji oraz szczegóły, których nie opisuje dokumentacja pisana pod nginx + PHP-FPM.

Laravel

Kanoniczna aplikacja w trybie framework.

PHP
8.5
Tryb routingu
Framework
Usługi
MySQL
Instalacja
composer create-project
environment · docker-compose.yml
ENTRY_FILE=index.php
Uwagi
—

ENTRY_FILE=index.php wybiera tryb framework: public/ staje się katalogiem głównym dokumentów, więc .env, app/ oraz vendor/ nigdy nie są osiągalne przez HTTP.

—

Środowisko kontenera nadpisuje .env — loader dotenv Laravela nigdy nie nadpisuje prawdziwych zmiennych środowiskowych, więc DB_HOST i APP_ENV ustawione w Compose wygrywają.

—

Obraz deweloperski ponownie waliduje OPcache przy każdym żądaniu; zmiany w podmontowanym katalogu src/ (bind mount) obowiązują natychmiast.

Zbudowane na opublikowanym obrazie

Każdy Dockerfile kopiuje binarkę oxphp, liboxphp_bridge.so i rozszerzenie SAPI z ghcr.io/oxphp/oxphp. ABI PHP musi się zgadzać: kompiluj rozszerzenia swojej aplikacji na tym samym php:<X.Y>-zts-alpine.

Tryb routingu wynika z kształtu aplikacji

Jeden front controller w public/ → tryb frameworkowy. Kilka fizycznych punktów wejścia → tryb tradycyjny. Jedna decyzja zastępuje cały plik reguł przepisywania nginx.

Bezpieczne domyślne ustawienia, bez konfiguracji

Blokowanie ścieżek z kropką zwraca 404 dla .env i .git/ wszędzie; PHP_DENY_PATHS zabezpiecza katalogi uploadu w trybie tradycyjnym; SYMLINK_ALLOW_PATHS przepuszcza tylko zamierzone dowiązania symboliczne.

Instalacja w tym samym kontenerze

Obraz deweloperski zawiera PHP CLI i Composera: artisan, drush, wp i bin/magento uruchamiasz przez docker compose exec — bez osobnego toolchaina.

Nie ma Twojego stacku na liście?

Każda aplikacja z kontrolerem frontowym działa w trybie framework — zacznij od przepisu dla Laravela i dostosuj trzy zmienne.