Docker - nginx, php-fpm, mysql, phpmyadmin. From scratch to finished website

Sdílet
Vložit
  • čas přidán 24. 08. 2024

Komentáře • 134

  • @danilovcode
    @danilovcode  Před rokem +18

    Пользовались ли вы Docker до просмотра урока и будете ли пользоваться после?

    • @ruden6623
      @ruden6623 Před 9 měsíci +1

      Ну, смог запустить Nginx и Node.js, но было нифига не понятно, что я делаю. Сейчас тож не очень всё понятно, но некоторое понял. Скорее всего буду пользоваться, так как свой сайт на микросервисы переписываю, а там докер желателен, но пока не очень всё понятно

    • @user-sk1rh7yh7n
      @user-sk1rh7yh7n Před 8 měsíci +1

      До просмотра урока для развертываения окружения я просто запускал контейнеры командой `docker compose up -d` и все остальное было для меня `магией`. А когда возникала ошибка, бежал к бекендерам... Теперь я более профессионально пользуюсь этим инструментом.

    • @yakut54
      @yakut54 Před 7 měsíci

      теперь я ещё больше во всём запутался.... Однозначно буду!!! 🦧

    • @alexdreamer11
      @alexdreamer11 Před 7 měsíci

      Имею печальный опыт пользования. Что-то не очень хочется им пользоваться, xampp для меня привычнее и удобнее

    • @danilovcode
      @danilovcode  Před 7 měsíci

      @user-zj1nn8zj8f докер используется не только для локальной разработки. К тому же у xampp очень ограниченные возможности и набор инструментов. Но лучше пользоваться тем, что вам удобнее, пока не понадобится что-то большее.

  • @be1m0nt
    @be1m0nt Před měsícem +3

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

  • @brooklyn666z2
    @brooklyn666z2 Před 18 dny +1

    Лучший урок на ютубе из тех что я видел!

  • @alexeyalien
    @alexeyalien Před 7 dny +1

    Ролику почти год, но это лучшее что я встретил на ютубе на эту тему! Спасибо! Все отработало, как надо только мне пришлось убрать строку "name: network", она давала ошибку. Я так понял что docker обновился и теперь она не нужна (работал на MacOS).

    • @danilovcode
      @danilovcode  Před 7 dny +1

      Скорее всего сеть с таким именем у вас уже просто существует.
      Спасибо за отзыв!

    • @alexeyalien
      @alexeyalien Před 7 dny

      @@danilovcode спасибо. Проверю

    • @alexeyalien
      @alexeyalien Před 6 dny +1

      @@danilovcode Спасибо за ответ! Вы оказались правы.)

  • @TeddyBearPlay
    @TeddyBearPlay Před 2 měsíci +3

    Просто лучший. Несколько дней изучал Docker. Получил разрозненные знания, который не мог собрать в кучу и запустить сервер с php и БД.
    Тут же всё разъяснено очень доходчиво. Всё разложено по полочкам.
    Автору большое спасибо)

  • @ddre183
    @ddre183 Před 27 dny +1

    Очень полезное видео, спасибо автору!

  • @anryan4509
    @anryan4509 Před 10 měsíci +7

    2 года назад смотрел курс по докеру, где так же бегло пробежались, но ничего не понятно. Тут всё тоже самое, но инфа заходит сразу и понятно. Всё зависит от подачи материала и самого создателя курса) Да, годнота)

    • @danilovcode
      @danilovcode  Před 10 měsíci +2

      Спасибо за высокую оценку!

  • @far_from_under
    @far_from_under Před 7 měsíci +1

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

  • @antonerogov
    @antonerogov Před 11 měsíci +5

    Это лучшее что я видел на тему докера!

    • @danilovcode
      @danilovcode  Před 11 měsíci

      Спасибо за отзыв! По докеру скоро будут еще видео. Следите за новостями)

  • @DimaKuzmichev
    @DimaKuzmichev Před 11 měsíci +5

    огромное спасибо за урок! до этого пользовался gui-версией докера, но теперь знаю как управляться с ним из консоли. было несколько затыков, связанных с относительными/абсолютными путями в терминале/файле yml на osx, разобрался. теория подана отлично, скорость иногда ставил на .75, масштаб информации в кадре хороший, хотя иногда приходилось ловить кадр) еще раз благодарю. лайк! подписка!

    • @danilovcode
      @danilovcode  Před 11 měsíci +1

      Спасибо за отзыв!

    • @user-gy2ji3ur4z
      @user-gy2ji3ur4z Před 6 měsíci +1

      Еще, можете посмотреть Portainer - это тоже докер контейнер, но запускает сервер управления докер контейнерами. Очень удобная штука, особенно когда контейнеров становится дохрена, + возможность управления докер контейнерами на разных серверах

  • @lipetskdom
    @lipetskdom Před 6 měsíci +1

    Просто невероятное видео, полное уважения и взаимопонимания! Голос, подача материала и тд. Респект вам за труд. Это настоящий обмен знаниями. Браво! 🌟

  • @zakirovdamir
    @zakirovdamir Před 4 měsíci +3

    Спасибо, добрый человек, теперь я ОКОНЧАТЕЛЬНО все понял

  • @donlinoleum831
    @donlinoleum831 Před 4 měsíci +1

    Просто концентрат полезной информации! Огромное спасибо!!!!!!!

  • @user-mg7nx2dy6b
    @user-mg7nx2dy6b Před 2 měsíci +1

    Большое спасибо за данное видео! Стало намного понятнее, вы очень хорошо объясняете.

  • @HugoPCWorld
    @HugoPCWorld Před rokem +7

    Спасибо большое за проделанную работу!

    • @danilovcode
      @danilovcode  Před rokem +1

      Пожалуйста! Приятного просмотра!

  • @jon4775
    @jon4775 Před měsícem +1

    Крутой урок, особенно погравилось что про network рассказали, спасибо

    • @danilovcode
      @danilovcode  Před měsícem

      Пожалуйста!

    • @jon4775
      @jon4775 Před měsícem

      ​@@danilovcodeкстати обязательно задавать network в compose ? Я видел примеры где сеть не создают вообще в compose

    • @danilovcode
      @danilovcode  Před měsícem

      Не обязательно. Докер компоуз сам создает общую дефолтную сеть для контейнеров. Также сеть можно создать вне компоуз-файла (docker network create), а в компоузе у сети указать параметр external (например, это может понадобиться для объединения контейнеров в сеть из нескольких компоуз-конфигураций)

  • @accountyoutube7298
    @accountyoutube7298 Před 10 měsíci +1

    Нормальная годнота, без воды типа, как скачать и запустить 2 команды hello world - сразу рабочая связка приложения построенная на контейнерах. Круто!

    • @danilovcode
      @danilovcode  Před 10 měsíci

      Спасибо! Такие отзывы мотивируют выпускать еще более крутые ролики!

  • @tatianabelchik4887
    @tatianabelchik4887 Před 10 měsíci +1

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

  • @user-kz5ci7kq1k
    @user-kz5ci7kq1k Před 11 měsíci +4

    Спасибо большое, урок понятный и наглядный😁

  • @akellaweb
    @akellaweb Před 5 měsíci

    Пожалуй самый понятный вводный курс. Отдельное спасибо за чёткое пояснение про CMD и ENTRYPOINT!!
    Никто не объясняет этот момент. После Вашего пояснения понятно стало в чем разница. Хорошо бы ещё отдельно записать как создавать симлинки в контейнере используя volumes_from. И в целом насколько правильно выносить в отдельный сервис установку composer и создание симлинка в директории (нужен именно симлинк). понятно что можно в контейнере запустить команду но зачем если это можно автоматизировать.
    PS. окружение - wsl.

    • @danilovcode
      @danilovcode  Před 5 měsíci

      Спасибо за отзыв! По симлинкам думаю запишу видео в ближайшем будущем

  • @user-te9bl6dm7o
    @user-te9bl6dm7o Před 2 měsíci +1

    8:44 Завершить процесс клавишей ctrl+c

    • @danilovcode
      @danilovcode  Před 2 měsíci

      Да, все верно. Не упомянул этого в видео, спасибо

  • @sergeymarchenko4204
    @sergeymarchenko4204 Před 7 měsíci +1

    Спасибо за видео! Все очень хорошо объясняется.

  • @nedelaet
    @nedelaet Před 7 měsíci +1

    Потрясающе! Автору спасибо

  • @MrFlagman777
    @MrFlagman777 Před 5 měsíci +1

    Большое спасибо Вам за это видео, было очень полезно!

  • @vova_dev
    @vova_dev Před 10 měsíci +1

    Классный видос, подача, голос!

  • @blackbirdchannel-c7b
    @blackbirdchannel-c7b Před 5 měsíci +1

    Хорошее видео, очень познавательно. Спасибо.

    • @danilovcode
      @danilovcode  Před 5 měsíci +1

      Спасибо за отзыв!

  • @eugenklass
    @eugenklass Před 9 měsíci +1

    Подача супер! Спасибо за ваш труд. Лайк, подписка, буду смотреть.
    Еще бы про права доступа при записи в файлы )

    • @danilovcode
      @danilovcode  Před 9 měsíci

      Спасибо за отзыв!

    • @danilovcode
      @danilovcode  Před 9 měsíci

      Что вы имеете в виду про права доступа?

  • @user-tk7hx1jk6r
    @user-tk7hx1jk6r Před 9 měsíci

    Ставлю лайк, все основы в одном видео)

  • @vladpetrov91
    @vladpetrov91 Před rokem +2

    Спасибо за урок👍

  • @Sergei_Slv
    @Sergei_Slv Před 7 měsíci +1

    Красавчик, спасибо!

  • @GreatOsmanSultan
    @GreatOsmanSultan Před rokem +2

    Спасибо, да пользуюсь докером...

  • @xoxot_shamana
    @xoxot_shamana Před 10 měsíci +2

    Годнота!

  • @sayces
    @sayces Před 5 měsíci +1

    спс за урок!

  • @MrChestermen
    @MrChestermen Před 11 měsíci +1

    Очень полезно, благодарю

  • @sanpavlovich9726
    @sanpavlovich9726 Před 10 měsíci +1

    Спасибо, отличное видео!

  • @andrejfroschgeiser7777
    @andrejfroschgeiser7777 Před 10 měsíci +2

    Господи . Какой молдец . Всё просто и понятно. все остальные уроки в корзину .
    Вопрос: Доккер äто по сути процесс и получается что для развертывания мне надо будет копировать всü структуру файловую н соответственно все файлы . В твоём промере это файл бд, конфиги и пхп . а как упаковать всё вместе .

    • @danilovcode
      @danilovcode  Před 10 měsíci

      Спасибо за отзыв!
      Деплой можно выполнять разными способами, в том числе и копированием всех директорий привязанных волюмами. Можно использовать git push и hook с автодеплоем на стороне сервиса. Но наиболее правильным считается упаковывание сайта в отдельный docker image. Затем его можно либо выложить в реестр (свой или какой-то из публичных), а на стороне продакшена сделать pull этого образа докером и запустить, либо просто скопировать на сервер и также снова запустить докером.
      Про деплой на продакшен планируется отдельный видеоурок в ближайшее время

  • @manzadey
    @manzadey Před 7 měsíci

    Спасибо)

  • @vova_dev
    @vova_dev Před 10 měsíci +1

    У меня не заработало - docker run -d -p 80:80 nginx
    Пробовал с разными портами.
    udp. Заработало, на виртуалке всё делаю. Там в настройках сети выставлено NAT. Из-за этого какая-то трабла с loopback. Сделал bridge, всё ок.

  • @snikitin32
    @snikitin32 Před 4 měsíci

    Я новичок в докере, но по каким я мануалам делал, то никаких сетей не создавал.
    nginx обращается к php-fpm через имя контейнера и порт.
    Докер автоматически связывает контейнеры в одну сеть.

    • @danilovcode
      @danilovcode  Před 4 měsíci

      Да, докер по-умолчанию помещает контейнеры в дефолтную сеть, если не указать иное

  • @rosolovsky
    @rosolovsky Před 11 měsíci +1

    Отлично. Не мешало бы в php контейнер прикрутить composer!

    • @danilovcode
      @danilovcode  Před 11 měsíci +2

      Вот в этом уроке прикручиваем compozer: czcams.com/video/gVGfegSLg14/video.html

  • @renatk.3829
    @renatk.3829 Před 4 měsíci

    Хороший курс, только возникла ошибка с подгрузкой index.php, в контейнере он есть, и изменения подтягиваются, вот только при попытке перейти на локалхост выдает File not found.

    • @danilovcode
      @danilovcode  Před 4 měsíci

      Скиньте скрины в группу телеграм t.me/danilovcodechat - конфига docker compose (либо командную строку которой создаете контейнер) и конфига nginx. Попробуем разобраться

  • @alexdreamer11
    @alexdreamer11 Před 7 měsíci

    Спасибо, отлично, только в конце у меня Welcome to nginx! опять

    • @danilovcode
      @danilovcode  Před 7 měsíci

      Скорее всего у вас не сработал volume с конфигом nginx. Проверьте, правильно ли написаны пути

  • @user-sk1rh7yh7n
    @user-sk1rh7yh7n Před 8 měsíci

    Подача материала хорошая, спасибо!
    Однако, столкнулся с тем, что `docker run` каждый раз создает новый контейнер и перед очередным запуском приходится удалять старый

    • @danilovcode
      @danilovcode  Před 8 měsíci +2

      Спасибо за отзыв!
      Вы можете добавлять опцию --rm к команде run, тогда остановленный контейнер будет автоматически удаляться.
      docker run --rm

  • @simonabrosimov18
    @simonabrosimov18 Před 5 měsíci

    Отличное видео, отличная подача материала. Спасибо!! Один вопрос только - со всем разобрался и почти все заработало, но нет доступа к phpmyadmin. При вводе localhost:1500 вылезает окошко с надписью о том что надо выбрать приложение для открытия этой ссылки(((

    • @danilovcode
      @danilovcode  Před 5 měsíci

      Спасибо за отзыв!
      Попробуйте вбить localhost:1500 должно сработать. Ваш браузер почему-то слово localhost воспринял как имя протокола (по типу http, ftp). Также, возможно, что вы слово localhost с ошибкой написали.

    • @simonabrosimov18
      @simonabrosimov18 Před 5 měsíci

      @@danilovcodeспасибо! Все заработало😊

  • @Olegcowboyoleg
    @Olegcowboyoleg Před 4 měsíci

    Не понял: нетворк мы пишем в compose и всё? Всё, что делали до этого в консоли с сетью роли не играет? Просто пишем нетворк: нетворк2 и присоединяем все сервисы в одну сеть ив всё?

    • @danilovcode
      @danilovcode  Před 4 měsíci +1

      Да, всё верно. Но можно использовать и сеть созданную в консоли или даже в другом композе, если прописать в текщем композе у нее параметр external: true

    • @Olegcowboyoleg
      @Olegcowboyoleg Před 4 měsíci

      @@danilovcode ++

  • @paldeflex
    @paldeflex Před 6 měsíci

    А как composer подключить? тоже в services его прописать?

    • @danilovcode
      @danilovcode  Před 6 měsíci

      Прописать его установку в Dokerfile. Вот пример czcams.com/video/gVGfegSLg14/video.html

  • @sayfiddinergashev4764
    @sayfiddinergashev4764 Před 10 měsíci

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

    • @danilovcode
      @danilovcode  Před 10 měsíci

      Здравстуйте, к сожалению не сохранился исходник проекта

  • @user-vw4uj5zu1e
    @user-vw4uj5zu1e Před 2 měsíci

    Здравствуйте! Спасибо за урок.
    Возникла проблема при перебрасывание порта.
    docker: Error response from daemon: source /var/lib/docker/overlay2/bccacc2b865a27b2edf088677742e2686a835bec6ae4671d9e99e3331a0d080f/merged/etc/nginx/conf.d/default.conf is not directory.
    Введенный запрос: docker run -d -p 80:80 -v ./vhost.conf:/etc/nginx/conf.d/default.conf nginx
    Подскажите пожалуйста, в чем может быть проблема?

    • @danilovcode
      @danilovcode  Před 2 měsíci

      Похоже, что vhost.conf либо не существует, либо это директория а не файл

    • @andruxanik7769
      @andruxanik7769 Před 2 měsíci

      @@danilovcode у меня такая же проблема на Windows 10, файл есть, а при выполнении команды создается директория

    • @andruxanik7769
      @andruxanik7769 Před 2 měsíci

      Нужно использовать Windows PowerShell для данной команды а нет Git Bash

  • @Demimur186
    @Demimur186 Před 2 měsíci

    Подскажите пожалуйста, я хочу зарустить свой глобальный сервер с mysql, с php, как это можно сделать?!
    Где можно почитать!

    • @danilovcode
      @danilovcode  Před 2 měsíci +1

      Свой это на домашнем ПК? Если так, то вам нужен статический IP адрес. Провайдеры интернета предоставляют его за доп плату. Затем регистрируете домен у любого регистратора. Потом его можно добавить на любой бесплатный днс-хостинг (например cloudflare) и в днс-записях прописать ваш статический айпишник и имя домена. При этом у регистратора домена нужно прописать в ns-записях ns-сервера клаудфлера. Потом на свой комп устанавливаете все что нужно для вебсервера

    • @Demimur186
      @Demimur186 Před 2 měsíci

      @@danilovcode нет не компьютер, а серверную стойку собираюсь покупать! Там стоит уже Виндовс Сервер (ну вы знаете она не особо отличается), так вот, мне этот сервер нужен для того что я ранее перечислил! IP у меня уже есть, Домен и Поддомен тоже есть!
      Не могу разобраться, таким же способом устанавливать всё как и вы, или на таких серверах стоят какие то особые утилиты!

    • @danilovcode
      @danilovcode  Před 2 měsíci

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

    • @Demimur186
      @Demimur186 Před 2 měsíci

      @@danilovcode понял, что входит в стандартный стек?
      Кстати, обязательно пробрасывать порты? Если кабель изернет подключены на прямую к серверу, без роутера?
      Может у вас есть полный курс как сделать глобальный сервер, я хотел бы ознакомиться с материалом

    • @danilovcode
      @danilovcode  Před 2 měsíci

      Стандартный это apache+php+mysql или nginx+phpfpm+mysql. Вместо mysql может быть mariadb, pgsql и т.д. Вместо php-fpm может быть apache. Вместо nginx любой другой легковесный веб-сервер.
      В уроке порты пробрасываются в контейнер, это никак не связано с wifi роутером. На своем сервере вы можете не использовать докер, либо посмотреть уроки как делать деплой сервера на докере. Можете почитать еще про оркестрацию. Дело в том что настройки докера для локального сервера для разработки отличаются от продакшена. Рекомендую на проде пока не использовать докер, а для начала изучить получше обычный серверный стек

  • @user-ie7og5ce7j
    @user-ie7og5ce7j Před 9 měsíci

    какой контейнер откуда как эти директории создавать в терминале хз нихрена не создаётся

    • @danilovcode
      @danilovcode  Před 9 měsíci

      Я все по ходу видео подробно поясняю. Рекомендую посмотреть с самого начала, не пропуская важные части. Если у вас не получается что-то конкретное сделать - задавайте вопросы, на все постараюсь ответить. Но перед вопросом желательно напишите что вы делали и к каким ошибкам это привело.

  • @ruslanhamidulin8668
    @ruslanhamidulin8668 Před 6 měsíci

    Здравствуйте. Сколько бы я не старался, но порт 9000 phpfpm не выдает

    • @danilovcode
      @danilovcode  Před 6 měsíci

      Здравствуйте. Что значит не выдает? Что вы делали и что происходит? Есть сообщения об ошибках?

    • @ruslanhamidulin8668
      @ruslanhamidulin8668 Před 6 měsíci

      @@danilovcode нет всё запускается. Но порт нужно прописывать в ручную

  • @MrMikhailDJ
    @MrMikhailDJ Před 10 měsíci

    А что конкретно должно быть в SCRIPT_FILENAME? Путь до index.php? Если речь про phpmyadmin. Настраивать правда пытаюсь в k8s с nginx ingress контроллером и при заходе на phpmyadmin у меня просто белая страница, хотя коды ответов получает веб-сервер 200.

    • @danilovcode
      @danilovcode  Před 10 měsíci

      В SCRIPT_FILENAME полный путь до скрипта, которому передается запрос. Смотрите логи, возможно там что-то есть

    • @MrMikhailDJ
      @MrMikhailDJ Před 10 měsíci

      @@danilovcode логи где? В контейнере с phpmyadmin?

    • @MrMikhailDJ
      @MrMikhailDJ Před 10 měsíci

      @@danilovcode посмотрел. Проблема следующая: NOTICE: Access to the script '/var/www/html/js/dist/shortcuts_handler.js' has been denied (see security.limit_extensions)
      Насколько знаю этот параметр должен быть определен в конфиге пхп? Но где он в контейнере phpmyadmin? Даже через find с grep не нашел. Параметры для fastcgi такие стоят:
      DOCUMENT_ROOT: "/var/www/html"
      SCRIPT_FILENAME: "/var/www/html$fastcgi_script_name"
      PATH_INFO: "$fastcgi_path_info"
      PATH_TRANSLATED: "$document_root$fastcgi_path_info"
      HTTP_PROXY: ""
      Ну и дефолтный include на fastcgi параметры из ингресса nginx. Есть идеи как фиксить?

    • @danilovcode
      @danilovcode  Před 10 měsíci

      Ну да, в контейнере. Проверьте к тому ли контейнеру вы подключаетесь

    • @MrMikhailDJ
      @MrMikhailDJ Před 10 měsíci

      @@danilovcode я написал, что посмотрел) Проблема выше. Подключается все нормально. Ответ от корня 200, но все остальное 403 как будто проблема с правами. На рабочую папку в php все права www-data… И все никак. Может быть попробовать создать конфиг с параметром security.limit_extensions?

  • @TheEmberEve
    @TheEmberEve Před 2 měsíci +1

    Кто делает на винде учтите, путь должен быть с обратным слешем docker run -d -p 80:80 -v .\vhost.conf:/etc/nginx/conf.d/default.conf nginx
    И то только в windows консоли, а не git-bash например, там не работает даже прямой, файл не прокидывается, хотя и ошибку не выдает.

  • @vova_dev
    @vova_dev Před 10 měsíci +1

    -v не работает.
    Даже уже с одинаковым названием пробовал:
    docker container run -p 80:80 -v default.conf:/etc/nginx/conf.d/default.conf nginx
    docker: Error response from daemon: source /var/lib/docker/overlay2/8bebf42b69bb759052f4a4539c45490b13b6a65f28251c6faafa6774567f0819/merged/etc/nginx/conf.d/default.conf is not directory.
    udp. Получилось. Надо было полный путь указать. У меня ubuntu. У тебя IOS?

    • @danilovcode
      @danilovcode  Před 10 měsíci +2

      Нужно так:
      docker container run -p 80:80 -v ./default.conf:/etc/nginx/conf.d/default.conf nginx
      иначе докер думает, что это именованый волюм, а не путь к файлу

    • @kzamirtay520
      @kzamirtay520 Před 7 měsíci

      docker container run -d -p 80:80 -v ${PWD}/vhost.conf:/etc/nginx/conf.d/default.conf nginx
      На Windows так нужно делать

    • @danilovcode
      @danilovcode  Před 7 měsíci

      Можно и так. Pwd возвращает путь к текущей директории. Также как и точка

    • @Olegcowboyoleg
      @Olegcowboyoleg Před 4 měsíci +1

      @@kzamirtay520 $PWD без скобок - у меня только так сработало. до этого гемороился по-всякому.

    • @andruxanik7769
      @andruxanik7769 Před 2 měsíci

      @@Olegcowboyoleg а у меня не получается, при выполнении команды создается папка vhost.conf;C