Laravel-приложение в docker-контейнерах: практическое занятие для тех, кто всё ещё боится докера
Вставка
- Опубліковано 18 чер 2024
- Мне очень часто приходится смотреть в чужой код, наблюдать за практиками разработки самых разных команд. И удивительная штука: на дворе 2023 год, а контейнеризация, Docker и прочие полезные инструменты по-прежнему используются очень неохотно.
Поэтому я решил снять этот ролик, практически полностью посвящённый практике контейнеризации. У вас на глазах с помощью 6 небольших файлов я подготовлю окружение для максимально удобной разработки Laravel-приложения. По ходу написания файлов я буду объяснять, что и зачем я делаю, и очень быстро вы увидите, как новое laravel-приложение заработает. При этом на сам компьютер разработчика не нужно устанавливать ни веб-сервер, ни сервер базы данных, ни даже PHP.
Код из этого ролика вы найдёте в репозитории github.com/ekut/laravel-app-d...
Содержание ролика "Laravel-приложение в docker-контейнерах":
0:00 Почему Docker не используется повсеместно?
1:25 Идея этого ролика: чистая практика.
2:30 Начинаем конфигурировать наше приложение. Потребуется только IDE и установленный Docker.
4:00 Начинаем писать наш docker-compose.yaml
6:00 Конфигурируем веб-сервер nginx.
12:30 Конфигурируем PHP.
16:40 Конфигурируем MySQL.
19:45 Запускаем сконфигурированные контейнеры.
23:50 Преимущество контейнеров при необходимости переключения между разными версиями софта.
25:00 Пора запускать Laravel! Но для этого давайте сначала сконфигурируем отдельный контейнер для composer.
28:30 Запускаем laravel-приложение!
31:00 Конфигурируем artisan.
Получать анонсы новых видео можно на нашем телеграм-канале "Глазами фрилансера": t.me/freelancer_eyes
#ГлазамиФрилансера #Laravel #docker
Подача материала отличная, очень приятно смотреть, все понятно и просто.
Отличное видео! Расскажите про деплой и гит в связке с докером, пожалуйста!
Вот кто это??? Киборг помноженный на бесконечность. Слушать настолько приятно, а каждая тема разобрана досконально до мелочей.
не переставайте!!! делайте дальше в том же духе! мой колокол и палец вверх с вами)
P.S У автора дар к повествованию
Огромная благодарность! Продолжайте пожалуйста!
Спасибо Вам за такое видео. Формат сразу к практике очень продуктивен)
Четко и по делу, спасибо за ролик 👍
Хорош, однозначно лайк 👍🏼
Спасибо огромное, очень доходчиво и понятно, подписался на вас)
Тема зашла! Спасибо вам огромное за объяснение. 😊 Ждём продолжение. 😊👍
Отличная подача информации, самому с этим разбираться пришлось бы долго)
Годный контент. Все доступно и поятно. Успехов во всем
Отлично, актуально, полезно 👋
Отличное видео!👍👍👍
+ очень полезное видео!Спасибо Вам!
Красавчик. Все разложил, все понятно
Спасибо огромное! Самое понятное объяснение, которое я видел!
Очень много полезной информации, многое из рассказанного долго искал и изучал самостоятельно, если бы увидел раньше такого плана ролик, очень много времени бы сэкономил для изучения. Очень жду продолжения.
Спасибо большое, было очень полезно, после этого ролика я практический везде юзаю docker
Отлично! Просто и понятно для реального использования. Огромное СПАСИБО!!!
спасибо!! очень понятное видео, теперь стало легче разбираться в нюансах поднятия ларавель приложения с помощью контейнеров!
интересно смотреть 😊
Жму руку!!! Ставлю лайк, еще лучше структурировал свои знания!
Благодарю за видео!
Очень исчерпывающий. Поборол все таки этот docker с его composer'ами ))
Приветствую, спасибо за качественный контент! Пользуюсь докером по мере необходимости.
Самое топовое видео которое я видел по docker, вы лучший, спасибо спасибо спасибо
спасибо, это лучшее пояснениние о docker
Большое спасибо!
Очень круто! Спасибо!
Ого! Привет! Хоть бы ты вышел на связь - поболтали бы в личке. Уже года два как не общались?
Спасибо!
Ochen interesno slushit vas
большое спасибо, очень помогли
Дядя, хорош❤ открытие месяца. Продолжай пожалуйста. Успехов. С меня лайки комменты. Хотелось бы вторую часть с подробным разбором рабочих кейсов работы с докером.
Спасибо огромное Вам, очень интересно.
Вам спасибо за внимание и отклик. Рад, что видео оказалось интересным.
Спасибо огромное за то, что научили пользоваттся контнйнерами для артизана, как раз сейчас решаю подобрать задачу для себя, знакомый вообще установил pho storm внутрь контейнера, и так работал, а я искал выход как это избежать. Спасибо!
Подача материала на высочайшем уровне, очень рад что нашел вас, радуйте роликами почаще
Ура, новый видос)))
Вот это анонс) 👍
Чудове відео, не одного такого крутого відео по докеру не бачив, дякую!!
Спасибо огромное на добром слове! Буду рад продолжить. И такой вопрос задам.
Я свободно понимаю украинский на слух и на письме, но самому писать и говорить на нём мне сложновато. Скажите, стоит ли делать субтитры на украинском к моим роликам? Будет ли их проще воспринимать моим зрителям из Украины? Или субтитры всё-таки отвлекают от восприятия материала и больше помешают?
@@freelancer_eyes Я думаю зараз в цьому немає необхідності через те, що ви записуєте відео на російській мові а в нас в Україні розуміють, якщо ви можливо почнете записувати відео на англійській тоді так можу робити субтитри на українській хоча так же і можна сказати про російські субтитри, тому зараз не бачу сенсу :)
@@freelancer_eyes доречі Олександр чому в мене коли я робив все по вашому відео в мене проект создається за допомогою composer під root і я не можу редагувати файли в phpstorm, що мені зробитм з цими правами, дякую.
Отвечу честно, почему я не использовал раньше docker для докеризации laravel приложений.
Никогда ещё не видел столь подробного объяснения что и как делать. Вместе с вашим уроком сделал докеризацию приложения. Спасибо вам большое! Подписался. Очень хорошо и качественно объясняете. А ещё приятный тембр голоса - вишенка на торте :)
С возвращением
большое спасибо!
Благодарю
спс все очень просто и доходчиво )))
Отлично! Рад быть полезным.
Спасибо! До этого по примеру развповачивал докеры, но не до конца понимал как устроен yaml файл. Благодаря твоему видео стал лучше разбираться в вопросе. ЗЫ: в Винде докеры нужно использовать в wsl-2, это также быстро и удобно, и можно использовать в терминале ide
Спасибо за видео, очень актуальная тема. Особенно кто не до конца понимает для чего нужен докер.
Да, похоже, нащупалась действительно востребованная тема. Будем продолжать! Есть много ещё, что нужно осветить.
Спасибо!!!
Docker - Must have. Это прям обязательно, всегда можно собрать такие же версии приложений (а-ля php, mysql) как и на проде. А если несколько проектов, то для каждого можно использовать свои сборки, без необходиости устанвливать приложения локально. Плюс жрёт по памяти фигню, не так как виртуальная машина. Спасибо за видео!
Отлично! жду продолжения, это закинуть в git - далее - развернуть всё это дело уже на рабочем чистом сервере с ssl доменом,
ВАУ ВАУ
Давайте пожалуйста про деплой , ждем
Привет! Спасибо Вам огромное, все доступно и понятно. Несмотря на то, что уже с докером работаю, все равно нашел для себя что-то новое. Хотелось бы что-нибудь по микросервисной архитектуре, по строительству микросервиса с использованием брокеров, rabbit mq например. Очень мало информации на доступном языке по ним.
Хорошее видео, докер прикольная штука, ресурсы ему выделить поболее базовых пришлось поковырятся..а так все супер, автор супер лектор.
Выдно што мастер своего дела 👏
мужик, красава👍
you are the best
Отличное видео. Хочется глянуть про деплой на базе докера. С гитом и прочими делами. По взрослому.
Да, вопросы про фронтенд и деплой самые частые. Будем записывать.
супер
Отличное видео. Сам работаю 4 года в веб разработке, видел много докеров, но сам решил учиться собирать их только сейчас.
Видео на мой взгляд прекрасное (единственное я смотрел на скорости 1.5, но это вкусовщина). За 4 года я видел много крутых докеров в т.ч. написанные всякие sh скрипты для упрощения вызова artisan или composer чтобы не писать под это отдельные контейнеры
Для начала это видео отличное, что ждёт меня дальше в ваших уроках я не знаю, но надеюсь, что после них я смогу хоть немного приблизиться к тому, что видел от гуру с разных фирм)
Ну а так конечно же допом литература, только так добиваются мастерства)
Так отлично, с докером всё не могу подружится - а хочется лару накатывать туда
Очень информативно и по делу. Отличное руководство. Еще бы redis прикрутить к этой троице и настроить плагин для php. Не получается реализовать это решение.
Супер доступно. Я забросил докер после того как пытался связать php и mysql контейнеры. и вот эти пути с портами, чуть ошибёшься и понять почему не работает довольно проблематично.
Надеюсь, теперь попроще будет и ещё попробуете это дело забороть
Спасибо огромное! Видео супер! Канал ОГОНЬ!
А можно ли действующий (рабочий) сайт "держать" в Docker или для этих целей все же разворачивать LAMP ????
Хорошая тема, жду продолжения. Сам полгода назад начал переползать на докер. Если его хорошо знать, то отличная вещь, особенно, если уже всё написано и остаётся только пользоваться. Если же всю инфраструктуру надо построить, то надо хорошо помучиться, прежде чем наслаждаться плодами
Отлично подмечено! Именно так. В этом ролике я показал только самые основы. В следующих будем раскрывать о нюансах. Так что задавайте вопросы
О да описывать всё с ноля, то ещё удовольствие.
Всплывает 100500 разных нюансов.
Видео хорошее по наполнению, спасибо. Мне на 27" плохо видно, на планшете и телефоне это будет несмотрибельно. Вы меньше 10% экрана используете для подачи информации.
Классно получилось, большое спасибо! Можете ли вы подсказать как правильно учить докеризацию и на что стоит обращать внимание чтобы понять основы и принципы работы Docker-а, так как недавно начал учить это многие вещи все еще остаются непонятными
Would be great to see video about deployment to remote VPS, to Docker container using Jenkins or another open source ci/cd.
Спасибо за подробное изложение материала. Лично мне в механизмах контейнеризации всегда было непонятно, как между собой общаются контейнеры, как происходит отображение файловой системы хостовой машины в файловую систему контейнера, и как сохраняются данные после того, как контейнер убивается. Спасибо большое!
Почитай для начала про Linux Namespaces, Linux Cgroups и UFS. Тогда такими глупыми вопросами задаваться не будешь. Если очень коротко и упрощенно: docker - это просто тулза реализующая удобную для пользования абстракцию поверх нэмспейсов и контрольных групп. Короче, если ты с этим разберешься, то сможешь написать свой простейший докер даже на баше
А можете пояснить для чего отдельный контейнер composer и artisan? Разве не проще запускать их из контейнера php? Чем это практически лучше?
За видео спасибо, отличная подача материала!
Слушал не отрываясь, было так полезно. Хотелось узнать а как интересно запускать проект из гит если мы базовую ларавел накатали, не судите строго просто размышляю.
Спасибо. Докер внезапно превратился из неведомой хрени в простой и понятный инструмент
Доброе все, клево, но не хватает еще файла с командами, что бы по видео не искать их каждый раз. ) решился на основе вашего скелета отойти от sail лары, а то надо https чтобы еще был, если к сайлу прослойку proxy nginx делаю проблема с адресацией если порты отличаются от стандартных.
Так же надо еще доработать момент передача идентификатора пользователя внутрь контейнера при построении образа, чтобы не было проблем с правами, я запускаю через win wsl, он запускает все от рут пользователя и потом ide ругается нету доступа к папке и тд ..
Хотелось бы увидит полный видос разбора как собрать свой контейнер для "прода", а не тест окружение, если надо тест окружение справится и laravel sail для базовых нужд
Одним словом ждем продолжение )
God bless you
Давно использую докер, очень удобно. Был момент когда заставлял других разработчиков на него перейти. Сейчас не вижу продуктивной работы без докера
Отлично. Значит, докер на марше! Это не может не радовать
Использую Laravel Sail, весь конфиг уже готов, пару раз требовалось что-то подправить под свои нужды, например заменить mysql на postgres
Верно. Sail - отличный пакет. Но его можно использовать, особо не разбираясь, чего там под капотом и как это всё едет. Я же хочу именно показать внутреннее устройство.
Да, я тоже использую Laravel Sail. Развернуть новый проект очень легко. Посадить на Sail старый проект тоже не очень сложно, там одной командой делается. Но вот развернуть проект на чистом PHP, или Yii2, или Wordpress уже не могу. @@freelancer_eyes
Огромное спасибо за детальное объяснение на пальцах, помогли разобраться! Подскажите, пожалуйста, мы можем сделать константу в docker-compose.yaml, чтобы один раз обозначит путь /var/www/laravel и далее использовать уже ее?
Docker Desktop сильный тормоз в работе с диском до 4 версии дубасил проц не жалея, короче что сделано изначально для линукса и по правилам линукса там и должно оставаться. Кстати Docker Desktop на базе линукса и работает только WSL называется)))
Добрый день! Спасибо.Теперь понятно)). Вопрос возник. Если у меня Laravel + vite, то мне нужно также настраивать контейнер с node/npm?
Сейчас в команде всё в докере. Бывают проблемы, бывает что-то тупит, но всё решается. Главное вовремя винду, wsl и сам
докер обновлять.
Да, обновление всего и вся - наше всё :)
на линукс тоже можно docker desktop установить
Хочется глянуть как вы для прода настраиваете обработку очередей.
Я в моем случае так и не сумел побороть проблему настройки супервизора.
То мне писало, что нет доступа к базе данных, то к редису. Хоть я и сеть приписал и зависимости от базы и редиса.
Потом у меня получилось запустить очередь, все нормально отработало… Но сам сайт не отобразился, хоть порт и всё настройки были прописаны как мне казалось правильно. И так потратив кучу времени чтобы найти причину, я все бросил и быстренько все настроил на убунту.
Хоть до того я думал что буду работать только с докером)
Если покажите свой пример, буду благодарен
Александр, огонь видео. я прям прозрел. никогда не думал что так можно делать. Давайте еще по докеру с xDebug
Отлично! Значит - продолжаем разговор. И до дебага доберёмся обязательно.
Спасибо за видео, но не совсем понятно как прокинуть, если локально ничего нет и проект с конфигами ngnix допустим на гитхабе лежит
Добрый день! А подскажите пожалуйста как сдлеать так чтобы при docker-compose up -d автоматически запускалось composer install, но при этом можно было бы использовать тот же контейнер дла установки конкретных библиотек composer require?
покажеш как делать микросервисные монолиты с помощью laravel passport rabbitmq? мб там еще по aws что то что в комплексе)
Можно ли отдельный контейнер с NodeJS со своим докерфайлом сделать, что бы он запускался только для сборки фронта на ноде (VueJS или React)? Т.е. запустился по команде, скомпилировал билд в папку с джисонами и потух
Окончил курс по докер но до сих пор смотрю на докер как баран на новые ворота 😂
Наверное, какие-то базовые вещи организации серверного взаимодействия всё ещё остались непонятыми. Но я думаю, что с наработкой опыта полученные ранее знания о докере начнут проясняться и станет понятнее, зачем и как это использовать
@@freelancer_eyesпродолжайте снимать про докер, очень понравился ролик.
Такая же картина. От этого видео ещё непонятнее стало - порты какие-то, сервисы. На хрена всё это?
Ему нужен nginx-alpine, а мне может не нужен, откуда мне знать. Это значит 15 раз надо эти контейнеры сделать с разными параметрами и тогда что-то будет доходить. Не стал даже смотреть до конца.
Благодарю вас, а вы можете записать ролик про проксирование с докер, есть API, и есть frontend
Кстати, классная тема. Спасибо за наводку. Фронт как выполнен, на каком фреймворке? React, Next, Vue или?..
@@freelancer_eyes На Vue
а я бы еще profiles прикрутил, чтобы запускать разные комплекты контейнеров на тестовой и боевой среде
лучшее обьянее что я видел
Докер постоянно использую, но вот при собеседованиях часто встречаю у людей не погружонных в него предвзятое отношение что это лишняя надстройка и лишнее знаниеи переубедить их бывает очень сложно
Да, есть представление, что это - сложно, а какие плюсы даёт - многие не представляют. Что ж, будем разрушать стереотипы.
Привет. У меня на клиенте VueJS стоит, к блейду подсоединяется. Как можно запускать npm run dev и npm install в докере?
Норм контент. Но такой вопрос как с node бо частенько нужно збилдить фронтовую часть и тут без npm никак. Также очень жду продолжения про деплой
Да, про докеризацию фронтенда обязательно нужно рассказать, зрители очень интересуются. Сделаем
в контейнере все файлы создаются от имени root. как их редактировать в phpstorm, если на хосте используется другой пользователь?
Можно вас попросить, сделать подобное видео про гит?
Не тратьте время, нормально работает данный конфиг только на его шарманке, чтобы заработало у меня пришлось доделывать.
а вот если бы еще про Xdebug расказали и тесты было бы вообще шикарно
а почему волюмы подтормаживают? меняю код, но в контейнерах как-то не сразу он отображается. посылаю запрос а результат ещё со старым кодом. может это кэш ларавелевский так всё запоминает?
расскажи про aws rabbitmq в laravel
у кого-нибудь есть ссылка как делается тоже самое но composer и artisan прописываются внутри Dockerfile который относится к php?
А как узнать актуалную версию docker compose? У меня в кансоли выдает 2.24.3 после того как пишу docker-compose version.
Не сказали про проблемы с безопасностью с образом может чего-нибудь грустное прилететь и такое уже было, с другой стороны пусть у админов голова болит для дева не так страшно. Сохранение базы всё таки считаю надо было сделать... хоть в гитхабе допишите, для совсем новичков же. Как не совсем новичок был удивлен что про права не было сказано ни слова, может быть при такой организации докера пользователь берется из хост системы... но обычно всё что генерируется в контейнере будет под рутом если явно не указано иное и править это потом проблема. Пошёл проверять)
З.Ы. Версии образов лучше указывать точно (образ должен быть детерминирован), случай когда вместо запуска начинает чего-то качаться и собираться вряд ли можно назвать хорошей практикой.
Про определение прав ролик уже готовится. Тема серьёзная, не очень простая, не хотел её в вводный ролик вставлять.
Затем будет ролик о volumes, там и поговорим подробнее о разных типов томов, о том, как убиваются данные при остановке/удалении контейнера и о persist данных в локальной файловой системе.
Насчёт детерминированности образов - согласен целиком и полностью (за исключением служебных контейнеров типа composer и artisan), и эту тему поднимем, когда буду делать ролик по теории контейнеризации.
Спасибо вам за подробный комментарий и ценные подсказки!
А на докерхабе нет готового образа с Laravel и всей сопутствующей инфраструктуры? Чтобы не прописывать вот это все. Должно быть по идее.