PHP / Magento Dev Blog

  • Publikacje
  • O autorze
  • Kontakt

DDEV – lokalne Magento 2 w 10 minut, porównanie z XAMPP

by Henryk Tews / wtorek, 11 grudnia 2018 / Opublikowano w Środowiska

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.

About Henryk Tews

Co możesz przeczytać następne

Docker od zera – Dockerfile, nginx, docker-compose, Xdebug 3.x
OpenTelemetry – distributed tracing, auto-instrumentacja, Jaeger w DDEV
GitHub Actions – pipeline dla PHP, matrix testów, deploy na staging przez SSH
  • Publikacje
  • O autorze
  • Kontakt

© 2026 Created by

GÓRA
Zarządzaj zgodą
Aby zapewnić jak najlepsze wrażenia, korzystamy z technologii, takich jak pliki cookie, do przechowywania i/lub uzyskiwania dostępu do informacji o urządzeniu. Zgoda na te technologie pozwoli nam przetwarzać dane, takie jak zachowanie podczas przeglądania lub unikalne identyfikatory na tej stronie. Brak wyrażenia zgody lub wycofanie zgody może niekorzystnie wpłynąć na niektóre cechy i funkcje.
Funkcjonalne Zawsze aktywne
Przechowywanie lub dostęp do danych technicznych jest ściśle konieczny do uzasadnionego celu umożliwienia korzystania z konkretnej usługi wyraźnie żądanej przez subskrybenta lub użytkownika, lub wyłącznie w celu przeprowadzenia transmisji komunikatu przez sieć łączności elektronicznej.
Preferencje
Przechowywanie lub dostęp techniczny jest niezbędny do uzasadnionego celu przechowywania preferencji, o które nie prosi subskrybent lub użytkownik.
Statystyka
Przechowywanie techniczne lub dostęp, który jest używany wyłącznie do celów statystycznych. Przechowywanie techniczne lub dostęp, który jest używany wyłącznie do anonimowych celów statystycznych. Bez wezwania do sądu, dobrowolnego podporządkowania się dostawcy usług internetowych lub dodatkowych zapisów od strony trzeciej, informacje przechowywane lub pobierane wyłącznie w tym celu zwykle nie mogą być wykorzystywane do identyfikacji użytkownika.
Marketing
Przechowywanie lub dostęp techniczny jest wymagany do tworzenia profili użytkowników w celu wysyłania reklam lub śledzenia użytkownika na stronie internetowej lub na kilku stronach internetowych w podobnych celach marketingowych.
  • Zarządzaj opcjami
  • Zarządzaj serwisami
  • Zarządzaj {vendor_count} dostawcami
  • Przeczytaj więcej o tych celach
Zobacz preferencje
  • {title}
  • {title}
  • {title}