Skip to content

Latest commit

 

History

History
143 lines (110 loc) · 9.62 KB

install.md

File metadata and controls

143 lines (110 loc) · 9.62 KB

Для запуска данного шаблона необходимы docker и docker-compose

Обратите вниимание на особенности установки - apt не позволяет добыть нужные версии

Ниже приведу последовательность действий для запуска на Ubuntu

1.Установить docker и docker-compose по ссылкам выше.

1.1. Создать файл локальных настроек .env
.env_example - пример локальных настроек docker-compose. Должен быть скопирован в .env для запуска в режиме разработки docker-compose -f docker-run/docker-compose.yml up -d или тестов docker-compose -f docker-codeception-run/docker-compose.yml up -d. Файл .env должен присутствовать в папке из которой выполняется команда docker-compose.

cp .env_example .env
ln -s  ../.env ./docker-codeception-run/.env
ln -s  ../.env ./docker-run/.env

2.Создать папку проекта

$ git clone https://github.com/bscheshirwork/docker-yii2-advanced-rbac newproject

либо вручную, если отсутствует git - из архива В ней [docker-compose.yml](./docker-run/docker-compose.yml) служит для установки конфигурации Вашей будущей связки сервисов. Для дебага не забудьте изменить соответствующую переменную окружения, подставив адрес вашей машины вместо указанного для примера.

3.Загрузить и запустить сервис php

Если Вы хотите запустить на одной машине несколько копий такой сборки - обратите внимани на то, чтобы папки (и соответственно префикс композиции, в примере "dockerrun_") имели разное название. Также переменные окружения для mysql необходимо дифференцировать по проектам. Несоблюдение данного правила будет приводить к ошибкам подключения к базе.

$ cd newproject/docker-run
$ docker-compose run php /bin/bash
Creating network "dockerrun_default" with the default driver
Creating dockerrun_db_1
root@abfe3b3ca645:/var/www/html#

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

root@abfe3b3ca645:/var/www/html#

Одиночные команды можно выполнить и без этого docker-compose -f docker-run/docker-compose.yml run --rm php composer update

4.Загрузить зависимости composer в контейнере. Обнление потребует github token (см. установку yii2 ), его вы можете найти на своей странице в разделе https://github.com/settings/tokens

Кеш композера можно вынести из контейнера, для поддержания его в чистоте и ускорения работы новых контейнеров сервиса php

- ~/.composer/cache:/root/.composer/cache
composer update -vv

5.Инициализировать шаблон скриптом, аналогично исходному шаблону advanced

Выберете покружение development [0] в скрипте инициализации

./init

что создаст настройки и скрипт yii для следующего шага. Настройки базы уже установлены для окружения, их согласно вашим нуждам можно изменить(docker-codeception-run/docker-compose.yml, docker-run/docker-compose.yml, php-data/common/config/main.php - требуется root).

Внимание! Возникла ошибка доступа? При изменении настроек базы после её первого запуска не забываем останавливать композицию docker-compose down и чистить файлы базы sudo rm -rf ../mysql-data/*; Возникла ошибка SQLSTATE[HY000] [2002] Connection refused - база не успела поднятся.

5.1.Выполнить миграции внутри контейнера

/usr/local/bin/docker-compose -f /home/dev/projects/docker-yii2-app-advanced-redis/docker-compose.yml exec php ./yii migrate/up

Самое время создать дамп базы (например, такой метод использовался при создании используемого в тестах). При запущенном контейнере dockerrun_db_1 либо dockercodeceptionrun_db_run_1 используем согласно документации в описании образа

docker exec dockerrun_db_1 sh -c 'exec mysqldump -uroot -p"$MYSQL_ROOT_PASSWORD" yii2advanced' > php-data/common/tests/_data/dump.sql

При восстановлении необходимо добавить ключ -i для перенаправления ввода.

docker exec -i dockercodeceptionrun_db_1 sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" yii2advanced' < php-data/common/tests/_data/dump.sql

5.2.При выполнении последней мигации вы проведёте инициализацию rbac см. общая инструкция установки шаблона. Первый пользователь получит права администратора.

Создать пользователя можно тут же, командой

./yii user/create [email protected] login

В случае ошибки на этапе создания первого пользователя права не будут выданы. Верните базу в первоначальный вид и попробуйте снова.

email можно прочесть в папке php-data/console/runtime/mail

Примечание: Для отправки почты (сообщение о регистрации, восстановление пароля, подтверждение ночты в модуле пользователей) необходимо настроить отправку почты, согласно соответствующему пункту инструкции

6.Выйти из контейнера (exit, ctrl+c) и запустить комплекс сервисов

$ docker-compose up -d
Creating network "dockerrun_default" with the default driver
Creating dockerrun_db_1
Creating dockerrun_php_1
Creating dockerrun_nginx_1

Сервис доступен по адресу 0.0.0.0:8080 - frontend, 0.0.0.0:8081 - backend

Для работы с xdebug используются переменные среды. Например, remote_host может быть вашим IP адресом (вне docker network) или вашим DNS, если вы используете dns-server (например, локальный dns server или dns-server на вашем роутере. В последнем случае у вас может быть DNS совпадающее с именем машины). Docker может использовать данные этого dns сервера внутри запущенного контейнера и, соответственно, найти нуный IP.

Для mac OS возможно использование специального служебного имени хоста host.docker.internal.

cat /etc/hosts
127.0.1.1	dev-Aspire-V3-772
XDEBUG_CONFIG: "remote_host=dev-Aspire-V3-772 remote_port=9001"
PHP_IDE_CONFIG: "serverName=docker-yii2-advanced-rbac"

В PHPStorm настроить следующее: Добавить сервер с указанным в перемнной PHP_IDE_CONFIG именем Settings > Languages & Frameworks > PHP > Servers: [Name => docker-yii2-advanced-rbac] В нём изменить path mapping. Settings > Languages & Frameworks > PHP > Servers: [Use path mapping => True, /home/user/yourprojectname/php-data => /var/www/html] Изменить порт по умолчанию 9000 на используемый в настройках Settings > Languages & Frameworks > PHP > Debug: [Debug port => 9001] см. docker-run/docker-compose.yml#L13 remote_port=9001

Обновление к последней версии MySQL

Для существующих проектов, использующих MySQL 8.0.12 необходимо выолнить стандартный скрипт обновления:

docker-compose up -d
docker-compose exec mysql mysql_upgrade -uroot -p

Подробности в описании обновлений https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-13.html