Докеризируйте свой проект Laravel в один миг
16 апреля 2022 г.Как вы, возможно, знаете, Docker состоит из набора контейнеров, работающих независимо друг от друга. Это отлично, так как все члены команды могут работать над одними и теми же предметами. Docker может виртуализировать уровень ОС и собирать все необходимые пакеты. Когда мы говорим о Docker, мы говорим о запуске программы в контейнере с нашими пользовательскими настройками. Мы могли бы определить эти настройки в файле Dockerfile.
Каковы преимущества Docker?
Возможно, до этого вы использовали сервер Apache, что хорошо, но не подходит и не удобно. Докер хорош тем, что:
- Все участники получают доступ к одним и тем же пакетам.
- Любой может видеть последние изменения, сделанные другими.
- Все настройки и версии одинаковые.
Итак, с этими преимуществами мы могли бы перейти к учебнику. Я предполагаю, что у вас установлен Docker в вашей системе Linux и вы знакомы с Laravel.
Установка Laravel
- создайте каталог и назовите его как хотите.
- откройте терминал или CMD в этом каталоге и введите
composer create-project laravel/laravel example-app
- Когда вы успешно установили Laravel, перейдите в папку Laravel, и вот ваша первая структура Laravel.
- заходим в общую папку и вырезаем там все файлы.
- вы должны перейти к корневому файлу вне папки Laravel.
- вставьте их сюда следующим образом:
Мы сделали это, потому что хотели запустить Laravel без команды php artisan serve
. Из корня мы должны установить основной маршрут к папке Laravel и иметь доступ ко всем им.
Докеризация Laravel
- Теперь откройте файл index.php в корневом проекте и измените его, как показано ниже:
Поэтому мы изменили его и поместили «Laravel» (имя каталога нашего проекта) во все пути.
- Просто создайте папку Dockerfile в корне (что означает корневой каталог вашего проекта), и все готово. Должно быть именно это имя с большой буквы Д.
- Теперь введите эти коды в свой Dockerfile:
ИЗ php:7.4-apache
КОПИРОВАТЬ ./php.ini/etc/php/7.4/apache2/php.ini
ЗАПУСТИТЬ a2enmod переписать
РАБОЧИЙ КАТАЛОГ /var/www/html
ЗАПУСТИТЬ docker-php-ext-install mysqli
Имейте в виду, что вы можете установить версию PHP по своему усмотрению.
Кроме того, команда «RUN a2enmod rewrite» используется для доступа к подпапкам в вашей корневой системе Apache.
WORKDIR
— это путь к вашей корневой системе Apache. В Windows это C:\HTTPD\Apache24\htdocs
, тогда как в Linux это /var/www/html
.
- В корне создайте файл php.ini и оставьте его пустым.
Пришло время докеризовать наш проект Laravel.
- В корневом каталоге, где находится Dockerfile, откройте терминал и введите
docker build -t laravel:01
.
docker build
используется для создания нового образа в Docker. -t
означает имя тега, которому вы можете присвоить любое имя, а точка .
означает все ваши текущие каталоги и подкаталоги вашего проекта.
- Теперь вы можете проверить с помощью команды
docker images
, был ли образ создан или нет.
Настала очередь контейнера. Как вы, возможно, знаете, контейнер — это образ Docker для хранения и выполнения нескольких пакетов в Docker. Как следствие, мы должны спроектировать наш контейнер, чтобы он работал. Итак, введите эту команду:
docker run -d -p 84:80 -name apachelaravel -v "$PWD":/var/www/html laravel:01
«запуск докера» очевиден; это подразумевает строительство и эксплуатацию контейнера. -p
указывает на установку порта 84 на истинный порт 80 нашей системы Apache.
Вы можете проверить, запущен ли ваш контейнер, введя эту команду docker container ls -a
Теперь в вашем браузере просто введите http://localhost:84
Если вы видите такую ошибку:
Не удалось получить доступ к потоку или файлу "/var/www/html/laravel/storage/logs/laravel.log" в режиме добавления: невозможно открыть поток: Отказано в доступе Исключение при попытке записи в журнал
Не волнуйтесь, вы можете решить это просто. Просто перейдите в каталог Laravel, откройте терминал и введите эти три команды одну за другой:
chmod -R gu+w хранилище
chmod -R guo+w хранилище
кеш php-мастера: очистить
Эти инструкции позволяют серверу Apache получить доступ к каталогу хранилища в Laravel.
И вот вы здесь. Просто перезагрузите страницу, и вы увидите, что Laravel успешно работает.
Оригинал