Jak skonfigurować środowisko developerskie dla WordPressa w Dockerze

Docker to jedno z najpotężniejszych narzędzi dla developerów WordPressa.
Pozwala stworzyć w pełni odizolowane, powtarzalne i łatwe do przenoszenia środowisko pracy — bez potrzeby instalowania lokalnie PHP, MySQL czy Nginx.

W tym poradniku pokażę Ci, jak krok po kroku skonfigurować środowisko developerskie WordPressa w Dockerze, używając oficjalnych obrazów WordPress, MySQL oraz phpMyAdmin.

To idealne rozwiązanie zarówno dla pojedynczych programistów, jak i zespołów, które chcą uniknąć „działa u mnie, nie działa u ciebie”.


1. Czym jest Docker i dlaczego warto go używać z WordPressem

Docker pozwala uruchamiać aplikacje w lekkich kontenerach, które zawierają wszystko, czego aplikacja potrzebuje do działania — system, biblioteki, serwer WWW, PHP, bazę danych itd.

Zalety Dockera w środowisku WordPress:

  • 🚀 szybkie uruchamianie projektów,
  • 🔄 identyczne środowisko na każdym komputerze,
  • 🧩 łatwe tworzenie kopii i backupów,
  • 🧹 brak „śmieci” w lokalnym systemie,
  • 🧑‍💻 łatwa praca zespołowa przez plik docker-compose.yml.

2. Wymagania wstępne

Zanim zaczniesz, upewnij się, że masz zainstalowane:

  • Docker Desktop (Windows/Mac),
  • lub Docker Engine + Docker Compose (Linux),
  • edytor kodu (np. VS Code),
  • opcjonalnie: Git, jeśli chcesz wersjonować projekt.

3. Struktura projektu

Utwórz nowy folder, np. wordpress-docker, i wewnątrz niego następującą strukturę:

wordpress-docker/
│
├── docker-compose.yml
├── .env
└── data/
    └── db/       # tu będą dane bazy MySQL

4. Plik .env – zmienne środowiskowe

Utwórz plik .env w głównym katalogu projektu z zawartością:

MYSQL_ROOT_PASSWORD=rootpass
MYSQL_DATABASE=wordpress
MYSQL_USER=wpuser
MYSQL_PASSWORD=wppass
WORDPRESS_DB_HOST=db:3306
WORDPRESS_DB_USER=wpuser
WORDPRESS_DB_PASSWORD=wppass
WORDPRESS_DB_NAME=wordpress

Dzięki temu dane dostępowe będą trzymane poza plikiem konfiguracyjnym.


5. Plik docker-compose.yml

Teraz utwórz plik docker-compose.yml i wklej poniższą konfigurację:

version: '3.8'

services:
  db:
    image: mysql:5.7
    container_name: wp_db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
    volumes:
      - ./data/db:/var/lib/mysql

  wordpress:
    image: wordpress:php8.2-apache
    container_name: wp_app
    depends_on:
      - db
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: ${WORDPRESS_DB_HOST}
      WORDPRESS_DB_USER: ${WORDPRESS_DB_USER}
      WORDPRESS_DB_PASSWORD: ${WORDPRESS_DB_PASSWORD}
      WORDPRESS_DB_NAME: ${WORDPRESS_DB_NAME}
    volumes:
      - ./wordpress:/var/www/html

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: wp_phpmyadmin
    depends_on:
      - db
    ports:
      - "8081:80"
    environment:
      PMA_HOST: db
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}

6. Uruchomienie środowiska

W terminalu, w katalogu projektu, uruchom:

docker compose up -d

Docker pobierze obrazy i uruchomi trzy kontenery:

  • wp_db – baza danych MySQL,
  • wp_app – WordPress na Apache z PHP,
  • wp_phpmyadmin – panel do zarządzania bazą danych.

Po chwili możesz wejść na:


7. Praca z plikami WordPressa

Wszystkie pliki WordPressa znajdziesz w folderze wordpress/, który jest mapowany z kontenera.
Możesz edytować motywy, wtyczki i pliki PHP bezpośrednio w tym katalogu – zmiany będą widoczne od razu po odświeżeniu strony.

💡 Jeśli katalog wordpress/ nie istnieje, Docker utworzy go automatycznie i pobierze do niego WordPressa przy pierwszym uruchomieniu.


8. Restart i zatrzymanie kontenerów

  • zatrzymanie środowiska: docker compose down
  • ponowne uruchomienie: docker compose up -d
  • usunięcie wszystkiego (wraz z danymi bazy): docker compose down -v

9. Dodanie HTTPS (opcjonalnie)

Jeśli chcesz przetestować stronę z HTTPS, możesz użyć Traefik lub nginx-proxy, które automatycznie generują certyfikaty SSL (np. przez Let’s Encrypt).
Dla lokalnego środowiska często wystarczy jednak dodanie certyfikatu self-signed i zmiana portu na 443.


10. Wskazówki dla deweloperów

  • Użyj xdebug w obrazie PHP, aby debugować kod z poziomu VS Code.
  • Dodaj MailHog, jeśli chcesz testować wysyłkę maili w środowisku lokalnym.
  • Możesz stworzyć własny obraz Dockerowy z wbudowanym motywem i wtyczkami (Dockerfile).
  • Dla każdego projektu używaj osobnego folderu data/db, aby uniknąć konfliktów.

11. Typowe problemy

ProblemRozwiązanie
WordPress nie łączy się z baząUpewnij się, że WORDPRESS_DB_HOST to db:3306
Port 8080 zajętyZmień port w docker-compose.yml, np. 8085:80
Brak uprawnień do plikówUruchom sudo chown -R $USER:$USER wordpress/
phpMyAdmin nie działaSprawdź, czy kontener db działa (docker ps)

12. Podsumowanie

Dzięki Dockerowi możesz w kilka minut stworzyć w pełni działające środowisko developerskie dla WordPressa — bez ręcznej konfiguracji PHP, Apache czy MySQL.
To rozwiązanie elastyczne, szybkie i idealne do pracy zespołowej.

Jeśli nauczysz się tworzyć własne obrazy i rozszerzać konfigurację, możesz mieć identyczne środowisko lokalne, staging i produkcyjne, co minimalizuje ryzyko błędów po wdrożeniu.

KROK 1 Z 4

Z CZYM POTRZEBUJESZ POMOCY?