chevron-left chevron-right

Jak uruchomić WordPress w Dockerze?

W procesie tworzenia stron internetowych jest wiele różnych etapów. Zaczynając od utworzenia środowiska, po wybranie odpowiednich narzędzi, a następnie zaprojektowanie i zakodowanie strony według wymagań.

Najczęściej, etap tworzenia środowiska jest krokiem jednorazowym, czyli na przykład:

  • instalujesz Apache,
  • instalujesz PHP i MySQL,
  • konfigurujesz wszystko raz i na zawsze
  • zaczynasz kodować stronę czy aplikację internetową.

WordPress jest bardzo popularnym CMS-em - systemem zarządzania treścią i mimo bardzo częstych docinek ze świata frontendu (w szczególności osób piszących rozwiązania bazujące na JavaScript), to jest to dalej system w którym zbudowano ponad 40% stron w Internecie

Z pomocą Dockera można sobie znacząco ułatwić proces tworzenia środowiska programistycznego, takiego samego na wielu maszynach w zespole programistów. Tym sposobem można uniknąć problemów z tym, że u kogoś coś działa, a u kogoś innego jednak nie.

Czym jest Docker?

Krótko, czym jest Docker? Jest to narzędzie do konteneryzacji, czyli tworzenia wyizolowanych środowisk programistycznych, które nie wpływają bezpośrednio na system na którym są zainstalowane, np. poprzez obniżenie wydajności systemu operacyjnego. Środowiska są zapisywane na tzw. obrazach, czyli plikach konfiguracyjnych Docker. Co to oznacza?

To oznacza, że tworząc środowisko programistyczne z Apache, MySQL i PHP nie musisz ich instalować na swoim systemie operacyjnym. Tym samym, procesy tych narzędzi nie obniżają wydajności twojego komputera, ponieważ obraz w Dockerze możesz uruchamiać i wyłączać kiedy chcesz. Możesz też bez problemu przełączać się między obrazami.

Konfiguracja systemu w Dockerze najczęściej jest opisywana za pomocą plików Dockerfile i docker-compose.yml. Polecam zajrzeć do dokumentacji Dockera, gdzie ich użycie zostało przystępnie wytłumaczone.

Aby móc zacząć korzystać z Dockera, polecam ściągnąć odpowiednią aplikację ze strony producenta i ją zainstalować.

Jak tworzyć lokalnie strony na WordPress?

Przejdźmy do działania. Jeśli masz już Dockera zainstalowanego na swoim komputerze, to możemy utworzyć folder projektu w wybranej lokalizacji. Gdy folder został utworzony to należy stworzyć plik o nazwie docker-compose.yml i w nim zamieścić następujące linijki kodu:

services:
  wordpress:
    image: wordpress
    container_name: blogpn
    restart: always
    volumes:
      - ./wp-content:/var/www/html/wp-content # folder współdzielony z kontenerem zawierający szablony, pluginy, etc.
      - ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini # dodatkowe ustawienia PHP
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_NAME: wpdb
      WORDPRESS_DB_USER: user
      WORDPRESS_DB_PASSWORD: password
    ports:
      - 8080:80
      - 443:443

  db:
    image: mysql:8
    container_name: mysql
    restart: always
    command: "--default-authentication-plugin=mysql_native_password"
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: wpdb
      MYSQL_USER: user
      MYSQL_PASSWORD: password

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    restart: always
    ports:
      - 3333:80
    environment:
      PMA_HOST: db
      MYSQL_ROOT_PASSWORD: password

Przy pomocy powyższej konfiguracji definiujemy 3 serwisy:

  • WordPress,
  • MySQL
  • PHPMyAdmin.

Do każdego z tych serwisów są przekazywane odpowiednie zmienne środowiskowe pozwalające na konfigurację i automatyczną instalację narzędzi.

Ponadto, dodałem dwie opcje w sekcji volumes dla serwisu wordpress, które odpowiadają za utworzenie powiązania między kontenerem a folderem w którym zamieściliśmy plik docker-compose.yml. Dzięki niemu możemy tworzyć szablony i pluginy dla WordPress w folderze wp-content umiejscowionym na systemie w którym pracujemy i jednocześnie udostępniać je dla instancji WordPress.

Dodatkowo, linijka ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini odpowiada za zdefiniowanie dodatkowej konfiguracji dla PHP, która w tym przypadku zwiększa akceptowalne rozmiary przesyłanego pliku na serwer. Domyślnie jest limit 2MB, co może być problematyczne w przypadku importowania treści z wersji produkcyjnej danej strony.

Przykładowa zawartość pliku uploads.ini wygląda następująco:

file_uploads = On
memory_limit = 1024M
upload_max_filesize = 128M
post_max_size = 128M
max_execution_time = 600

Aby uruchomić skrypt instalujący należy albo wpisać komendę docker-compose up -d lub jeśli korzystasz z Visual Studio Code i masz rozszerzenie Docker to możesz odpalić komendę z menu kontekstowego dla pliku docker-compose.yml:

Docker compose w VS Code

Gdy wszystko się pomyślnie zainstaluje to wystarczy wejść na stronę http://localhost:8080 i gotowe. WordPress jest gotowy do developmentu.

Podsumowanie

Mam nadzieję, że na podstawie tego tekstu będziesz mógł jeszcze szybciej przygotowywać swoje środowisko do pracy, czy to w domu na swoim komputerze, czy może w pracy na służbowym sprzęcie. Docker na pewno jest fajną alternatywą dla takich narzędzi jak XAMPP, LocalWP czy też własnoręcznie stawianie środowiska na serwerze.

Zachęcam do skorzystania i ewentualnie podzielenia się uwagami odnośnie wygody tego rozwiązania. Na pewno dla mnie Docker jest rozwiązaniem którego najczęściej używam w trakcie prac nad różnymi projektami webowymi.