Laravel + Docker. (Nginx + Fpm + Mysql) Подробный разбор

Поділитися
Вставка
  • Опубліковано 7 бер 2019
  • Друзья, я решил немного сменить формат, приглашаю на новый канал / @live_coding
    Контейнеризация любого PHP-приложения в Docker. Подробный разбор последовательности действий. Данный шаблон можно использовать для настройки любого PHP-приложения. Связываем Nginx с php-fpm, подключаем базу mysql, попутно решаем возникшие проблемы, сталкиваемся со стандартными ошибками, решаем их. В результате получаем рабочий шаблон, где понятно что для чего и зачем используется, и используем в своих проектах! Подписывайтесь на наш канал!
    В видео используется трек из видео-туториалов известного гуру javascript - Sorax!
  • Наука та технологія

КОМЕНТАРІ • 147

  • @sashaarigato
    @sashaarigato 3 роки тому +23

    Впервые ощущаю себя героем при просмотре гайда, спасибо музыке)))

    • @user-qd6hj2fn4w
      @user-qd6hj2fn4w 3 роки тому +1

      на 2:59 начинается движ!!!

    • @user-bi3kx5uf6d
      @user-bi3kx5uf6d 3 роки тому +2

      всем привет с вами Sorax

    • @sasharudenko5446
      @sasharudenko5446 3 роки тому +1

      да уж лучше без музыки такое делать или громкость музыки существенно ниже делать. а то бывает плохо слышно

  • @andrii8559
    @andrii8559 5 років тому +3

    Спасибо большое за Ваш труд!
    Очень помогли!

  • @ev_geniy17
    @ev_geniy17 3 роки тому +1

    Спасибо, огромное за труды.

  • @geghamkocharyan9172
    @geghamkocharyan9172 4 роки тому +1

    Что бы таких людей было много :)

  • @ayaz.ayupov
    @ayaz.ayupov 5 років тому

    Спасибо большое! Вы очень помогли

  • @jcmargentina
    @jcmargentina 4 роки тому +3

    very good video, thanks very much for this. Eventhough I cannot understand your language, the video was self-explained.

  • @dmitriyfilippov2777
    @dmitriyfilippov2777 2 роки тому

    Спасибо! Всё отлично работает!

  • @tovjukov
    @tovjukov 5 років тому

    Лайк однозначно, все понятно

  • @RomanRachkov
    @RomanRachkov 2 роки тому +19

    Самый главный минус видоса: Ни пхп ни композер не должны быть установлены локально, вся работа должна проходить только внутри докер-контейнера. В остальном за простое объяснение нубам +

    • @dilmurod9820
      @dilmurod9820 Рік тому

      сможеж лучше сделай видос

    • @RomanRachkov
      @RomanRachkov Рік тому +1

      Деворкер(дот)про - уже есть нормальный видос. Лучше чем там, я не смогу объяснить и сделать.

    • @tigrpoehal1836
      @tigrpoehal1836 Рік тому +1

      уже вроде есть готовая докер сборка sail, там и композер, и редис и даже нода

    • @RomanRachkov
      @RomanRachkov Рік тому

      @@tigrpoehal1836 sail это сборка для девлопа. На прод такое нельзя

    • @user-nq9xd1yo7o
      @user-nq9xd1yo7o 7 місяців тому

      блин чел спасибо. Я даже дальше смотреть не буду. Что за бред где пыху локально нужно установить. В чем тогда смысл докера только чтоб nginx локально не устанавливать ?

  • @k0mar12
    @k0mar12 3 роки тому +2

    Ох, Sorax таки дал отпечаток на it каналы))

  • @Nell1
    @Nell1 4 роки тому +1

    Как любитель подкастов Sorax-а, за музыку - отдельный респект и лайк)

  • @eloquent2200
    @eloquent2200 2 роки тому

    Спасибо, всё получилось!

  • @DecarlyTV
    @DecarlyTV 4 роки тому +1

    Muito bom, me ajudou muito!!!!

  • @fixmedev521
    @fixmedev521 5 років тому

    Спасибо!

  •  5 років тому +7

    Ок, все круто и понятно, спасибо) Но не показал одну очень важную вещь: php artisan migrate

    • @marsellby7135
      @marsellby7135 3 роки тому

      Все просто, там где он создавал контроллер. Только вместо команды на контроллер пиши php artisan migrate

  • @sofiatopalidi9403
    @sofiatopalidi9403 2 роки тому

    Спасибо 💚

  • @Alex-nm9nr
    @Alex-nm9nr 4 роки тому

    Отличное видео, спасибо.

  • @user-be5xo2fr6l
    @user-be5xo2fr6l 4 роки тому +1

    крутое видео, спасибо) редко когда получается практически без заминок с первого просмотра за минут 10 сделать то, что делаешь впервые. Но после того как всё это настроили возникает вопрос: как теперь к этому всему прикрутить phpmyadmin? конечно, наверно, можно и через консоль с базой работать, но лично для меня пока что удобнее через браузер

  • @user-re3ys6tu8g
    @user-re3ys6tu8g 3 роки тому +7

    Ребят, обращайте внимание на версию php, которую хочет ларавель. И устанавливайте именно ее, чтобы не провести пол дня в прекрасном мире докер логов, как я.

    • @princetonedgar3921
      @princetonedgar3921 2 роки тому +1

      i guess I am kinda randomly asking but do anybody know a good place to stream newly released movies online ?

    • @legendtrevor7284
      @legendtrevor7284 2 роки тому

      @Princeton Edgar flixportal xD

    • @princetonedgar3921
      @princetonedgar3921 2 роки тому

      @Legend Trevor thank you, signed up and it seems like a nice service :) Appreciate it!

    • @legendtrevor7284
      @legendtrevor7284 2 роки тому

      @Princeton Edgar You are welcome :D

  • @Pavelbrov
    @Pavelbrov 2 роки тому +1

    А если не установил какой-то сервис (например, npm) и запустил проект, получается, что каждый раз когда захочется что-то добавить, надо пересобирать докер и сайт на какое-то время упадёт?

  • @gcomsu5819
    @gcomsu5819 Рік тому +1

    Маст хев, однозначно!!!

  • @mclotos
    @mclotos 9 місяців тому +1

    а зачем ставить composer в свою систему, когда у тебя уже установлен docker?

  • @user-dd9uy7cy6j
    @user-dd9uy7cy6j 3 роки тому

    Зоракс ты ли это?))))

  • @dbt1231
    @dbt1231 Рік тому

    thank u so much

  • @ramzes5710
    @ramzes5710 3 роки тому +2

    У меня ошибка host not found in upstream "app" in /etc/nginx/conf.d/default.conf:10

  • @user-lj5fr7kr8e
    @user-lj5fr7kr8e 5 років тому +5

    Спасибо за урок! Но не получается накатить миграции в контейнере mysql

  • @vladislawstrateg5672
    @vladislawstrateg5672 4 роки тому

    Я не понимаю откуда взялся localhost docker и можно ли к нему попасть через браузер?

  • @omarkertis5294
    @omarkertis5294 5 років тому

    Скажите, чтобы так в phpstorm писать в терминале команды к докеру надо его как-то предварительно настраивать или достаточно просто установить ide, laravel и выполнить действия из этого урока?

    • @backendtv1345
      @backendtv1345  5 років тому

      На винде просто установить докер, он должен быть запущен и расшарен диск С или на котором у вас проект, терминал в шторме есть из коробки и просто следовать инструкции

  • @vitaliylufter8765
    @vitaliylufter8765 2 роки тому

    а на нам собственно докер если пыха локально, композер локально? базу и нгинкс? тоже можно локально в пару тыков установить. и как эту приложуху потом на сервер перенести? устанавливая там все локально?

  • @duoduoo6732
    @duoduoo6732 Рік тому

    здесь nginx и докер заранее были установлены? есть видео как их ставили?

  • @user-ik9gg6xj5t
    @user-ik9gg6xj5t 4 роки тому

    Хорошее видео!
    Подскажи, как быть если клонируешь проект ВНУТРИ докера из закрытого репозитория?
    Не пойму как мне прокинуть ssh ключ

  • @ivansavchenco5636
    @ivansavchenco5636 2 роки тому

    Epic Music)))))))

  • @philip2952
    @philip2952 5 років тому

    Like boss

  • @user-ri8ow3qh7l
    @user-ri8ow3qh7l 2 роки тому

    Спасибо, только музыку чуть по громче сделали нужно было, чтобы вас вообще не было слышно.

  • @dcraft3029
    @dcraft3029 4 роки тому

    Подскажите, как сделать доступной из консоли команду php? У меня vscode, при вводе в консоли команды php пишет, что она не является внутренней командой. Хотя у вас она каким-то магическим образом выполняется из контейнера fpm. Как бы мне так настроить?

    • @backendtv1345
      @backendtv1345  4 роки тому

      Рассказал в видео об установке php , посмотрите на канале

  • @ardendmi4921
    @ardendmi4921 3 роки тому +6

    Неплохой гайд. Только почему композер не в контейнере? какой смысл от докера для разработки в соло если ставить на хост-машину php и композер =)

    • @kekivanovich9222
      @kekivanovich9222 2 роки тому

      а ты композер без пхп юзаешь?

    • @MyBikeLife
      @MyBikeLife 2 роки тому

      да вот именно тупизм... особенно с этой идеалогией дробления и вот для команды npm мне к одному контейнеру подключаться, для композера к другому....

  • @user-on8hg3bl2m
    @user-on8hg3bl2m 2 роки тому

    Не отображает сайт в браузере , что делать ? И вначале видео не отображал и в конце.

  • @andriilagovskyi5073
    @andriilagovskyi5073 3 роки тому

    Спасибо за видео. Во время запуска 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
    Подскажите пожалуйста что не так сделал?

  • @socialreklamaru
    @socialreklamaru 4 роки тому

    Каким образом laravel смог подключиться к mysql, если в .env DB_PORT=3306, а из mysql контейнера прокинут 33061 ?

    • @backendtv1345
      @backendtv1345  4 роки тому

      Внутренняя сеть докера

  • @user-lj5fr7kr8e
    @user-lj5fr7kr8e 5 років тому +1

    Прошу прощения, в контейнере nginx. Результат команды: php artisan migrate - bash: php: command not found

    • @backendtv1345
      @backendtv1345  5 років тому +2

      Php есть в контейнере fpm

  • @user-cd4ix4ww9l
    @user-cd4ix4ww9l 4 роки тому +2

    Все сделал по вашему видео. Все три контейнера запущены а в браузере белая страница. В чем может быть проблема?

    • @avksentiivinokurov5792
      @avksentiivinokurov5792 3 роки тому

      Скорее всего у тебя версия php старая, поставь 7.4

    • @user-on8hg3bl2m
      @user-on8hg3bl2m 2 роки тому

      Тоже самое. в браузере пусто. Хотя версия php 7.4.3.

  • @user-dg4gv9rz6z
    @user-dg4gv9rz6z Рік тому +1

    В итоге хотелось задать автору один вопрос - где он запускает php artisan команды? В Докере? или Операционной системе? Мне кажется что в опреационной системе...ТОгда мне все равно надо ставить кроме Докера и PHP...Может быть можно дополнить видео мануалом полной контейнеризации?

    • @ruslan_nurgaleev
      @ruslan_nurgaleev Рік тому

      Внутри контейнера надо запускать php artisan. Сам сейчас голову ломаю, как изменить данную конфигурацию, что бы внутри контейнера работала команда php

  • @konstantinshevchenko7111
    @konstantinshevchenko7111 4 роки тому

    Здравствуйте, подскажите пожалуйста а как можно зайти в контейнер и например обновить composer или логи посмотреть с ошибками ?

    • @backendtv1345
      @backendtv1345  4 роки тому

      docker exec -it container_name sh

    • @konstantinshevchenko7111
      @konstantinshevchenko7111 4 роки тому

      @@backendtv1345 у меня два контейнера container_php и container_nginx. пробовал ваш вариант оба контейнера не получается

    • @backendtv1345
      @backendtv1345  4 роки тому

      так логи ведь полезные только в fpm, и composer обычно в нем же

  • @inkedcake3668
    @inkedcake3668 3 роки тому

    Почему-то при таком конфиге не работают миграции и сиды, приходится менять хост на localhost а порт на 33061 вместо 3306,

    • @SergiiBoiko
      @SergiiBoiko Рік тому

      Потому что порт 3306 работает внутри докера между контейнерами, а если миграции запускать через cli локальной машины то нужно использовать внешний порт 33061 или установить composer в контейнере и запускать через него. Но тогда придется каждый раз подключатся к контейнеру.

  • @bcode2
    @bcode2 2 роки тому

    why i cannot run nginx container?

  • @evgenypetrovich7881
    @evgenypetrovich7881 3 роки тому

    не понятно как ты создал бд и таблицу?

  • @fitter2boss72
    @fitter2boss72 4 роки тому +1

    У вас все установлено на Винде, что вы для этого используете Hyper-V or VirtualBox or ToolBox?

    • @mugen31337
      @mugen31337 4 роки тому

      VirtualBox

    • @fitter2boss72
      @fitter2boss72 4 роки тому

      @@mugen31337 А разве это не иконка от докер-тул ?

    • @mugen31337
      @mugen31337 4 роки тому

      @@fitter2boss72 ну может. Там такое количество иконок что как то и не присматривался. Я когда себе ставил на Win докер, то по оф документации рекомендовали VB. Через неделю винды на той машине больше не было))))

    • @fitter2boss72
      @fitter2boss72 4 роки тому

      @@mugen31337 жаль, что точно не знаете как. Есть несколько вариантов и каждый со своим подводным камушком. Я поэтому и интересовался.

    • @mugen31337
      @mugen31337 4 роки тому +1

      @@fitter2boss72 ну вот из-за этих подводных камушков я не использую докер на Винде. А их там полно. И чем серьезнее будете разворачивать среду, тем веселее. Решения этих проблем есть, но на их поиск и реализацию идут затраты времени. И, честно говоря, времени в пустую. Так как бекенд разрабатывают или на линуксе или на маке. И все ваши знания настройки докера на Винде по сути нужны только вам.

  • @dilmurod9820
    @dilmurod9820 Рік тому

    все точ в точ сделал но уменя не пошло можете как то помоч

  • @user-gc5qw7sf3j
    @user-gc5qw7sf3j 4 роки тому +1

    Хороший урок, но тут не все сервисы которые нужны для работы на laravel. Как минимум нужен еще npm

    • @777android777
      @777android777 3 роки тому +1

      Не всегда нужен. Если писать, например, API, то npm не нужен. Но для фуллстек - согласен, было бы неплохо

  • @dmytrii
    @dmytrii 3 роки тому +1

    почему не добавить все это на гитхаб? 16 век

  • @eaglesm1993
    @eaglesm1993 4 роки тому

    7 777 просмотров =))

  • @sergiocoderius4549
    @sergiocoderius4549 4 роки тому

    А как запускать юнит тесты в консоли..

    • @mugen31337
      @mugen31337 4 роки тому

      docker-compose exec php-cli vendor/bin/phpunit --colors=always

  • @unomas9686
    @unomas9686 3 роки тому

    Sorax, where are you ?

  • @xp0nat
    @xp0nat 3 роки тому +1

    делаю точно как и ты, все получается, но в брузере нету ничего по этому адресу.. я что то пропускаю может?
    eb7be8b35dba nginx "/docker-entrypoint.…" 3 minutes ago Up 3 minutes 80/tcp, 0.0.0.0:8089->88/tcp questproject_nginx_1

    • @user-on8hg3bl2m
      @user-on8hg3bl2m 2 роки тому

      У меня тоже в браузере ничего не отображает, хотя много раз проверил. В конце видео тоже в браузере не отображается, хотя все команды выполнились

    • @SergiiBoiko
      @SergiiBoiko Рік тому

      Монтировать нужно 8089:80 а у вас 8089:88. Nginx слушает 80 порт

  • @RomanSimonenko
    @RomanSimonenko 5 років тому +4

    Если я не ошибаюсь, но базу данных не безопасно держать в контейнере.

    • @backendtv1345
      @backendtv1345  5 років тому

      Для окружения разработки это допустимо

    • @mars8430
      @mars8430 4 роки тому

      Чем опасно? И как лучше делать? Выносить в отдельный контейнер или как?

    • @backendtv1345
      @backendtv1345  4 роки тому

      база в отличии от микросервисов в виде связок nginx+fpm требует наличия состояния, а его сложно поддерживать если важна отказоустойчивость и высокий rps.
      это речь о продакшене. локально можете гонять что-то угодно :)

    • @true_digitalist
      @true_digitalist 3 роки тому

      по итогу бд лучше держать в отдельном контейнере?

  • @mugen31337
    @mugen31337 4 роки тому +1

    Все конечно круто и т.п. Для саморазвития и понимания концепции докера в самый раз. Но этот шаблон для реальной работы не актуален и не нужен. Есть Laradock, и это реально шикарная вещь!

  • @Daddyness89
    @Daddyness89 4 роки тому +2

    некуя не понял, но очень интересно

  • @user-mf5ub9fl8s
    @user-mf5ub9fl8s 4 роки тому

    Вот такая необьяснимая хрень, если просто пишу image: nginx то все ок, если прилинковывая свой конфиг то компосер собирает все без ошибок но в docker ps nginx нет, и как я только уже не пробовал, какие только конфиги и варианты, результат 0, что за хрень

    • @backendtv1345
      @backendtv1345  4 роки тому

      Ошибка в композ файле или докерфайле

    • @backendtv1345
      @backendtv1345  4 роки тому

      docker-compose logs -f смотрите логи

    • @user-mf5ub9fl8s
      @user-mf5ub9fl8s 4 роки тому

      @@backendtv1345 Спасибо за logs -f очень помогает, разобрался

  • @mk3mk3mk
    @mk3mk3mk 3 роки тому

    мелковато, шрифт бы увеличить
    не удобно перепечатывать с экрана

  • @illegalboy8508
    @illegalboy8508 4 роки тому +1

    Зачем нам маунтить папку с проектом в два контейнера? Почему нельзя только в nginx?

    • @backendtv1345
      @backendtv1345  4 роки тому

      Потому что у вас приложение разруливается через index.php, по ходу запроса через php-fpm подключаются файлы из фс.также когда вы захотите обновить composer или выполнить любые команды через artisan, допустим миграции или сброс кэша. вам нужен доступ к фс там где есть бинарник php.

    • @illegalboy8508
      @illegalboy8508 4 роки тому

      @@backendtv1345 так мы можем это же сделать из контейнера nginx, зачем маунтить одну и ту же папку дважды

    • @illegalboy8508
      @illegalboy8508 4 роки тому

      Или не можем из nginxa?

    • @illegalboy8508
      @illegalboy8508 4 роки тому +1

      + докер изначально придуман чтобы я локально не ставил пхп.

    • @illegalboy8508
      @illegalboy8508 4 роки тому

      И еще я не понимаю за счет чего php-fpm ранится продолжительное время. Почему он не останавливается сразу

  • @mk3mk3mk
    @mk3mk3mk 3 роки тому

    не показано, как, где и мы создавали базу данных

  • @pavelfedoruk
    @pavelfedoruk 2 роки тому

    А можно пожалуйста название музыки?)) Всем не нравится, а мне зашла)

    • @backendtv1345
      @backendtv1345  2 роки тому +1

      spotlight ost автор sorax, ищется vk, это блогер по js, видимо его трек

    • @pavelfedoruk
      @pavelfedoruk 2 роки тому

      @@backendtv1345 спасибо большое))

  • @user-cd4ix4ww9l
    @user-cd4ix4ww9l 4 роки тому

    Вопрос закрыт

  • @antonustinoff7716
    @antonustinoff7716 5 років тому +4

    Лайк, если бы не лишняя музыка на фоне которая заглушает автора.

  • @getcoding5362
    @getcoding5362 4 роки тому

    А для чего вообще этот докер?

    • @mugen31337
      @mugen31337 4 роки тому

      для эмуляции боевого сервера

  • @mirsaidmuzaffarov1255
    @mirsaidmuzaffarov1255 2 роки тому

    Ещё проще можно обеснять зачем вапше нужен здесь Docker ??? Ребята

  • @user-zg3jk3xh4w
    @user-zg3jk3xh4w 5 років тому

    и тут у зоракса спиженное что то

  • @annatih8179
    @annatih8179 5 років тому +7

    слишком громко играет музыка можно убавить в раза 3-4 спокойно

    • @backendtv1345
      @backendtv1345  5 років тому

      Учтем в следующих видео

  • @vitche727
    @vitche727 4 роки тому +1

    "не фонтан", Автор не создал автономную среду для разработки, ибо не добавил Composer в контейнер, а использовал Внешний Composer. А если установленная версия php не удовлетворяет версии Laravel, тогда установить зависимости "снаружи" не получится...

    • @backendtv1345
      @backendtv1345  4 роки тому +2

      Автор учится со временем также как и вы

    • @vitche727
      @vitche727 4 роки тому

      подключить внутри контейнера Composer, так чтобы работала команда "composer install" - это "высший пилотаж!", к сож, нигде не нашел толкового объяснения как это сделать...

    • @backendtv1345
      @backendtv1345  4 роки тому +1

      Если в 2 словах то, копируете curl команду скачивания бинарника с сайта композера, перемещаете файл в /usr/local/bin под именем composer, это делается в fpm dockerfile

  • @user-zp7pq5mb8w
    @user-zp7pq5mb8w 4 роки тому +3

    Круто, но музыка бесит

  • @MyBikeLife
    @MyBikeLife 2 роки тому

    вот у вас все просто... а в реале жопа, сразу же нахер шлет ларавел типа не может записать в директорию

    • @backendtv1345
      @backendtv1345  2 роки тому

      настройка прав не относится к теме видео

  • @themansonbrother01
    @themansonbrother01 5 років тому

    Довольно полезно, но блин...докер на винде? Серьезно? От такого впадаешь в ступор.)

    • @mixtyraaaa
      @mixtyraaaa 4 роки тому +1

      Что такого?

    • @mugen31337
      @mugen31337 4 роки тому +2

      @@mixtyraaaa это мазохизм. Докер не предназначен для винды. Это по сути то же самое, если вы на трек формулы 1 на жигулях приедете. Да, ехать будете, но в сравнении с другими участниками оч медленно, неэффективно, и с постоянными гемороями.

    • @backendtv1345
      @backendtv1345  4 роки тому

      Это не прод, а среда локальной разработки, если основная рабочая станция на винде, как вы предлагаете поднимать окружение? Докер на винде юзает hyper-v так что он запущен на линуксе.

    • @mugen31337
      @mugen31337 4 роки тому

      @@backendtv1345 тут больше вопросы в скорости разработки. Сами посудите, вы запускаете виртуальную машину линукса, для запуска докера, который виртуалит Линукс. Это уже не говоря то тормознутой консоли винды, которая отрабатывает команды раза в 3-4 медленнее чем в нативной среде. И ладно если вы тестите простые запросы или количество юнит тестов не больше сотни. Как бы не сильно напрягать будет. Но если что то посерьёзнее... Разница в скорости оч чувствуется.

    • @backendtv1345
      @backendtv1345  4 роки тому +1

      @@mugen31337 насчет скорости считаю что для локальной разработки это (лишний слой виртуализации) не важно, если проект более менее крупный, основной источник тормозов это бд и ос тут не влияет. в мелких проектах разница не заметна. насчет консоли - зачем вам консоль винды? через нее вы только вводите команду доступа к контейнеру, например например docker exec -t somecontainer_fpm_1 php artisan cache:clear. Тесты надо дробить если их много, phpunit позволяет делать группы тестов и прогонять поочередно.Напомню что цель данного видео не холивар ОС, а показать что докер это не сложно, и пора переходить с openserver, т.к на дворе уже 2к20 :)