Przygotujemy teraz środowisko do testów WordPress'a na localhost. Użyjemy do tego narzędzi docker i docker-compose. Ich proces instalacyjny różni się w zależności od Twojego systemu operacyjnego, znane są problemy z wydajnością pod Windows w niektórych konfiguracjach sprzętowych, więc nie będę tu ani prezentował procesu instalacji, ani odsyłał do żadnej instrukcji.
tutaj znajdziesz kompletny tutorial jak zainstalować docker i docker-compose na ubuntu, polecam tę dystrybucję, sprawia zdecydowanie najmniej problemów
Po zainstalowaniu dockera i docker-compose przygotowujemy dockerfile dla WordPressa:
# Użyj oficjalnego obrazu PHP z Apache
FROM php:8.0-apache
# Zaktualizuj listę pakietów i zainstaluj potrzebne biblioteki
RUN apt-get update && \
apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
libxml2-dev \
libicu-dev \
libzip-dev \
libonig-dev \
libxslt1-dev \
libcurl4-openssl-dev \
libssl-dev
# Konfiguruj i instaluj rozszerzenia PHP
RUN docker-php-ext-configure gd --with-freetype --with-jpeg && \
docker-php-ext-install -j$(nproc) gd \
intl \
mbstring \
pdo \
pdo_mysql \
mysqli \
zip \
xml \
xsl \
opcache \
curl
# Włącz mod_rewrite dla obsługi trwałych linków WordPress
RUN a2enmod rewrite
# Ustaw katalog roboczy na katalog z WordPress
WORKDIR /var/www/html
# Skopiuj pliki WordPress do kontenera
COPY . /var/www/html/
# Nadaj odpowiednie uprawnienia
RUN chown -R www-data:www-data /var/www/html chmod -R 755 /var/www/html
# Eksponuj port 80
EXPOSE 80
# Uruchom Apache w tle
CMD ["apache2-foreground"]
i docker-compose.yml przygotowane w taki sposób, by folder zawierający docker-compose.yml i dockerfile był automatycznie mapowany z wnętrzem kontenera, ułatwi Ci to znacząco proces testowania Twoich własnych pluginów, czy wrzucanie plików z kopii zapasowej z hostingu.
Oto docker-compose.yml:
version: 3
services:
wordpress:
build: .
volumes:
- .:/var/www/html
ports:
- 8000:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
depends_on:
- db
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
UPLOAD_LIMIT: 64M
phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
- 8081:80;
environment:
PMA_HOST: db
PMA_USER: root
PMA_PASSWORD: wordpress
UPLOAD_LIMIT: 100M
depends_on:
- db
volumes:
db_data:
teraz wystarczy odpalić te dwa pliki, z poziomu katalogu je zawierającego (pamiętaj by w nim umieścić pliki instalacyjne wordpressa, lub aktualną kopię zaspasową z serwera hostingowego z odpowiednio zmodyfikowanym pod Twoje środowisko wp-config.php).
Zanim jednak uruchomimy kontenery przypiszemy odpowiednie uprawnienia do plików i folderów katalogu na dysku, by doker mógł bez przeszkód mapować katalog z kontenera z tym na dysku. W tym celu uruchamiamy polecenie:
sudo chown -R 777
oraz w pliku wp-config.php dodać linię:
define('FS_METHOD', 'direct');
To spowoduje, że będziesz mógł ładować swoje pluginy bezpośrednio z dysku, bez konieczności instalowania usługi FTP wewnątrz kontenera.
Przed pierwszym użyciem obrazu dockera i usług zdefiniowanych w pliku docker-compose, należy obraz zbudować poleceniem:
sudo docker-compose build --no-cache
A następnie uruchomić standardowym poleceniem:
sudo docker-compose up
Na localhost na porcie 8000 uruchomi się wordpress, zaś na porcie 8081 będzies miał dostęp do phpmyadmin, który pozwoli w dowolny spsób zarządzać bazą wordpress.
POWODZENIA!