Устанавливаем Docker. Распаковываем WordPress.
Создаем структуру:
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)
либо:
- установить WSL
- установить из магазина windows например Ubuntu любой версии
- Зайти в Ubuntu через скрытый сетевой адрес
\\wsl$\
далее можно создать ссылку на подсистему(проект) как на сетевой диск, для удобного доступа через IDE. - Развернуть docker-проект в самом Ubuntu
В windows 11, подсистемы linux имеют открытую видимость и доступны в сетевом режиме, это облегчает работу.
О том как поставить wsl 2 можно прочитать тут.