WordPress na localhost

WordPress on localhost with docker and docker-compose

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!

Jesteś gotów nas sprawdzić?

Napisz do nas o tym czego potrzebujesz
NAPISZ EMAIL
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram