Laravel + Docker. (Nginx + Fpm + Mysql) Подробный разбор
Вставка
- Опубліковано 7 бер 2019
- Друзья, я решил немного сменить формат, приглашаю на новый канал / @live_coding
Контейнеризация любого PHP-приложения в Docker. Подробный разбор последовательности действий. Данный шаблон можно использовать для настройки любого PHP-приложения. Связываем Nginx с php-fpm, подключаем базу mysql, попутно решаем возникшие проблемы, сталкиваемся со стандартными ошибками, решаем их. В результате получаем рабочий шаблон, где понятно что для чего и зачем используется, и используем в своих проектах! Подписывайтесь на наш канал!
В видео используется трек из видео-туториалов известного гуру javascript - Sorax! - Наука та технологія
Впервые ощущаю себя героем при просмотре гайда, спасибо музыке)))
на 2:59 начинается движ!!!
всем привет с вами Sorax
да уж лучше без музыки такое делать или громкость музыки существенно ниже делать. а то бывает плохо слышно
Спасибо большое за Ваш труд!
Очень помогли!
Спасибо, огромное за труды.
Что бы таких людей было много :)
Спасибо большое! Вы очень помогли
very good video, thanks very much for this. Eventhough I cannot understand your language, the video was self-explained.
Спасибо! Всё отлично работает!
Лайк однозначно, все понятно
Самый главный минус видоса: Ни пхп ни композер не должны быть установлены локально, вся работа должна проходить только внутри докер-контейнера. В остальном за простое объяснение нубам +
сможеж лучше сделай видос
Деворкер(дот)про - уже есть нормальный видос. Лучше чем там, я не смогу объяснить и сделать.
уже вроде есть готовая докер сборка sail, там и композер, и редис и даже нода
@@tigrpoehal1836 sail это сборка для девлопа. На прод такое нельзя
блин чел спасибо. Я даже дальше смотреть не буду. Что за бред где пыху локально нужно установить. В чем тогда смысл докера только чтоб nginx локально не устанавливать ?
Ох, Sorax таки дал отпечаток на it каналы))
Как любитель подкастов Sorax-а, за музыку - отдельный респект и лайк)
Спасибо, всё получилось!
Muito bom, me ajudou muito!!!!
Спасибо!
Ок, все круто и понятно, спасибо) Но не показал одну очень важную вещь: php artisan migrate
Все просто, там где он создавал контроллер. Только вместо команды на контроллер пиши php artisan migrate
Спасибо 💚
Отличное видео, спасибо.
крутое видео, спасибо) редко когда получается практически без заминок с первого просмотра за минут 10 сделать то, что делаешь впервые. Но после того как всё это настроили возникает вопрос: как теперь к этому всему прикрутить phpmyadmin? конечно, наверно, можно и через консоль с базой работать, но лично для меня пока что удобнее через браузер
Ребят, обращайте внимание на версию php, которую хочет ларавель. И устанавливайте именно ее, чтобы не провести пол дня в прекрасном мире докер логов, как я.
i guess I am kinda randomly asking but do anybody know a good place to stream newly released movies online ?
@Princeton Edgar flixportal xD
@Legend Trevor thank you, signed up and it seems like a nice service :) Appreciate it!
@Princeton Edgar You are welcome :D
А если не установил какой-то сервис (например, npm) и запустил проект, получается, что каждый раз когда захочется что-то добавить, надо пересобирать докер и сайт на какое-то время упадёт?
Маст хев, однозначно!!!
а зачем ставить composer в свою систему, когда у тебя уже установлен docker?
Зоракс ты ли это?))))
thank u so much
У меня ошибка host not found in upstream "app" in /etc/nginx/conf.d/default.conf:10
Спасибо за урок! Но не получается накатить миграции в контейнере mysql
Я не понимаю откуда взялся localhost docker и можно ли к нему попасть через браузер?
Скажите, чтобы так в phpstorm писать в терминале команды к докеру надо его как-то предварительно настраивать или достаточно просто установить ide, laravel и выполнить действия из этого урока?
На винде просто установить докер, он должен быть запущен и расшарен диск С или на котором у вас проект, терминал в шторме есть из коробки и просто следовать инструкции
а на нам собственно докер если пыха локально, композер локально? базу и нгинкс? тоже можно локально в пару тыков установить. и как эту приложуху потом на сервер перенести? устанавливая там все локально?
здесь nginx и докер заранее были установлены? есть видео как их ставили?
Хорошее видео!
Подскажи, как быть если клонируешь проект ВНУТРИ докера из закрытого репозитория?
Не пойму как мне прокинуть ssh ключ
Epic Music)))))))
Like boss
Спасибо, только музыку чуть по громче сделали нужно было, чтобы вас вообще не было слышно.
Подскажите, как сделать доступной из консоли команду php? У меня vscode, при вводе в консоли команды php пишет, что она не является внутренней командой. Хотя у вас она каким-то магическим образом выполняется из контейнера fpm. Как бы мне так настроить?
Рассказал в видео об установке php , посмотрите на канале
Неплохой гайд. Только почему композер не в контейнере? какой смысл от докера для разработки в соло если ставить на хост-машину php и композер =)
а ты композер без пхп юзаешь?
да вот именно тупизм... особенно с этой идеалогией дробления и вот для команды npm мне к одному контейнеру подключаться, для композера к другому....
Не отображает сайт в браузере , что делать ? И вначале видео не отображал и в конце.
Спасибо за видео. Во время запуска localhost:8098 выдает -
Warning: require(/var/www/docker-laravel/public/../vendor/autoload.php): failed to open stream: No such file or directory in /var/www/docker-laravel/public/index.php on line 34
Fatal error: require(): Failed opening required '/var/www/docker-laravel/public/../vendor/autoload.php' (include_path='.:/usr/local/lib/php') in /var/www/docker-laravel/public/index.php on line 34
Подскажите пожалуйста что не так сделал?
composer install
Каким образом laravel смог подключиться к mysql, если в .env DB_PORT=3306, а из mysql контейнера прокинут 33061 ?
Внутренняя сеть докера
Прошу прощения, в контейнере nginx. Результат команды: php artisan migrate - bash: php: command not found
Php есть в контейнере fpm
Все сделал по вашему видео. Все три контейнера запущены а в браузере белая страница. В чем может быть проблема?
Скорее всего у тебя версия php старая, поставь 7.4
Тоже самое. в браузере пусто. Хотя версия php 7.4.3.
В итоге хотелось задать автору один вопрос - где он запускает php artisan команды? В Докере? или Операционной системе? Мне кажется что в опреационной системе...ТОгда мне все равно надо ставить кроме Докера и PHP...Может быть можно дополнить видео мануалом полной контейнеризации?
Внутри контейнера надо запускать php artisan. Сам сейчас голову ломаю, как изменить данную конфигурацию, что бы внутри контейнера работала команда php
Здравствуйте, подскажите пожалуйста а как можно зайти в контейнер и например обновить composer или логи посмотреть с ошибками ?
docker exec -it container_name sh
@@backendtv1345 у меня два контейнера container_php и container_nginx. пробовал ваш вариант оба контейнера не получается
так логи ведь полезные только в fpm, и composer обычно в нем же
Почему-то при таком конфиге не работают миграции и сиды, приходится менять хост на localhost а порт на 33061 вместо 3306,
Потому что порт 3306 работает внутри докера между контейнерами, а если миграции запускать через cli локальной машины то нужно использовать внешний порт 33061 или установить composer в контейнере и запускать через него. Но тогда придется каждый раз подключатся к контейнеру.
why i cannot run nginx container?
не понятно как ты создал бд и таблицу?
У вас все установлено на Винде, что вы для этого используете Hyper-V or VirtualBox or ToolBox?
VirtualBox
@@mugen31337 А разве это не иконка от докер-тул ?
@@fitter2boss72 ну может. Там такое количество иконок что как то и не присматривался. Я когда себе ставил на Win докер, то по оф документации рекомендовали VB. Через неделю винды на той машине больше не было))))
@@mugen31337 жаль, что точно не знаете как. Есть несколько вариантов и каждый со своим подводным камушком. Я поэтому и интересовался.
@@fitter2boss72 ну вот из-за этих подводных камушков я не использую докер на Винде. А их там полно. И чем серьезнее будете разворачивать среду, тем веселее. Решения этих проблем есть, но на их поиск и реализацию идут затраты времени. И, честно говоря, времени в пустую. Так как бекенд разрабатывают или на линуксе или на маке. И все ваши знания настройки докера на Винде по сути нужны только вам.
все точ в точ сделал но уменя не пошло можете как то помоч
Хороший урок, но тут не все сервисы которые нужны для работы на laravel. Как минимум нужен еще npm
Не всегда нужен. Если писать, например, API, то npm не нужен. Но для фуллстек - согласен, было бы неплохо
почему не добавить все это на гитхаб? 16 век
7 777 просмотров =))
А как запускать юнит тесты в консоли..
docker-compose exec php-cli vendor/bin/phpunit --colors=always
Sorax, where are you ?
делаю точно как и ты, все получается, но в брузере нету ничего по этому адресу.. я что то пропускаю может?
eb7be8b35dba nginx "/docker-entrypoint.…" 3 minutes ago Up 3 minutes 80/tcp, 0.0.0.0:8089->88/tcp questproject_nginx_1
У меня тоже в браузере ничего не отображает, хотя много раз проверил. В конце видео тоже в браузере не отображается, хотя все команды выполнились
Монтировать нужно 8089:80 а у вас 8089:88. Nginx слушает 80 порт
Если я не ошибаюсь, но базу данных не безопасно держать в контейнере.
Для окружения разработки это допустимо
Чем опасно? И как лучше делать? Выносить в отдельный контейнер или как?
база в отличии от микросервисов в виде связок nginx+fpm требует наличия состояния, а его сложно поддерживать если важна отказоустойчивость и высокий rps.
это речь о продакшене. локально можете гонять что-то угодно :)
по итогу бд лучше держать в отдельном контейнере?
Все конечно круто и т.п. Для саморазвития и понимания концепции докера в самый раз. Но этот шаблон для реальной работы не актуален и не нужен. Есть Laradock, и это реально шикарная вещь!
некуя не понял, но очень интересно
Вот такая необьяснимая хрень, если просто пишу image: nginx то все ок, если прилинковывая свой конфиг то компосер собирает все без ошибок но в docker ps nginx нет, и как я только уже не пробовал, какие только конфиги и варианты, результат 0, что за хрень
Ошибка в композ файле или докерфайле
docker-compose logs -f смотрите логи
@@backendtv1345 Спасибо за logs -f очень помогает, разобрался
мелковато, шрифт бы увеличить
не удобно перепечатывать с экрана
Зачем нам маунтить папку с проектом в два контейнера? Почему нельзя только в nginx?
Потому что у вас приложение разруливается через index.php, по ходу запроса через php-fpm подключаются файлы из фс.также когда вы захотите обновить composer или выполнить любые команды через artisan, допустим миграции или сброс кэша. вам нужен доступ к фс там где есть бинарник php.
@@backendtv1345 так мы можем это же сделать из контейнера nginx, зачем маунтить одну и ту же папку дважды
Или не можем из nginxa?
+ докер изначально придуман чтобы я локально не ставил пхп.
И еще я не понимаю за счет чего php-fpm ранится продолжительное время. Почему он не останавливается сразу
не показано, как, где и мы создавали базу данных
docker-compose
А можно пожалуйста название музыки?)) Всем не нравится, а мне зашла)
spotlight ost автор sorax, ищется vk, это блогер по js, видимо его трек
@@backendtv1345 спасибо большое))
Вопрос закрыт
Лайк, если бы не лишняя музыка на фоне которая заглушает автора.
А для чего вообще этот докер?
для эмуляции боевого сервера
Ещё проще можно обеснять зачем вапше нужен здесь Docker ??? Ребята
и тут у зоракса спиженное что то
слишком громко играет музыка можно убавить в раза 3-4 спокойно
Учтем в следующих видео
"не фонтан", Автор не создал автономную среду для разработки, ибо не добавил Composer в контейнер, а использовал Внешний Composer. А если установленная версия php не удовлетворяет версии Laravel, тогда установить зависимости "снаружи" не получится...
Автор учится со временем также как и вы
подключить внутри контейнера Composer, так чтобы работала команда "composer install" - это "высший пилотаж!", к сож, нигде не нашел толкового объяснения как это сделать...
Если в 2 словах то, копируете curl команду скачивания бинарника с сайта композера, перемещаете файл в /usr/local/bin под именем composer, это делается в fpm dockerfile
Круто, но музыка бесит
вот у вас все просто... а в реале жопа, сразу же нахер шлет ларавел типа не может записать в директорию
настройка прав не относится к теме видео
Довольно полезно, но блин...докер на винде? Серьезно? От такого впадаешь в ступор.)
Что такого?
@@mixtyraaaa это мазохизм. Докер не предназначен для винды. Это по сути то же самое, если вы на трек формулы 1 на жигулях приедете. Да, ехать будете, но в сравнении с другими участниками оч медленно, неэффективно, и с постоянными гемороями.
Это не прод, а среда локальной разработки, если основная рабочая станция на винде, как вы предлагаете поднимать окружение? Докер на винде юзает hyper-v так что он запущен на линуксе.
@@backendtv1345 тут больше вопросы в скорости разработки. Сами посудите, вы запускаете виртуальную машину линукса, для запуска докера, который виртуалит Линукс. Это уже не говоря то тормознутой консоли винды, которая отрабатывает команды раза в 3-4 медленнее чем в нативной среде. И ладно если вы тестите простые запросы или количество юнит тестов не больше сотни. Как бы не сильно напрягать будет. Но если что то посерьёзнее... Разница в скорости оч чувствуется.
@@mugen31337 насчет скорости считаю что для локальной разработки это (лишний слой виртуализации) не важно, если проект более менее крупный, основной источник тормозов это бд и ос тут не влияет. в мелких проектах разница не заметна. насчет консоли - зачем вам консоль винды? через нее вы только вводите команду доступа к контейнеру, например например docker exec -t somecontainer_fpm_1 php artisan cache:clear. Тесты надо дробить если их много, phpunit позволяет делать группы тестов и прогонять поочередно.Напомню что цель данного видео не холивар ОС, а показать что докер это не сложно, и пора переходить с openserver, т.к на дворе уже 2к20 :)