# Учебное приложение Laravel Минимальное окружение: PHP 8.2, Composer 2 и Nginx. MySQL и Redis для задания с хранением обращений в JSON не нужны. ## Первое создание проекта Команды выполняются из каталога Docker. Сначала запустите Docker/OrbStack. ```sh docker compose build php rm -f src/.gitkeep docker compose run --rm --no-deps php composer create-project laravel/laravel . "^12.0" ``` Команда create-project выполняется только один раз, в пустом src. Она создаёт Laravel, устанавливает зависимости и выполняет стандартные скрипты установки. SQLite поддерживается образом для стандартных скриптов Laravel. В src/.env установите: ```dotenv APP_ENV=local APP_DEBUG=true APP_URL=http://localhost:8080 APP_TIMEZONE=Asia/Irkutsk APP_LOCALE=ru APP_FALLBACK_LOCALE=en SESSION_DRIVER=file CACHE_STORE=file QUEUE_CONNECTION=sync FILESYSTEM_DISK=local ``` В src/config/app.php задайте: ```php 'timezone' => env('APP_TIMEZONE', 'Asia/Irkutsk'), ``` Если APP_KEY остался пустым: ```sh docker compose run --rm --no-deps php php artisan key:generate ``` Запуск: ```sh docker compose up -d docker compose exec php php artisan config:clear ``` Сайт: http://localhost:8080. Далее добавьте контроллеры, маршруты и Blade-шаблоны из инструкции в чате. JSON-файлы обращений храните на диске local в storage/app/private/feedback. Повторите несекретные настройки в .env.example, оставив APP_KEY пустым. ## Повторный запуск после клонирования готового проекта ```sh cp -n src/.env.example src/.env docker compose build php docker compose run --rm --no-deps php composer install docker compose run --rm --no-deps php php artisan key:generate docker compose up -d ``` Ключ генерируется при первоначальной настройке, а не при каждом запуске. ## Версия приложения После реализации и проверки задания из корня Web_technology: ```sh git add Docker/ git diff --cached --stat git commit -m "Implement Laravel feedback application" git tag -a v1.0 -m "Laravel feedback application v1.0" ``` Папка Docker использует существующий репозиторий Web_technology. Тег v1.0 создаётся для готового приложения, а не пустого окружения.