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!