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:
services:
wordpress:
image: wordpress:latest
container_name: blogpn_wordpress
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
depends_on:
- db
networks:
- wpsite
db:
image: mysql:8
container_name: blogpn_mysql
restart: always
command: "--default-authentication-plugin=mysql_native_password"
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wpdb
MYSQL_USER: user
MYSQL_PASSWORD: password
volumes:
- db_data:/var/lib/mysql
networks:
- wpsite
phpmyadmin:
image: phpmyadmin/phpmyadmin
restart: always
ports:
- 3333:80
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: password
networks:
wpsite: {}
volumes:
db_data: {}
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:
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.