Docker-compose
Устанавливаем два контейнера — php с wp и mysql так:
Структура файлов такая:
./
wp-db/
wp-files/
docker-compose.yml
- wp-db это папка для хранения контейнера mysql
- wp-files это папка для хранения php файлов WordPress.
- docker-compose.yml это файл описывающий как нужно постоить docker окружение.
Содержание файла docker-compose.yml (добавлена команда для установки xdebugger`а):
version: "3.9"
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
ports:
- "3306:3306"
wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
- wordpress_data:/var/www/html
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DEBUG: 'true'
command: >
bash -c "
cd /tmp/ &&
curl -o xdebug.tgz https://xdebug.org/files/xdebug-3.1.3.tgz &&
tar -xvzf xdebug.tgz &&
cd xdebug-3.1.3 &&
phpize &&
./configure &&
make &&
cp modules/xdebug.so /usr/local/lib/php/extensions/no-debug-non-zts-20190902 &&
echo 'zend_extension = xdebug' >> /usr/local/etc/php/conf.d/99-xdebug.ini &&
echo 'zend_extension = xdebug' >> /usr/local/etc/php/php.ini &&
echo 'xdebug.mode = debug' >> /usr/local/etc/php/php.ini &&
echo 'xdebug.start_with_request = yes' >> /usr/local/etc/php/php.ini &&
cd /var/www/html &&
docker-entrypoint.sh apache2-foreground
"
volumes:
wordpress_data:
driver: local
driver_opts:
type: 'none'
o: 'bind'
device: './wp-files/'
db_data:
driver: local
driver_opts:
type: 'none'
o: 'bind'
device: './wp-db/'
Запускаем в папке с файлом docker-compose.yml командой:
docker-compose up -d
Эта команда создаст окружение (volume, images, сеть итд) и запустит контейнеры в режиме сервиса.
Проверить статус запущеных контейнеров можно командой:
docker-compose ps
В Vscode устанавливаем расширение
Расширение называется xdebug.php-debug. Его просто надо найти и установить по имени внутри vscode.
Принцип работы
Дальше можно приступать к работе с WordPress через браузер localhost:8000.
В папках wp-db/ и wp-files/ будут находится, смонтированные к контейнерам, файлы которые можно будет поизучать/менять и тд.
Работа с контейнером напрямую через VScode(очень удобно!)
В vscode слева выбрать удаленный обозреватель (иконка — монитор с диском).
id расширения: ms-vscode-remote.remote-containers
Далее ПКМ по контейнеру (docker-wordpress)- Attach to Container.
Папку для работы вибыраем /var/www/html
Бывает что происходит отключение, лучше всего нажимать сразу кнопку "Перегрузить окно"
SSH внутрь контейнеров
src: https://phase2.github.io/devtools/common-tasks/ssh-into-a-container/
Через docker
docker exec -it docker-wordpress_db_1 /bin/bash
Внутри контейнера пишем (согласно настройкам выше):
mysql --user=wordpress --password=wordpress wordpress
Для примера
Внутри mysql:
SHOW TABLES;
INSERT INTO wp_users (user_login, user_nicename , user_registered) VALUES('uu','bb', CURRENT_TIMESTAMP);
Теперь, если зайти в админку, там появится новый пльзователь.
!Настоятельно не рекомендуется менять чтолибо в базе данных напрямую. Лучше всего использовать для этого
/wp-admin
, либо использовать терминальную утилитуwp-cli
.
Ну или можно ещё сделать так:
update wp_users set user_email = 'tri@tra.ru';
VSCode хорошее расширение для подключения к БД.
Имя: MySQL
Идентификатор: cweijan.vscode-mysql-client2
Описание: Database manager for MySQL/MariaDB, PostgreSQL, SQLite, Redis and ElasticSearch.
Версия: 4.8.5
Издатель: cweijan
Ссылка на Visual Studio Marketplace: https://marketplace.visualstudio.com/items?itemName=cweijan.vscode-mysql-client2
WP-CLI
Чтобы установить WP-CLI нужно
#connect to docker node
docker exec -it docker-wordpress_wordpress_1 /bin/bash
и далее следуем этой инструкции
следовать этой иструкции https://wp-cli.org/#installing .
НО! Тк в докере испльзуются права root, то команда wp
будет постоянно просить ввести ключ —allow-root
Чтобы этого не делать постоянно нужно просто создать alias.
Ссылка на источник:
https://github.com/wp-cli/wp-cli/issues/1838#issuecomment-219641029
echo 'alias wp="wp --allow-root"' >> ~/.bashrc
Выставляем права для папки с WP
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;