Как вы, возможно, знаете, 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 успешно работает.