Warden i DDEV to dwa najpopularniejsze narzędzia do lokalnego środowiska deweloperskiego dla Magento 2. DDEV stawia na prostotę i szybki start – działa od razu po instalacji. Warden daje pełną kontrolę nad konfiguracją sieci i certyfikatami, ale wymaga więcej wiedzy o Docker Compose. W 2026 oba są dojrzałymi produktami. Pokażę gdzie każde z nich błyszczy i kiedy wybrać które.
Architektura – fundamentalna różnica
| Aspekt | DDEV | Warden |
|---|---|---|
| Podejście | Narzędzie CLI które zarządza Docker Compose | Środowisko sieciowe + narzędzie CLI |
| Sieć | Każdy projekt ma izolowaną sieć | Wspólna sieć traefik dla wszystkich projektów |
| SSL | Automatyczne certyfikaty per projekt (mkcert) | Certyfikat wildcard *.test (mkcert) |
| Dostęp URL | https://projekt.ddev.site | https://projekt.test |
| Reverse proxy | Wbudowany nginx per projekt | Traefik jako globalny proxy |
| Konfiguracja | Plik .ddev/config.yaml | Pliki .env + docker-compose.yml |
| Addony/usługi | ddev get + gotowe addony | Ręczna konfiguracja Docker Compose |
DDEV – instalacja i projekt Magento 2
# Instalacja DDEV (macOS)
brew install ddev/ddev/ddev
# Inicjalizacja projektu Magento 2
mkdir magento-shop && cd magento-shop
ddev config --project-type=magento2 --php-version=8.4 --docroot=pub
# .ddev/config.yaml - minimalna konfiguracja
# name: magento-shop
# type: magento2
# docroot: pub
# php_version: "8.4"
# webserver_type: nginx-fpm
# database:
# type: mariadb
# version: "10.6"
ddev start
# DDEV automatycznie:
# - tworzy certyfikat SSL
# - konfiguruje nginx z Magento 2 rules
# - uruchamia MariaDB, PHP-FPM, Mailpit
# - udostępnia https://magento-shop.ddev.site
# Popularne addony
ddev get ddev/ddev-opensearch # OpenSearch
ddev get ddev/ddev-redis # Redis
ddev get ddev/ddev-mailpit # Mail catcher (domyślnie wbudowany)
ddev get ddev/ddev-phpmyadmin # phpMyAdmin
ddev get ddev/ddev-varnish # Varnish cache
# Magento 2 instalacja
ddev composer create-project \
magento/project-community-edition \
--repository-url=https://repo.magento.com/ .
ddev magento setup:install \
--base-url=https://magento-shop.ddev.site/ \
--db-host=db --db-name=db --db-user=db --db-password=db \
--opensearch-host=opensearch \
--admin-user=admin --admin-password=Admin1234! \
--admin-email=admin@example.com
Warden – instalacja i projekt Magento 2
# Warden wymaga najpierw uruchomienia środowiska globalnego
warden svc up # startuje Traefik, Portainer, DNS resolver
# Inicjalizacja projektu
mkdir magento-shop && cd magento-shop
# .env - konfiguracja projektu
cat > .env << 'EOF'
WARDEN_ENV_NAME=magento-shop
WARDEN_ENV_TYPE=magento2
WARDEN_WEB_ROOT=/
TRAEFIK_DOMAIN=magento-shop.test
TRAEFIK_SUBDOMAIN=app
PHP_VERSION=8.4
MARIADB_VERSION=10.6
OPENSEARCH_VERSION=2.13
REDIS_VERSION=7.2
VARNISH_VERSION=7.4
MAGENTO_RUN_MODE=developer
EOF
warden env up
# Warden uruchamia:
# - nginx + php-fpm (osobne kontenery)
# - MariaDB, Redis, OpenSearch, Varnish - z konfiguracji .env
# - Traefik routing: https://app.magento-shop.test
warden shell # wejdź do kontenera php-fpm
# Wewnątrz kontenera:
composer create-project \
magento/project-community-edition \
--repository-url=https://repo.magento.com/ .
bin/magento setup:install \
--base-url=https://app.magento-shop.test/ \
--db-host=db --db-name=magento --db-user=magento --db-password=magento \
--opensearch-host=opensearch \
--cache-backend=redis --cache-backend-redis-server=redis \
--session-save=redis --session-save-redis-host=redis \
--admin-user=admin --admin-password=Admin1234!
Codzienna praca - porównanie komend
# ── DDEV ────────────────────────────────────────────── ddev start / ddev stop / ddev restart ddev ssh # wejdź do kontenera web ddev exec bin/magento cache:flush ddev composer require vendor/package ddev exec php bin/magento setup:upgrade ddev logs # logi wszystkich kontenerów ddev describe # info o projekcie (URL, usługi) ddev xdebug on / ddev xdebug off # ── Warden ──────────────────────────────────────────── warden env up / warden env down / warden env restart warden shell # wejdź do php-fpm warden shell -- bin/magento cache:flush warden env exec php-fpm composer require vendor/package warden env logs --follow # logi warden debug enable / warden debug disable
Wydajność - mutagen i synchronizacja plików
# DDEV z mutagen (macOS - eliminuje wolność NFS) # .ddev/config.yaml # performance_mode: mutagen ddev config --performance-mode=mutagen ddev restart # Benchmark composer install (projekt Magento 2, ~6000 plików): # DDEV bez mutagen: 4m 12s # DDEV z mutagen: 1m 08s # Warden (NFS): 3m 45s # Warden (native Linux): 45s # Warden na macOS używa bind mounts bez mutagen # DDEV z mutagen jest szybszy na macOS
Kiedy wybrać DDEV, kiedy Warden
| Kryterium | DDEV | Warden |
|---|---|---|
| Pierwsze kroki z Magento | Tak - prostszy start | Nie - wymaga wiedzy o Docker |
| Wiele projektów równolegle | Tak - izolowane sieci | Tak - wspólny Traefik |
| Pełna kontrola nad konfiguracją | Ograniczona | Pełna - edytujesz docker-compose |
| macOS wydajność | Tak (mutagen) | Gorzej bez mutagen |
| Linux natywny | Tak | Tak (szybszy) |
| Varnish out of box | Addon (1 komenda) | W .env (1 linia) |
| Customizacja nginx | Override pliku config | Pełny dostęp do nginx templates |
| Wsparcie społeczności | Większe, aktywniejszy development | Mniejsze, stabilne |
Podsumowanie
W 2026 DDEV to domyślny wybór dla większości deweloperów Magento 2. Prosta instalacja, addony jedną komendą, mutagen na macOS, aktywny development - przeważają nad ograniczoną elastycznością. Warden warto rozważyć gdy potrzebujesz pełnej kontroli nad konfiguracją Docker Compose, pracujesz na Linuxie gdzie bind mounts są szybkie, lub masz specyficzne wymagania sieciowe. Oba narzędzia świetnie działają - wybór zależy od preferencji i wymagań projektu.
