Предупреждающий знак Это мой первый пост когда-либо . Любое предложение будет высоко оценено ♥️
Laradhoc , размещенный на GitHub , является моим основным Среда разработки на основе Docker для запуска приложений Laravel .
Проверьте это и не стесняйтесь попробовать, сделайте форк, откройте проблему или запрос на извлечение. Я буду рад услышать ваши предложения, исправить свои ошибки и узнать что-то новое 😄
Я являюсь разработчиком и энтузиастом Laravel с версии 4. Мне это нравится. До Laravel существовал CodeIgniter … И даже до того, как появился чистый PHP ⚠ ️. Если я вернусь к истокам (говоря о разработке PHP), я вспомню много процедурного кода, большие тонны спагетти 🍝 , ручное включение , бесчисленные неизвестные уязвимости, грязные смеси PHP/HTML и Javascript и т. Д. 🙈 Ни ООП, ни композитора, ни PSR-2, ни фреймворков, ни ТВЕРДЫХ, шаблонов проектирования, модульных тестов. Почему Внедрение зависимостей, контейнер услуг, развертывание с нулевым временем простоя, кэширование, инструменты командной строки, работники очереди… Что? 🤨 За эти годы многое изменилось, и оно все еще меняется с возрастающей скоростью.
Y ОСТЬ 🥱 Вы говорите о коде, а не среды разработки
Вы правы. Давайте вернемся к теме. В принципе, за свою жизнь разработчика PHP я прошел через эти этапы. Я пытаюсь обобщить их.
1 – Руководство/WAMP
Установите все на свой хост буквально “вручную”. Раньше я работал на ПК с Windows и вручную загрузил zip-файл с нужной мне версией PHP. То же самое для Apache. Нет CLI. Просто служба Windows и куча конфигурационных файлов для редактирования.
Нужно обновить? Повторите те же действия. И надеюсь, что ничего не сломается 😵
Честно говоря, технологический стек все еще менялся не так быстро. Так что это было не такое уж большое дело.
О, конечно, были такие “упакованные решения”, как WAMP, но, честно говоря, я не был их большим поклонником. Они могли бы немного облегчить вашу жизнь, но я предпочел немного глубже разобраться в “строительных блоках”.
2 – Бродяга/Усадьба
Когда я обнаружил Vagrant, Homestead и эти решения на основе виртуальных машин , я помню, что это было похоже на “ВАУ” Разные конфигурации для разных приложений? Это волшебство!”. Еще одно преимущество: возможность совместно использовать в одной и той же команде разработчиков одну и ту же виртуальную машину с ее настройками, не имеет значения, работает ли ваш хост на базе Windows или macOS ( даже если я помню, что так было не всегда… ). Но эти виртуальные машины были довольно огромными, тяжелыми и не очень производительными.
3 – Докер!
А потом появился Докер! Это текущее решение, которое мы с моей командой используем для местного развития.
На мой взгляд, Докер является одним из тех изменяющих жизнь изобретений , таких как GIT , например. Это чистый гений 🎓 .
Не хочу здесь объяснять, что такое Docker, какие большие преимущества он приносит и почему вы должны принять его как можно скорее: есть тонны статей, которые объясняют все эти концепции намного лучше, чем я бы сделал.
Позвольте мне написать всего несколько слов: наряду с кодом вашего приложения (например, вашим частным репозиторием GIT) вы также предоставляете (через один или несколько файлов конфигурации) точную инфраструктуру для ее запуска: какие службы и какие версии , как они настроены и как они взаимодействуют между собой. Не имеет значения, используете ли вы Windows , Linux или macOS . Это почти как скачай это, нажми “Воспроизвести”, подожди… И вы готовы к кодированию 🤓
Последний аспект очень важен для меня: я в основном разрабатываю на рабочих станциях macOS , но также и на Windows 10 (с WSL ). Поэтому для меня очень важно иметь решения, которые работают везде .
Когда я услышал об этом, сначала я был немного напуган 😓 . Это было что-то вроде “звучит здорово, но не так просто выучить… И это еще одна тема для изучения, у меня нет времени, Усадьба работает довольно хорошо, бла-бла-бла”. Ты знаешь… оправдания .
В свободное время я начал читать какую-то статью, смотреть видео и пытаться ознакомиться с терминологией докеров: изображения, контейнеры, докер-композиция, тома и т.д. Но все равно я не мог найти конкретной причины пересмотреть свой рабочий процесс ( лень )
Затем я начал использовать некоторые Решения/продукты на основе докеров (позвольте мне назвать их Докер суперсеты , обертки ), которые довольно просты в настройке и они полностью (или почти) скрывают основную сложность (даже если она не так сложна)..
Всего несколько имен:
- Локально с помощью маховика Нужен быстрый способ запустить свой WordPress блог/приложение локально? Это красивое, простое и понятное решение
- Док Лара Полное и легко настраиваемое решение для запуска приложений Laravel . Но вскоре я обнаружил, что это довольно сложно настроить
- Ландо До сих пор , мой любимый инструмент на основе докеров . Вы можете использовать его для Laravel , WordPress и многие другие приложения. Для этого требуется только определить ваш стек (службы, версии, конфигурации и т.д.) В файле
.yaml, который вы собираетесь зафиксировать в своем репозитории. Вот так! Вы определенно хотите попробовать это.
Что не так с вышеупомянутыми продуктами? Ничего! Хорошо, почти ничего 😅 Например Ландо , которое я продолжаю любить, не так быстро загружается. Еще один недостаток заключается в следующем: для Lando требуется определенная заблокированная версия Docker. Я помню, что однажды, после обновления Docker (с помощью автоматического обновления), Ландо внезапно сломался, и я не мог понять, что происходит. После многих тестов и некоторых поисков возникла проблема с GitHub, и я, наконец, понял, что мне нужно понизить рейтинг Docker. То же самое для Laradock : эти продукты предназначены для работы “из коробки”, но рано или поздно вы столкнетесь с конфигурацией, которая работает на macOS, но не на Windows (или наоборот), или с определенной настройкой или комбинацией служб/версий, что приводит к неожиданному поведению.
Но это не главная причина . Мы все знаем, что идеального программного обеспечения не существует (особенно того, которое вы написали и которым так гордитесь 😝 ), и каждый продукт рано или поздно столкнется с какой-то проблемой, ошибкой, неожиданным поведением и так далее.
Итак, в чем дело? 🤷 Мужской знак
После того, как я начал использовать эти продукты, мне стало любопытно 👀 и захотелось узнать больше о Docker. Я хотел поэкспериментировать сам, понять и применить на практике все концепции, о которых я читал в предыдущие месяцы. Я прочитал больше статей, просмотрел несколько репозиториев с открытым исходным кодом, затем попытался обобщить все в проекте, который я мог бы использовать в своей повседневной жизни разработчика. После некоторого первоначального сомнения я сказал себе:
Хорошо, давайте попробуем быть “бесстыдными”. Я хочу разместить свой проект на GitHub, даже если у меня мало или совсем нет опыта работы с открытым исходным кодом. Что может быть не так? В худшем случае кто-то скажет: “Это неправильно!” или “вот как это делается”: в обоих случаях я чему-то научусь.
Laravel специальная среда . Я просто хотел что-то подходящее для моих нужд. Конечно, он не такой полный, как, например, Ландо. Но это быстро при начальной загрузке (после загрузки всех изображений и после первой сборки, конечно) и достаточно полно для запуска моих проектов. Я не хотел быть слишком строгим , поэтому я включил даже некоторые службы, которые мне обычно не нужны (например, phpMyAdmin – я предпочитаю использовать SQL-клиент).
Я пытался объяснить все в README.md ; в любом случае, очень краткий обзор.
Особенности
- Nginx
- PHP 7.4 с кэшированием операций
- MySQL 8
- phpMyAdmin phpMyAdmin
- Почтовый ящик
- Повторный вызов
- Пользовательское доменное имя (имена. Пользовательское доменное имя (имена. или https://laradhoc.test
Он поставляется с некоторыми полезными bash скриптами для запуска/остановки контейнеров, запуска композитора , php ремесленник и все основные вещи, связанные с Laravel .
Дайте ему попробовать!
Дайте ему попробовать!
Как я уже сказал, я был бы рад узнать, о чем вы думаете! Не стесняйтесь просить о какой-нибудь новой функции или предлагать лучшую реализацию.
Спасибо за чтение и хорошее кодирование! 🤓
Оригинал: “https://dev.to/eleftrik/laradhoc-dockerize-your-laravel-app-be-a-happy-dev-4a1p”