Запускает wordpress локально при помощи docker.


Как же глупо не пользоваться тем, что предлагает нам продвинутое человечество.

Речь сейчас идет о супер технологии docker. Не коснулся бы я ее так скоро, если бы не пришлось выполнять задачи на wordpress.

Чтобы не запускать отдельный тестовый хост для разработки (на боевом никаких экспериментов!), на помощь нам приходит docker.

Вот что говорит Википедия.
Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесён на любую Linux-систему с поддержкой cgroups в ядре, а также предоставляет среду по управлению контейнерами.

Первостепенную задачу, которую я себе поставил - это развернуть локально сайт на wordpress, с файлами и базой данных, которые расположены тоже локально, а не в контейнерах. При запуске докера все изменения, которые я оставил с моей последней работы, должны оставаться.

Мне так же требовался phpMyAdmin, чтоб администрировать БД, а так же смотреть изменения, которые я вносил в базу.

Начнем с того, что в разделе с проектами необходимо развернуть раздел с вашим сайтом.
Для примера возьмем webteam.by.
Далее, провалившись в раздел webteam.by, создадим там еще 2 раздела.
Первый - mysql (он будет смонтирован в докер как место локации mysql) и второй - www (он будет смонтирован как место физического хранения файлов вашего контейнера).
Там же в корень раздела webteam.by положим файл docker-compose.yml.
Этот файл содержит настройки для вашего docker контейнера. Там описываются все образы и то, как они будут запускаться. В том числе и откуда.
Естественно на вашей машине должен быть установлен docker. Как установить его в зависимости от вашей системы можете почитать в нете.
Вот содержимое моего docker-compose.yml




Он описывает все зависимости, а так же указывает к какому разделу какой образ будет смонтирован.
В консоли переходим в корень раздела webteam.by и делаем запуск контейнера командой docker-compose up -d.
После того, как все контейнеры будут запущены, у вас должно открыться диалоговое окно по установке wordpress по урлу в браузере
http://localhost:8000/

После установки вы получите чистый wordpress, который будет стартовать каждый раз, когда вы будете запускать docker - контейнер.

Как развернуть сайт из бэкапа я хороших примеров не нашел, поэтому поступал таким образом:
файлы накатывал из бэкапа локально в раздел www,
а базу данных командой

где
dump_bd.sql - дамп базы,
test_mysql_1 - имя вашего контейнера mysql (у меня оно было таким),
db_user - имя пользователя бд. Нужно брать эти данные из файла docker-compose.yml,
db_pass - пароль для пользователя db_user,
db_name - название базы данных. Так же из docker-compose.yml

Если вам потребуется сделать еще какие-то манипуляции с базой, например создать нового пользователя или изменить права у существующего пользователя базы, то к ней можно подключиться в контейнере таким образом
docker exec -it test_mysql_1 mysql -uroot -p
далее последует диалоговое окно для ввода пароля.
Берем эти данные из файла docker-compose.yml, параметр MYSQL_ROOT_PASSWORD.
После этого можете работать с базой напрямую.
Например

задать другой пароль.
Или

FLUSH PRIVILEGES;
задать права пользователю.


Есть еще полезные sql запросы локально в том случае, если вам нужно изменить абсолютные ссылки, указанные в бд, на локальные.


Если у вас локально не установлен для сайта сертификат безопасности (как его устанавливать для докера в нете тоже полно статей), вы можете сделать запрос в БД, чтоб поменять схему подключения для абсолютных ссылок.


Как скормить докеру бэкап базы данных и бэкап файлов, чтоб при запуске контейнеров он сам все установил, я информации не нашел. Точнее она была, но у меня не получилось сделать это быстро и я решил все путем, который описал выше. Возможно, у кого то есть положительный опыт в данном вопросе, поделитесь, пожалуйста, в комментариях, либо напишите нам на е-мэйл.

Всем удачи!

Комментарии

Оценка:
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке