Загрузка...

Как запустить WordPress на LEMP в Docker-контейнере

Устанавливаем Docker. Распаковываем WordPress.

Создаем структуру:

WajgiE8

db Dockerfile:

FROM mysql:8.0
COPY wordpress.sql docker-entrypoint-initdb.d/wordpress.sql

nginx/default.conf

server {
  listen 80;
  listen [::]:80;

  root /var/www/html;
  index index.php;

  access_log /var/log/nginx/site-access.log;
  error_log /var/log/nginx/site-error.log;

  location / {
    try_files $uri $uri/ /index.php?$args;
  }

  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass wordpress:9000;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
  }
}

контейнер php не используем, он будет входить в контейнер WordPress

В папке в c wp создаем файл docker-compose.yml с содержимым:


version: '3'
services:
  nginx:
    image: nginx:latest
    container_name: nginx
    ports:
      - "80:80"
    volumes:
      - .:/var/www/html
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
      - ./docker/nginx/log:/var/log/nginx/
    command:
      - chown -R www-data:www-data html
    links:
      - wordpress
  mysql:
    container_name: mysql
    build: ./docker/db
    ports:
      - "3306:3306"
    environment:
      - MYSQL_DATABASE=wordpress
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_USER=mysql
      - MYSQL_PASSWORD=mysql

  wordpress:
    image: wordpress:php7.4-fpm-alpine
    volumes:
      - .:/var/www/html
    depends_on:
      - mysql
    environment:
      WORDPRESS_DB_HOST: mysql
      MYSQL_ROOT_PASSWORD: root
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: mysql
      WORDPRESS_DB_PASSWORD: mysql
      WORDPRESS_TABLE_PREFIX: rwp_
    command: php-fpm -R # Allow running FPM as root
    links:
      - mysql
    restart: always
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: phpmyadmin
    ports:
      - 8090:80
    links:
      - mysql:db
volumes:
  .:
    external: true

Пишем в командной строке

docker-compose up

— Поднять контейнеры образа
Теперь сайт доступен по адресу http://localhost/ 

 

Если запуск докера идет из под Windows, то могут быть разные проблемы: производительность, проблема чтения/записи файлов и т.д.

Что бы избежать этих проблем нужно либо запустить докер в старом режиме (без виртуализации и Hyper-V)

atUNpn5

либо:

  • установить WSL
  • установить из магазина windows например Ubuntu любой версии
  • Зайти в Ubuntu через скрытый сетевой адрес \\wsl$\ далее можно создать ссылку на подсистему(проект) как на сетевой диск, для удобного доступа через IDE.
  • Развернуть docker-проект в самом Ubuntu

В windows 11, подсистемы linux имеют открытую видимость и доступны в сетевом режиме, это облегчает работу.
О том как поставить wsl 2 можно прочитать тут.