Przez lata stawianie lokalnego środowiska Magento 2 to był rytuał bólu: XAMPP z ręczną konfiguracją vhostów, walka z wersjami PHP, niemożliwe do odtworzenia „u mnie działa”. DDEV rozwiązuje ten problem elegancko – Docker pod spodem, prosta konfiguracja YAML na wierzchu. Pokazuję jak to wygląda w praktyce.
Czym jest DDEV?
DDEV to narzędzie CLI oparte na Dockerze, które automatyzuje tworzenie lokalnych środowisk deweloperskich dla popularnych platform – w tym Magento 2. Zamiast ręcznie konfigurować kontenery, piszesz kilka komend i masz działające środowisko z nginx, PHP-FPM, MySQL, Redis i Elasticsearch w odpowiednich wersjach.
Wymagania
- Docker Desktop (macOS / Windows) lub Docker Engine (Linux)
- DDEV CLI – instalacja poniżej
- Composer (globalnie lub przez DDEV)
# Instalacja DDEV na macOS przez Homebrew
brew install ddev/ddev/ddev
# Na Ubuntu/Debian
curl -fsSL https://raw.githubusercontent.com/ddev/ddev/master/scripts/install_ddev.sh | bash
# Sprawdź instalację
ddev version
Inicjalizacja projektu Magento 2
# Utwórz katalog projektu
mkdir magento2-dev && cd magento2-dev
# Zainicjuj DDEV z typem projektu Magento 2
ddev config --project-type=magento2 \
--project-name=magento2-dev \
--php-version=7.2 \
--docroot=pub
# Uruchom kontenery
ddev start
Po tym poleceniu DDEV tworzy plik .ddev/config.yaml – możesz go edytować ręcznie:
name: magento2-dev
type: magento2
docroot: pub
php_version: "7.2"
webserver_type: nginx-fpm
router_http_port: "80"
router_https_port: "443"
xdebug_enabled: false
additional_hostnames: []
additional_fqdns: []
mariadb_version: "10.2"
Instalacja Magento 2 przez Composer
# Wejdź do kontenera webowego
ddev ssh
# Lub wykonaj Composera bezpośrednio przez DDEV
ddev composer create --repository=https://repo.magento.com/ \
magento/project-community-edition:2.3.0 .
# Instalacja Magento (wewnątrz kontenera lub przez ddev exec)
ddev exec bin/magento setup:install \
--base-url=https://magento2-dev.ddev.site \
--db-host=db \
--db-name=db \
--db-user=db \
--db-password=db \
--admin-firstname=Admin \
--admin-lastname=User \
--admin-email=admin@example.com \
--admin-user=admin \
--admin-password=Admin123! \
--language=pl_PL \
--currency=PLN \
--timezone=Europe/Warsaw \
--use-rewrites=1 \
--search-engine=elasticsearch6 \
--elasticsearch-host=elasticsearch \
--elasticsearch-port=9200
Elasticsearch w DDEV
Magento 2.3+ wymaga Elasticsearch. W DDEV dodajesz go jedną linią w configu:
# .ddev/config.yaml - dopisz:
webimage_extra_packages: []
hooks:
post-start:
- exec: "bin/magento config:set catalog/search/engine elasticsearch6"
- exec: "bin/magento config:set catalog/search/elasticsearch6_server_hostname elasticsearch"
Lub przez dedykowany serwis w .ddev/docker-compose.elasticsearch.yaml:
version: '3.6'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.8.0
environment:
- discovery.type=single-node
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ports:
- "9200"
labels:
com.ddev.site-name: ${DDEV_SITENAME}
Przydatne komendy DDEV na co dzień
| Komenda | Co robi |
|---|---|
ddev start |
Uruchamia kontenery |
ddev stop |
Zatrzymuje kontenery |
ddev ssh |
Wchodzi do kontenera webowego |
ddev exec <cmd> |
Wykonuje komendę w kontenerze |
ddev logs |
Pokazuje logi nginx/PHP |
ddev xdebug on |
Włącza Xdebug (działa z wpisem z sierpnia) |
ddev describe |
Pokazuje URL, porty, dane do bazy |
Co zyskujesz vs XAMPP
Z XAMPP masz jeden globalny PHP dla wszystkich projektów. Chcesz jeden projekt na PHP 7.2, drugi na 7.3? Ręczna konfiguracja i modyfikacja httpd.conf. Z DDEV każdy projekt ma swój kontener z własną wersją PHP, niezależną bazą danych i osobnym nginx. Przeniesienie projektu na inne stanowisko to wgranie katalogu z .ddev/config.yaml i ddev start.
Podsumowanie
DDEV to dziś mój domyślny wybór do lokalnego developmentu Magento 2. Działa spójnie na macOS, Linux i Windows, integruje się z PHPStorm, obsługuje Xdebug jedną komendą i nie wymaga wiedzy o Dockerze, żeby zacząć. W kolejnym wpisie wrócimy do świata PHP – omówię co nowego przynosi PHP 7.3, które wychodzi właśnie w grudniu 2018.
