1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/khs1994-docker-lnmp

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
laravel.md 11 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 08.03.2025 02:45 c4ee536

Лучшие практики Laravel

Установка Laravel

$ cd app

$ lnmp-laravel new laravel

# Вышеуказанный командный запрос установит последнюю основную версию Laravel (10.x). Если вам требуется установить конкретную версию, вы можете указать её.

# $ lnmp-laravel new FOLDER VERSION
# $ lnmp-laravel new laravel5.5 5.5

# Также можно использовать `composer` для установки

# $ lnmp-composer create-project laravel/laravel laravel5.5 "5.5.*"

Дополнительную информацию смотрите здесь.

Настройка файла .env в Laravel

Правильно настройте HOST сервисов. Ввод значения 127.0.0.1 может привести к невозможности подключения к сервису, причины этого будут подробно объяснены ниже.

DB_HOST=mysql

REDIS_HOST=redis

MEMCACHED_HOST=memcached

Установка laravel-ide-helper

$ lnmp-composer require --dev barryvdh/laravel-ide-helper
$ lnmp-php artisan ide-helper:eloquent
$ lnmp-php artisan ide-helper:generate
$ lnmp-php artisan ide-helper:meta
$ lnmp-php artisan ide-helper:models

.gitignore

# .gitignore

.phpstorm.meta.php
_ide_helper.php

.php_cs.cache

Проблема медленной работы Laravel на Windows

  • Docker Desktop использует Docker в виртуальной машине, проектные файлы находятся на Windows
  • Docker Desktop (WSL2) использует Docker в WSL2 (все еще виртуальная машина), проектные файлы находятся на Windows

В обоих случаях проектные файлы находятся на Windows, что является межмашинным соединением, поэтому возникают проблемы производительности файловой системы.В этих ситуациях директория vendor может использовать данные в виде тома (том находится в виртуальной машине). Описание в vsCode и предлагаемое решение имеют аналогичные принципы работы.Из-за проблем производительности файловой системы рекомендуется не хранить проектные файлы на Windows.

Альтернативное решение — это расположение проектных файлов в WSL2, есть два варианта:

Первый вариант — использование vsCode remote WSL для удалённого доступа к WSL

Проектные файлы могут быть расположены в WSL2 и использоваться с PHPStorm, см. https://github.com/khs1994-docker/php-demo

1. Включите интеграцию WSL2 в настройках Docker

Ресурсы -> WSL INTEGRATION -> Enable integration with additional distros: -> Включите вашу WSL2 (например: Ubuntu)

2. Установите расширение для vsCode

$ code --install-extension ms-vscode-remote.remote-wsl

3. Измените переменные в файле .env

APP_ROOT=\\wsl$\ubuntu\app

4. Добавьте каталог lnmp/bin в PATH WSL2

# Выполните в Windows Terminal
$ cd ~/lnmp/bin

$ $env:WSLENV="LNMP_BIN_WIN_PATH/p"
$ $env:LNMP_BIN_WIN_PATH=$PWD

$ wsl -d <WSL_название> -- sh -c 'echo $LNMP_BIN_WIN_PATH'
# Добавьте результат в переменную окружения PATH WSL2

Вышеуказанные шаги следует выполнить один раз, затем продолжайте с последующими шагами

5. Запустите LNMP

$ ./lnmp-docker up

6. Установите Laravel в папку laravel

$ lnmp-docker code

При выполнении вышеуказанных команд откроется окно VS Code.

В меню VS Code выберите View -> Terminal, затем выполните следующие команды:```bash

Установите Laravel в папку laravel

При использовании алиаса Alibaba Cloud для установки Laravel 10 могут возникнуть ошибки, поэтому временно используйте другой алиас

$ lnmp-composer config -g repos.packagist composer https://mirrors.cloud.tencent.com/composer/

Возврат к алиасу Alibaba Cloud

lnmp-composer config -g repos.packagist composer https://mirrors.aliyun.com/composer/

$ lnmp-laravel new laravel

Из-за проблем с правами доступа файлы могут быть недоступны для редактирования, поэтому измените права доступа

$ sudo chown -R 1000:1000 /app $ sudo chmod -R 777 /app/laravel/storage/app $ sudo chmod -R 777 /app/laravel/storage/logs $ sudo chmod -R 777 /app/laravel/storage/framework


**8. Ежедневные шаги разработки**

```powershell
$ lnmp-docker code laravel

При выполнении вышеуказанных команд откроется окно VS Code.

В меню VS Code выберите View -> Terminal, затем выполните следующие команды:

Пример использования компонента laravel/jetstream:

$ lnmp-composer require laravel/jetstream

$ lnmp-php artisan jetstream:install inertia

$ lnmp-npm install

$ lnmp-npm run build

$ lnmp-php artisan migrate

# Откройте http://127.0.0.1/register для просмотра страницы

Второе решение — использование контейнеров VS Code Remote Containers для удалённой разработки

1. Активируйте интеграцию WSL2 в настройках Docker

Resources -> WSL INTEGRATION -> Enable integration with additional distros: -> Активировать ваш WSL2 (например: Ubuntu)

2. Установите расширение VS Code

$ code --install-extension ms-vscode-remote.remote-containers

3. Измените переменные в файле .env

# .env
APP_ROOT=\\wsl$\ubuntu\app

# Добавьте сервис vscode-remote-container-workspace
LNMP_SERVICES="nginx mysql php8 redis vscode-remote-container-workspace"

Вышеописанные шаги следует выполнить один раз, последующее развитие начинается с нижеприведённых шагов

4. Запустите LNMP

$ ./lnmp-docker up

5. Откройте VSCode

В левом нижнем углу выберите Открыть удалённое окно -> Remote-Containers: Attach to Running Container... -> Выберите контейнер lnmp_vscode-remote-container-workspace_1 -> Откроется новое окно -> В левой части выберите Открыть папку -> Введите /app

В меню VS Code выберите Просмотр -> Консоль

В открывшейся консоли выполните команды, в данном примере это установка компонента laravel/jetstream:```bash

Установите laravel в папку laravel

$ composer create-project --prefer-dist laravel/laravel laravel

Из-за проблем с правами доступа файлы могут быть недоступны для редактирования, поэтому измените права доступа

$ WSL2_DIST=ubuntu

$ wsl -d $WSL2_DIST -u root -- chown -R 1000:1000 /app

$ wsl -d $WSL2_DIST -u root -- chmod -R 777 /app/laravel/storage/app

$ wsl -d $WSL2_DIST -u root -- chmod -R 777 /app/laravel/storage/logs

$ wsl -d $WSL2_DIST -u root -- chmod -R 777 /app/laravel/storage/framework

$ cd laravel

$ composer require laravel/jetstream

$ php artisan jetstream:install inertia Vue scaffolding installed successfully. Пожалуйста, выполните "npm install && npm run dev", чтобы скомпилировать ваш свежий шаблон. Шаблон аутентификации создан успешно.


В Windows консоли выполните следующие команды:

```powershell
$ lnmp-docker code-run -w /app/laravel npm install

$ lnmp-docker code-run -w /app/laravel npm run dev

# Откройте http://127.0.0.1/register для просмотра страницы

Расширения для VSCode связанные с PHP

Запуск очередей Laravel (Queue)

  • Способ 1: Используйте системные демонизаторы уровня системы (например systemd) для запуска следующих команд. Подробнее см. systemd
$ lnmp-docker php8-cli php /app/laravel/artisan queue:work --tries=3
  • Способ 2: См. config/s6 или config/supervisord, чтобы запустить несколько сервисов одновременно в одном контейнере (оба способа включают примеры запуска очередей Laravel).

Запуск планировщика Laravel (Schedule)

См. вышеупомянутый раздел о запуске очередей.```bash $ lnmp-docker php8-cli php /app/laravel/artisan schedule:run


## Запуск Laravel horizon

* <https://laravel.com/docs/10.x/horizon>

```bash
$ lnmp-composer require laravel/horizon

$ lnmp-php artisan horizon:install

Конфигурация

Файл конфигурации config/horizon.php должен содержать массив environments, который включает текущую среду выполнения Laravel.

Пропустить проверку

Файл app/Providers/HorizonServiceProvider.php

protected function gate()
{
    Gate::define('viewHorizon', function ($user = null) {
        return true;
        return in_array($user->email, [
            'taylor@laravel.com',
        ]);
    });
}

См. описание очередей в предыдущем разделе.

$ lnmp-docker php8-cli php /app/laravel/artisan horizon
1
https://api.gitlife.ru/oschina-mirror/khs1994-docker-lnmp.git
git@api.gitlife.ru:oschina-mirror/khs1994-docker-lnmp.git
oschina-mirror
khs1994-docker-lnmp
khs1994-docker-lnmp
master