Не давайте свои логины и пароли непроверенным людям, не записывайте их на стикерах в офисе, Вам же не приходит в голову оставить ключи от квартиры с запиской с адресом где нибудь в людном месте!
Что такое Docker?
Docker - это инструмент позволяющий Вам сделать виртуальную копию Вашего сайта, которую Вы сможете передать разработчикам, аудиторам, Seo-специалистам для проведения работ и будете уверены, что с Вашим реальным сайтом все будет в порядке, так как Вы не должны теперь передавать логины и пароли третьим лицам!
Зачем он нужен владельцу сайта?
Как я описал ранее, Вы получаете виртуальную копию Вашего сайта, это значит что Вы полностью сохраняете контроль над Вашим реальным сайтом, у Вас нет необходимости передавать такую критическую информацию как логины и пароли от админки сайта, от панели управления хостингом и протоколы доступа по SSH, SFTP/FTP. А это значит - Вы и Ваш сайт в полной безопасности!
Разработчик, аудитор или SEO-специалист проведут все необходимые работы у себя на локальном компьютере, а Вы сможете через TeamViewer, Skype или аналогичные сервисы посмотреть на результат, и уже после этого, убедившись в качестве выполненных работ, принять решение доверить ли доступы к Вашему сайту и хостинг панели.
Также Вы можете сохранить конфиденциальность Вашего домена (адрес сайта), так как в Docker Вы можете задать ему произвольное имя!
Как сделать копию Вашего сайта с помощью Docker
Если у Вас есть представление о командной строке (для Windows) и терминале (Mac OS и Linux), и Вы умеете делать импорт-экспорт Баз Данных используя Вашу хостинг панель или PHPMySQLAdmin, то Вы вполне можете сделать это все самостоятельно!
Либо нанять специалиста на фриланс ресурсах (FL.ru и аналогичных), предоставить ему все доступы, а затем проверив работу обязательно сменить все пароли! Как правило специалист затратит от 1,5 до 2 часов. И в итоге передаст Вам готовый архив, который Вы сможете самостоятельно проверить.
Установка Docker на Windows и MacOS
Тут все просто переходим по ссылке (https://www.docker.com/get-started), выбираем версию для своей ОС и следуем инструкции установщика.
В итоге у Вас на компьютере есть Docker.
Делаем копию Базы данных сайта
Для этого Вам нужно будет войти в панель управления хостингом и сделать дамп (бэкап БД) используя либо встроенный в хостинг панель инструмен (можете уточнить в технической поддержке Вашего хостинга), или через PHPMySQLAdmin или аналог, у большинства хостинг провайдеров есть его поддержка.
Так же Вы можете напрямую обратиться в техническую поддержку Вашего хостинг провайдера и попросить сделать дамп БД, специалисты сделают его и предоставят Вам ссылку на скачивание архива дампа БД.
Делаем копию файловой структуры Вашего сайта
Это так же можно сделать через хостинг панель Вашего сайта, перейдя в файловом менеджере хостинг панели к корневому каталогу Вашего сайта (там где находится index.php) и выделив все файлы создать архив, который потом можно будет скачать на Ваш компьютер.
Так же Вы можете напрямую обратиться в техническую поддержку Вашего хостинг провайдера и попросить сделать архив с файловой структурой корневого каталога Вашего сайта. В результате Вам также предоставят ссылку для скачивания.
Создаем копию Вашего сайта используя Docker
Скачав архивы с БД и файловой структурой Вашего сайта Вы можете приступить к созданию виртуальной копии Вашего сайта, для этого нам будет необходимо создать папку (например в Документах или на Рабочем столе) с названием проекта, например my-site (название можете выбрать произвольное, но обязательно используя латинские буквы, а не кириллицу).
Затем в папке my-site Вам нужно создать файл docker-compose.yml в котором будут содержаться данные о том какую версию PHP использует Ваш сайт, какой веб-сервер и БД.
Убедитесь что файл сохранен в кодировке UTF-8
Теперь посмотрим, что нам нужно записать в docker-compose.yml, для этого зайдите в админку Вашего сайта и откройте “отчет о состоянии” он находиться по этой ссылке (для Drupal) http://your-site.ru/admin/reports/status, где your-site.ru - это Ваш домен.
На странице отчета Вы увидите какие версии PHP и БД используются у Вас на хостинге и какой веб-сервер используется, эту информацию Вам нужно будет записать, вот скриншот:
Отлично, теперь откроем docker-compose.yml который находиться в папке my-site и напишем инструкцию для Docker и укажем версии PHP, MySQL, Apache.
Внимание - на Вашем хостинге могут использоваться другие веб-серверы БД (например MariaDB, PostgreSQL и прочее) и вместо Apache может использоваться Nginx или другой, в этом случае пишите в комментариях или в мессенджеры (они внизу этой страницы) и я Вас проконсультирую!
docker-compose.yml
version: "3.3"
services:
# Настроавиваем контейнер для PHP
php:
image: wodby/drupal-php:7.4 # Указываеи используемую на Вашем сайте версию PHP, достаточно только две первые цифры, в моем случает это вместо 7.4.3 указвать 7.4
# вместо my-site можете указать Ваше название
container_name: my-site-php
environment:
PHP_SENDMAIL_PATH: /usr/sbin/sendmail -t -i -S opensmtpd:25
DB_HOST: mysql
DB_PORT: "3306"
DB_USER: user
DB_PASSWORD: user
DB_NAME: database
DB_DRIVER: mysql
PHP_FPM_USER: wodby
PHP_FPM_GROUP: wodby
volumes:
- ./www:/var/www/html
# Настроавиваем контейнер для MySQL
mysql:
image: mysql:5.7 # Указываеи используемую на Вашем сайте версию MySQL, достаточно только две первые цифры, в моем случает это вместо 5.7.23-24 указвать 5.7
# вместо my-site можете указать Ваше название
container_name: my-site-mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_PASSWORD: user
MYSQL_USER: user
MYSQL_DATABASE: database
# Позволяем MySQL хранить Базу данных test в папке db которая автоматически будет создана в папке нашего проекта my-site
volumes:
- ./db:/var/lib/mysql
# Настроавиваем контейнер для PHPMySQLAdmin
pma:
image: phpmyadmin/phpmyadmin
# вместо my-site можете указать Ваше название
container_name: my-site-pma
environment:
PMA_HOST: mysql
PMA_USER: user
PMA_PASSWORD: user
UPLOAD_LIMIT: 1G
PMA_PORT: "3306"
labels:
# вместо my-site можете указать Ваше название но оставьте .local
- "traefik.http.routers.my-site-pma.rule=Host(`pma.my-site.local`)"
depends_on:
- mysql
apache:
# Указываеи используемую на Вашем сайте версию Apache, достаточно только первую цифру, в моем случает это вместо 2.2.15 (CentOS) указвать 2
image: wodby/apache:2
# вместо my-site можете указать Ваше название
container_name: my-site-apache
depends_on:
- php
environment:
APACHE_LOG_LEVEL: debug
APACHE_BACKEND_HOST: php
APACHE_VHOST_PRESET: php
APACHE_DOCUMENT_ROOT: /var/www/html
volumes:
- ./www:/var/www/html
labels:
# вместо my-site можете указать Ваше название но оставьте .local
- "traefik.http.routers.my-site-apache.rule=Host(`my-site.local`)"
# Настройки для Traefik
traefik:
image: traefik
# вместо my-site можете указать Ваше название
container_name: my-site-traefik
restart: "always"
ports:
- "80:80"
command: --api.insecure=true --providers.docker
volumes:
- /var/run/docker.sock:/var/run/docker.sock
# Настройки для Portainer
portainer:
image: portainer/portainer
# вместо my-site можете указать Ваше название
container_name: my-site-portainer
command: --no-auth -H unix:///var/run/docker.sock
volumes:
- /var/run/docker.sock:/var/run/docker.sock
labels:
- "traefik.http.routers.my-site-portainer.rule=Host(`portainer.my-site.local`)"
Теперь давайте добавим в HOSTS вашего компьютера my-site.local, для этого сделаем следующее:
Для Windows командная строка от имени администратора:
notepad C:\Windows\System32\drivers\etc\hosts
Для MacOS:
sudo nano /private/etc/hosts
Добавим в открывшейся файл строки:
127.0.0.1 my-site.local
127.0.0.1 pma.my-site.local
127.0.0.1 portainer.my-site.local
Проверяем правильно ли создан docker-compose.yml
Для проверки корректности созданного Вами файла docker-compose.yml нужно запустить командную строку (для Windows) или терминал (для MacOS и Linux) и перейти в созданную Вами папку my-site, сделать это можно командой:
cd /путь/до/папки/my-site
И далее выполнить команду:
docker-compose up -d
В результате, если Вы не допустили ошибок, увидите примерно такой результат:
Теперь Вам доступны следующие адреса:
http://my-site.local/ - там Вы увидите надпись Forbidden You don't have permission to access this resource, значит веб-сервер работает.
http://pma.my-site.local/ - это доступ к PHPMySQLAdmin.
http://portainer.my-site.local/ - это инструмент для управления Docker, он может понадобиться разработчикам Вашего сайта.
Загружем файлы с Вашего реального сайта в Docker
Для этого распакуем скачанный ранее файловый архив в папку www которая появиться автоматически в Вашей папке my-site. В результате Вы увидите, что-то подобное:
Теперь откроем http://my-site.local/, там вы увидите либо сообщение об ошибках или вот такое сообщение The provided host name is not valid for this server. Не пугайтесь, Вам нужно изменить настройки settings.php в папке sites/default/settings.php откройте его и найдите строчку $settings['trusted_host_patterns'] она как правило в самом низу файла и замените её на:
$settings['trusted_host_patterns'] = [
'^my-site\.local$',
];
Теперь Вы увидите либо на странице http://my-site.local/ сообщение The website encountered an unexpected error. Please try again later. Это значит сайт пока не видит Базу данных, давайте в sites/default/settings.php найдем такую строчку $databases['default']['default'] и заменим её на:
$databases['default']['default'] = array (
'database' => ‘database’,
'username' => ‘user’,
'password' => ‘user’,
'prefix' => '',
'host' => ‘mysql’,
'port' => '3306',
'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
'driver' => 'mysql',
);
На странице http://my-site.local/ Вы увидите вот такое сообщение от Drupal
Отлично, Ваш сайт теперь видит Базу данных, но не спешите следовать инструкциям по установке Drupal, так как у Вас есть архив с Базой данных Вашего реального сайта!
Давайте её импортируем в Docker.
Загружаем Базу Данных с Вашего реального сайта в Docker
Для этого открываем http://pma.my-site.local/ выбираем Базу Данных “database” и переходим на вкладку “Импорт”, далее нажав на кнопку “Обзор” выбираете файл с дампом (бекапом) Вашей БД с реального сайта и нажимаем кнопку “Вперед” внизу страницы.
В результате вы увидите сообщение “Импорт успешно завершен”. Это значит, что теперь по адресу http://http://my-site.local/ Вы увидите полную копию Вашего реального сайта!
Осталось совсем немного.
Меняем пароль от админки Вашего сайта
Так как мы осуществили импорт БД с Вашего реального сайта, то логин и пароль от админки сейчас находиться в Docker, это не безопасно, так что давайте их поменяем. Для этого заходим в админку Вашего сайта в Docker’е http://my-site.local/user/login и вводим логин и пароль от Вашего реального сайта.
Перейдите на страницу http://my-site.local/admin/people и отсортируйте список пользователей по времени регистрации и выбрав первого пользователя (или Ваш логин) нажмите на “Редактировать”
Там просто меняете (по желанию) логин и пароль, сохраняете изменения! Теперь никто не узнает пароль от Вашего реального сайта!
Пишем инструкцию для разработчиков
И самое простое, создаем в папке my-site текстовый файл README.txt и там пишем логин и пароль (те что Вы поменяли в Docker версии сайта) от админки:
login: ваш_логин
password: ваш_пароль
Где вместо ваш_логин и ваш_пароль указываете те, которые указали ранее.
Финал
Теперь для того чтобы передать Ваш сайт разработчикам или другим специалистам, достаточно просто сжать (архивировать) папку my-site и передать её на флешке или через облако, никаких доступов и приватной информацией больше делиться не нужно!
Также не забудьте удалить с Вашего компьютера скачанные Docker’ом файлы, образы, контейнеры, про это я писал в статье Docker для ленивых: Локальная разработка сайтов. Часть 1, в самом конце статьи под заголовком “Как очистить компьютер от скачанных Docker’ом файлов”.
Комментарии