Ну, смог запустить Nginx и Node.js, но было нифига не понятно, что я делаю. Сейчас тож не очень всё понятно, но некоторое понял. Скорее всего буду пользоваться, так как свой сайт на микросервисы переписываю, а там докер желателен, но пока не очень всё понятно
До просмотра урока для развертываения окружения я просто запускал контейнеры командой `docker compose up -d` и все остальное было для меня `магией`. А когда возникала ошибка, бежал к бекендерам... Теперь я более профессионально пользуюсь этим инструментом.
@user-zj1nn8zj8f докер используется не только для локальной разработки. К тому же у xampp очень ограниченные возможности и набор инструментов. Но лучше пользоваться тем, что вам удобнее, пока не понадобится что-то большее.
Лучшее видео по докеру что видел, а посмотрел немало. Автор сжато без воды впихнул максимум на примерах и ошибках. Побольше бы таких авторов и подобных уроков.
C докером баловался, но не до конца понимал, как связать между собой nginx, php, mySQL и PMA... Пытался даже запихать это все в один образ и вроде даже получилось... Но при первом же перезапуске что-то сломалось, что-то потерялось, разбираться было некогда, поэтому забил и забыл. В данном уроке очень многие вещи разъяснены идеально. И самое главное - приведен живой и нужный пример. Правда хотелось бы обращаться из nginx к php через sock-файл, а не по порту. Но думаю, разберусь... В общем большое спасибо. Появилось желание заюзать данную технологию в своих мини-проектах.
2 года назад смотрел курс по докеру, где так же бегло пробежались, но ничего не понятно. Тут всё тоже самое, но инфа заходит сразу и понятно. Всё зависит от подачи материала и самого создателя курса) Да, годнота)
Ролику почти год, но это лучшее что я встретил на ютубе на эту тему! Спасибо! Все отработало, как надо только мне пришлось убрать строку "name: network", она давала ошибку. Я так понял что docker обновился и теперь она не нужна (работал на MacOS).
Самое лучшее объяснения что пока видел в рунете. Автор - красавчик, с настройками nginx пришлось конечно просто скопипастить не вникая, но по сути это и не тема этого урока.
Может, кому интересно, но для нормальной работы mysql нужно папку ./mysql-data удалять перед тем, как новый контейнер тестить, а потом заново её пустую создавать. Иначе, получится, что у вас будут данные старого контейнера примонтированы в новый, и, вполне возможно не будет пускать под кредами root/root или любыми другими. У меня такое было, я только на 3 день додумался выполнить docker compose down -d, sudo rm -rf mysql-data, mkdir mysql-data, docker compose up -d
Все верно. Спасибо за уточнение. Рекомендуют также совсем не прокидывать вольюм базы данных в папку проекта, а делать его именованным. Тогда, во-первых, каждый вольюм в имени будет иметь префикс названия проекта и не будет пересекаться с другими проектами, а, во-вторых его легко удалять командой docker volume rm
Просто лучший. Несколько дней изучал Docker. Получил разрозненные знания, который не мог собрать в кучу и запустить сервер с php и БД. Тут же всё разъяснено очень доходчиво. Всё разложено по полочкам. Автору большое спасибо)
огромное спасибо за урок! до этого пользовался gui-версией докера, но теперь знаю как управляться с ним из консоли. было несколько затыков, связанных с относительными/абсолютными путями в терминале/файле yml на osx, разобрался. теория подана отлично, скорость иногда ставил на .75, масштаб информации в кадре хороший, хотя иногда приходилось ловить кадр) еще раз благодарю. лайк! подписка!
Еще, можете посмотреть Portainer - это тоже докер контейнер, но запускает сервер управления докер контейнерами. Очень удобная штука, особенно когда контейнеров становится дохрена, + возможность управления докер контейнерами на разных серверах
отличный урок. все детально объяснено. понятно что и почему там где оно есть. куча статьей пересмотрела, но там минимум теории и просто копируй строки. спасибо огромное
Не обязательно. Докер компоуз сам создает общую дефолтную сеть для контейнеров. Также сеть можно создать вне компоуз-файла (docker network create), а в компоузе у сети указать параметр external (например, это может понадобиться для объединения контейнеров в сеть из нескольких компоуз-конфигураций)
Привет.Прежде всего, хочу сказать спасибо за такой подробный и хорошо оформленный материал.В этом ролике, мы по факту прокинули в контейнер один файл, а если нужно разместить целое приложение на php в docker ? Мы должны также пробрасывать том с целым приложением и указывать корневую папку для index.php ? Или может для целого проекта лучше упаковывать его как-то в отдельный контейнер. Заранее извиняюсь за глупые вопросы, я новичок и пока плохо разбираюсь в этой технологии.
Спасибо за отзыв! Прокидывать можно целые папки если нужно. Такое делают обычно для dev-версии. На проде обычно папку проекта копируют в контейнер командой COPY в докерфайле. Урок по деплою проекта на проде скоро сделаю и выложу на канале
@@danilovcode скорее дело привычки. Обычные PHP хостинги (не vps) зачастую идут с такой связкой (nginx + apache) т.к. это позволяет конфигурировать сайт не копаясь во всем конфиге сервера, а задавая дополнительно правила через .htaccess и различные CMS используют их для своей настройки ЧПУ и т.п., что в целом облегчило бы перенос с таких хостингов в докер. Да и в целом при поиске каких-то настроек веб сервера они часто идут на примере настройки через .htaccess Хотя... учитывая специфику построения проекта на докере, возможно это будет не очень востребовано т.к. это больше помогает с проектами, где один веб сервер и много сайтов.
Господи . Какой молдец . Всё просто и понятно. все остальные уроки в корзину . Вопрос: Доккер äто по сути процесс и получается что для развертывания мне надо будет копировать всü структуру файловую н соответственно все файлы . В твоём промере это файл бд, конфиги и пхп . а как упаковать всё вместе .
Спасибо за отзыв! Деплой можно выполнять разными способами, в том числе и копированием всех директорий привязанных волюмами. Можно использовать git push и hook с автодеплоем на стороне сервиса. Но наиболее правильным считается упаковывание сайта в отдельный docker image. Затем его можно либо выложить в реестр (свой или какой-то из публичных), а на стороне продакшена сделать pull этого образа докером и запустить, либо просто скопировать на сервер и также снова запустить докером. Про деплой на продакшен планируется отдельный видеоурок в ближайшее время
Хороший курс, только возникла ошибка с подгрузкой index.php, в контейнере он есть, и изменения подтягиваются, вот только при попытке перейти на локалхост выдает File not found.
Пожалуй самый понятный вводный курс. Отдельное спасибо за чёткое пояснение про CMD и ENTRYPOINT!! Никто не объясняет этот момент. После Вашего пояснения понятно стало в чем разница. Хорошо бы ещё отдельно записать как создавать симлинки в контейнере используя volumes_from. И в целом насколько правильно выносить в отдельный сервис установку composer и создание симлинка в директории (нужен именно симлинк). понятно что можно в контейнере запустить команду но зачем если это можно автоматизировать. PS. окружение - wsl.
Подача материала хорошая, спасибо! Однако, столкнулся с тем, что `docker run` каждый раз создает новый контейнер и перед очередным запуском приходится удалять старый
Отличное видео, отличная подача материала. Спасибо!! Один вопрос только - со всем разобрался и почти все заработало, но нет доступа к phpmyadmin. При вводе localhost:1500 вылезает окошко с надписью о том что надо выбрать приложение для открытия этой ссылки(((
Спасибо за отзыв! Попробуйте вбить localhost:1500 должно сработать. Ваш браузер почему-то слово localhost воспринял как имя протокола (по типу http, ftp). Также, возможно, что вы слово localhost с ошибкой написали.
У меня не заработало - docker run -d -p 80:80 nginx Пробовал с разными портами. udp. Заработало, на виртуалке всё делаю. Там в настройках сети выставлено NAT. Из-за этого какая-то трабла с loopback. Сделал bridge, всё ок.
Здравствуйте! Спасибо за урок. Возникла проблема при перебрасывание порта. 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 Подскажите пожалуйста, в чем может быть проблема?
Я новичок в докере, но по каким я мануалам делал, то никаких сетей не создавал. nginx обращается к php-fpm через имя контейнера и порт. Докер автоматически связывает контейнеры в одну сеть.
Приветствую. Огромное спасибо за отличное объяснение. Супер все понятно. Я новичок, поэтому пока просто повторяю постепенно осознавая, как все работает. Столкнулся с проблемой, что после изменения конфигурационного файла на запрос index.php у меня вместо открытия страницы с версией php открывается окно сохранения файла с текстом из нашего файла index.php. Немного поискал и нашел ответ, что это по причине того, что не установлен php - поэтому скрипт не срабатывает. Я пересмотрел создание контейнера php81fpm несколько раз, вроде все верно написал. Может кто подскажет, где я не так сделал или что проверить? (контейнер из Dockerfile создан и работает успешно). Может на момент записи видео этот образ был актуален, а сейчас нет?
Выложите свой вопрос телеграм группу @danilovcodechat и прикрепите скрины или pastebin.com с содержимым используемых конфигов, докерфайлов и команд которые используете для создания/запуска контейнеров/образов
если у кого после монтирования томов в nginx все равно ошибка 404. пропишите в конфиге на локальном хосте рут директорию в директиве location. для более подробной инфы запустите nginx без монтирования томов и посмотрите как там сделан дефолтный конфиг.
Не понял: нетворк мы пишем в compose и всё? Всё, что делали до этого в консоли с сетью роли не играет? Просто пишем нетворк: нетворк2 и присоединяем все сервисы в одну сеть ив всё?
Да, всё верно. Но можно использовать и сеть созданную в консоли или даже в другом композе, если прописать в текщем композе у нее параметр external: true
Свой это на домашнем ПК? Если так, то вам нужен статический IP адрес. Провайдеры интернета предоставляют его за доп плату. Затем регистрируете домен у любого регистратора. Потом его можно добавить на любой бесплатный днс-хостинг (например cloudflare) и в днс-записях прописать ваш статический айпишник и имя домена. При этом у регистратора домена нужно прописать в ns-записях ns-сервера клаудфлера. Потом на свой комп устанавливаете все что нужно для вебсервера
@@danilovcode нет не компьютер, а серверную стойку собираюсь покупать! Там стоит уже Виндовс Сервер (ну вы знаете она не особо отличается), так вот, мне этот сервер нужен для того что я ранее перечислил! IP у меня уже есть, Домен и Поддомен тоже есть! Не могу разобраться, таким же способом устанавливать всё как и вы, или на таких серверах стоят какие то особые утилиты!
@@danilovcode понял, что входит в стандартный стек? Кстати, обязательно пробрасывать порты? Если кабель изернет подключены на прямую к серверу, без роутера? Может у вас есть полный курс как сделать глобальный сервер, я хотел бы ознакомиться с материалом
Стандартный это apache+php+mysql или nginx+phpfpm+mysql. Вместо mysql может быть mariadb, pgsql и т.д. Вместо php-fpm может быть apache. Вместо nginx любой другой легковесный веб-сервер. В уроке порты пробрасываются в контейнер, это никак не связано с wifi роутером. На своем сервере вы можете не использовать докер, либо посмотреть уроки как делать деплой сервера на докере. Можете почитать еще про оркестрацию. Дело в том что настройки докера для локального сервера для разработки отличаются от продакшена. Рекомендую на проде пока не использовать докер, а для начала изучить получше обычный серверный стек
А что конкретно должно быть в SCRIPT_FILENAME? Путь до index.php? Если речь про phpmyadmin. Настраивать правда пытаюсь в k8s с nginx ingress контроллером и при заходе на phpmyadmin у меня просто белая страница, хотя коды ответов получает веб-сервер 200.
@@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 я написал, что посмотрел) Проблема выше. Подключается все нормально. Ответ от корня 200, но все остальное 403 как будто проблема с правами. На рабочую папку в php все права www-data… И все никак. Может быть попробовать создать конфиг с параметром security.limit_extensions?
Я все по ходу видео подробно поясняю. Рекомендую посмотреть с самого начала, не пропуская важные части. Если у вас не получается что-то конкретное сделать - задавайте вопросы, на все постараюсь ответить. Но перед вопросом желательно напишите что вы делали и к каким ошибкам это привело.
Кто делает на винде учтите, путь должен быть с обратным слешем docker run -d -p 80:80 -v .\vhost.conf:/etc/nginx/conf.d/default.conf nginx И то только в windows консоли, а не git-bash например, там не работает даже прямой, файл не прокидывается, хотя и ошибку не выдает.
-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?
Нужно так: docker container run -p 80:80 -v ./default.conf:/etc/nginx/conf.d/default.conf nginx иначе докер думает, что это именованый волюм, а не путь к файлу
Пользовались ли вы Docker до просмотра урока и будете ли пользоваться после?
Ну, смог запустить Nginx и Node.js, но было нифига не понятно, что я делаю. Сейчас тож не очень всё понятно, но некоторое понял. Скорее всего буду пользоваться, так как свой сайт на микросервисы переписываю, а там докер желателен, но пока не очень всё понятно
До просмотра урока для развертываения окружения я просто запускал контейнеры командой `docker compose up -d` и все остальное было для меня `магией`. А когда возникала ошибка, бежал к бекендерам... Теперь я более профессионально пользуюсь этим инструментом.
теперь я ещё больше во всём запутался.... Однозначно буду!!! 🦧
Имею печальный опыт пользования. Что-то не очень хочется им пользоваться, xampp для меня привычнее и удобнее
@user-zj1nn8zj8f докер используется не только для локальной разработки. К тому же у xampp очень ограниченные возможности и набор инструментов. Но лучше пользоваться тем, что вам удобнее, пока не понадобится что-то большее.
Лучшее видео по докеру что видел, а посмотрел немало. Автор сжато без воды впихнул максимум на примерах и ошибках. Побольше бы таких авторов и подобных уроков.
Спасибо за отзыв!
Спасибо, добрый человек, теперь я ОКОНЧАТЕЛЬНО все понял
Это просто нечто, спасибо огромное!
Спасибо за отзыв!
C докером баловался, но не до конца понимал, как связать между собой nginx, php, mySQL и PMA... Пытался даже запихать это все в один образ и вроде даже получилось... Но при первом же перезапуске что-то сломалось, что-то потерялось, разбираться было некогда, поэтому забил и забыл. В данном уроке очень многие вещи разъяснены идеально. И самое главное - приведен живой и нужный пример. Правда хотелось бы обращаться из nginx к php через sock-файл, а не по порту. Но думаю, разберусь... В общем большое спасибо. Появилось желание заюзать данную технологию в своих мини-проектах.
2 года назад смотрел курс по докеру, где так же бегло пробежались, но ничего не понятно. Тут всё тоже самое, но инфа заходит сразу и понятно. Всё зависит от подачи материала и самого создателя курса) Да, годнота)
Спасибо за высокую оценку!
Ролику почти год, но это лучшее что я встретил на ютубе на эту тему! Спасибо! Все отработало, как надо только мне пришлось убрать строку "name: network", она давала ошибку. Я так понял что docker обновился и теперь она не нужна (работал на MacOS).
Скорее всего сеть с таким именем у вас уже просто существует.
Спасибо за отзыв!
@@danilovcode спасибо. Проверю
@@danilovcode Спасибо за ответ! Вы оказались правы.)
Самое лучшее объяснения что пока видел в рунете. Автор - красавчик, с настройками nginx пришлось конечно просто скопипастить не вникая, но по сути это и не тема этого урока.
Спасибо за отзыв!
Может, кому интересно, но для нормальной работы mysql нужно папку ./mysql-data удалять перед тем, как новый контейнер тестить, а потом заново её пустую создавать. Иначе, получится, что у вас будут данные старого контейнера примонтированы в новый, и, вполне возможно не будет пускать под кредами root/root или любыми другими. У меня такое было, я только на 3 день додумался выполнить docker compose down -d, sudo rm -rf mysql-data, mkdir mysql-data, docker compose up -d
Все верно. Спасибо за уточнение. Рекомендуют также совсем не прокидывать вольюм базы данных в папку проекта, а делать его именованным. Тогда, во-первых, каждый вольюм в имени будет иметь префикс названия проекта и не будет пересекаться с другими проектами, а, во-вторых его легко удалять командой docker volume rm
Просто лучший. Несколько дней изучал Docker. Получил разрозненные знания, который не мог собрать в кучу и запустить сервер с php и БД.
Тут же всё разъяснено очень доходчиво. Всё разложено по полочкам.
Автору большое спасибо)
Спасибо за отзыв!
Это лучшее что я видел на тему докера!
Спасибо за отзыв! По докеру скоро будут еще видео. Следите за новостями)
Просто концентрат полезной информации! Огромное спасибо!!!!!!!
Не знаю кого благодарить, за то что я нашел это урок. Но точно благодарю вас, за этот поистине великолепный урок.
Спасибо за отзыв!
Большое спасибо за данное видео! Стало намного понятнее, вы очень хорошо объясняете.
Спасибо за отзыв!
огромное спасибо за урок! до этого пользовался gui-версией докера, но теперь знаю как управляться с ним из консоли. было несколько затыков, связанных с относительными/абсолютными путями в терминале/файле yml на osx, разобрался. теория подана отлично, скорость иногда ставил на .75, масштаб информации в кадре хороший, хотя иногда приходилось ловить кадр) еще раз благодарю. лайк! подписка!
Спасибо за отзыв!
Еще, можете посмотреть Portainer - это тоже докер контейнер, но запускает сервер управления докер контейнерами. Очень удобная штука, особенно когда контейнеров становится дохрена, + возможность управления докер контейнерами на разных серверах
Просто невероятное видео, полное уважения и взаимопонимания! Голос, подача материала и тд. Респект вам за труд. Это настоящий обмен знаниями. Браво! 🌟
Спасибо за отзыв!
Лучший урок на ютубе из тех что я видел!
Спасибо!
Спасибо большое за проделанную работу!
Пожалуйста! Приятного просмотра!
отличный урок. все детально объяснено. понятно что и почему там где оно есть. куча статьей пересмотрела, но там минимум теории и просто копируй строки. спасибо огромное
Спасибо за отзыв!
Нормальная годнота, без воды типа, как скачать и запустить 2 команды hello world - сразу рабочая связка приложения построенная на контейнерах. Круто!
Спасибо! Такие отзывы мотивируют выпускать еще более крутые ролики!
Крутой урок, особенно погравилось что про network рассказали, спасибо
Пожалуйста!
@@danilovcodeкстати обязательно задавать network в compose ? Я видел примеры где сеть не создают вообще в compose
Не обязательно. Докер компоуз сам создает общую дефолтную сеть для контейнеров. Также сеть можно создать вне компоуз-файла (docker network create), а в компоузе у сети указать параметр external (например, это может понадобиться для объединения контейнеров в сеть из нескольких компоуз-конфигураций)
Хорошее видео, очень познавательно. Спасибо.
Спасибо за отзыв!
Спасибо за видео! Все очень хорошо объясняется.
Спасибо большое, урок понятный и наглядный😁
Спасибо за отзыв!
Потрясающе! Автору спасибо
Большое спасибо Вам за это видео, было очень полезно!
Спасибо за отзыв!
Ставлю лайк, все основы в одном видео)
Спасибо за отзыв!
Классный видос, подача, голос!
Большое спасибо! Очень полезный контент, можно по подробнее о нетворке
Спасибо за отзыв! Возможно, будет подробнее
Спасибо за урок👍
Пожалуйста!
Подача супер! Спасибо за ваш труд. Лайк, подписка, буду смотреть.
Еще бы про права доступа при записи в файлы )
Спасибо за отзыв!
Что вы имеете в виду про права доступа?
Спасибо, да пользуюсь докером...
Спасибо, отличное видео!
Спасибо за отзыв!
Привет.Прежде всего, хочу сказать спасибо за такой подробный и хорошо оформленный материал.В этом ролике, мы по факту прокинули в контейнер один файл, а если нужно разместить целое приложение на php в docker ? Мы должны также пробрасывать том с целым приложением и указывать корневую папку для index.php ? Или может для целого проекта лучше упаковывать его как-то в отдельный контейнер. Заранее извиняюсь за глупые вопросы, я новичок и пока плохо разбираюсь в этой технологии.
Спасибо за отзыв! Прокидывать можно целые папки если нужно. Такое делают обычно для dev-версии. На проде обычно папку проекта копируют в контейнер командой COPY в докерфайле. Урок по деплою проекта на проде скоро сделаю и выложу на канале
Очень полезно, благодарю
Спасибо!
Годнота!
Спасибо за отзыв!
спс за урок!
Спс за просмотр!
Спасибо за видео. Было бы интересно посмотреть как к nginx ещё добавить apache чтобы .htaccess можно было использовать
Ок, возьму на заметку! Один вопрос, а вам зачем htaccess в данном случае?
@@danilovcode скорее дело привычки. Обычные PHP хостинги (не vps) зачастую идут с такой связкой (nginx + apache) т.к. это позволяет конфигурировать сайт не копаясь во всем конфиге сервера, а задавая дополнительно правила через .htaccess и различные CMS используют их для своей настройки ЧПУ и т.п., что в целом облегчило бы перенос с таких хостингов в докер. Да и в целом при поиске каких-то настроек веб сервера они часто идут на примере настройки через .htaccess
Хотя... учитывая специфику построения проекта на докере, возможно это будет не очень востребовано т.к. это больше помогает с проектами, где один веб сервер и много сайтов.
Спасибо)
Господи . Какой молдец . Всё просто и понятно. все остальные уроки в корзину .
Вопрос: Доккер äто по сути процесс и получается что для развертывания мне надо будет копировать всü структуру файловую н соответственно все файлы . В твоём промере это файл бд, конфиги и пхп . а как упаковать всё вместе .
Спасибо за отзыв!
Деплой можно выполнять разными способами, в том числе и копированием всех директорий привязанных волюмами. Можно использовать git push и hook с автодеплоем на стороне сервиса. Но наиболее правильным считается упаковывание сайта в отдельный docker image. Затем его можно либо выложить в реестр (свой или какой-то из публичных), а на стороне продакшена сделать pull этого образа докером и запустить, либо просто скопировать на сервер и также снова запустить докером.
Про деплой на продакшен планируется отдельный видеоурок в ближайшее время
8:44 Завершить процесс клавишей ctrl+c
Да, все верно. Не упомянул этого в видео, спасибо
Хороший курс, только возникла ошибка с подгрузкой index.php, в контейнере он есть, и изменения подтягиваются, вот только при попытке перейти на локалхост выдает File not found.
Скиньте скрины в группу телеграм t.me/danilovcodechat - конфига docker compose (либо командную строку которой создаете контейнер) и конфига nginx. Попробуем разобраться
Пожалуй самый понятный вводный курс. Отдельное спасибо за чёткое пояснение про CMD и ENTRYPOINT!!
Никто не объясняет этот момент. После Вашего пояснения понятно стало в чем разница. Хорошо бы ещё отдельно записать как создавать симлинки в контейнере используя volumes_from. И в целом насколько правильно выносить в отдельный сервис установку composer и создание симлинка в директории (нужен именно симлинк). понятно что можно в контейнере запустить команду но зачем если это можно автоматизировать.
PS. окружение - wsl.
Спасибо за отзыв! По симлинкам думаю запишу видео в ближайшем будущем
Подача материала хорошая, спасибо!
Однако, столкнулся с тем, что `docker run` каждый раз создает новый контейнер и перед очередным запуском приходится удалять старый
Спасибо за отзыв!
Вы можете добавлять опцию --rm к команде run, тогда остановленный контейнер будет автоматически удаляться.
docker run --rm
Отличное видео, отличная подача материала. Спасибо!! Один вопрос только - со всем разобрался и почти все заработало, но нет доступа к phpmyadmin. При вводе localhost:1500 вылезает окошко с надписью о том что надо выбрать приложение для открытия этой ссылки(((
Спасибо за отзыв!
Попробуйте вбить localhost:1500 должно сработать. Ваш браузер почему-то слово localhost воспринял как имя протокола (по типу http, ftp). Также, возможно, что вы слово localhost с ошибкой написали.
@@danilovcodeспасибо! Все заработало😊
У меня не заработало - docker run -d -p 80:80 nginx
Пробовал с разными портами.
udp. Заработало, на виртуалке всё делаю. Там в настройках сети выставлено NAT. Из-за этого какая-то трабла с loopback. Сделал bridge, всё ок.
Здравствуйте! Спасибо за урок.
Возникла проблема при перебрасывание порта.
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
Подскажите пожалуйста, в чем может быть проблема?
Похоже, что vhost.conf либо не существует, либо это директория а не файл
@@danilovcode у меня такая же проблема на Windows 10, файл есть, а при выполнении команды создается директория
Нужно использовать Windows PowerShell для данной команды а нет Git Bash
Я новичок в докере, но по каким я мануалам делал, то никаких сетей не создавал.
nginx обращается к php-fpm через имя контейнера и порт.
Докер автоматически связывает контейнеры в одну сеть.
Да, докер по-умолчанию помещает контейнеры в дефолтную сеть, если не указать иное
Спасибо, отлично, только в конце у меня Welcome to nginx! опять
Скорее всего у вас не сработал volume с конфигом nginx. Проверьте, правильно ли написаны пути
Приветствую.
Огромное спасибо за отличное объяснение. Супер все понятно. Я новичок, поэтому пока просто повторяю постепенно осознавая, как все работает. Столкнулся с проблемой, что после изменения конфигурационного файла на запрос index.php у меня вместо открытия страницы с версией php открывается окно сохранения файла с текстом из нашего файла index.php. Немного поискал и нашел ответ, что это по причине того, что не установлен php - поэтому скрипт не срабатывает. Я пересмотрел создание контейнера php81fpm несколько раз, вроде все верно написал. Может кто подскажет, где я не так сделал или что проверить? (контейнер из Dockerfile создан и работает успешно). Может на момент записи видео этот образ был актуален, а сейчас нет?
Выложите свой вопрос телеграм группу @danilovcodechat и прикрепите скрины или pastebin.com с содержимым используемых конфигов, докерфайлов и команд которые используете для создания/запуска контейнеров/образов
Здравствуйте, можете поделиться с исходным кодом проекта? Спасибо.
Здравстуйте, к сожалению не сохранился исходник проекта
если у кого после монтирования томов в nginx все равно ошибка 404. пропишите в конфиге на локальном хосте рут директорию в директиве location. для более подробной инфы запустите nginx без монтирования томов и посмотрите как там сделан дефолтный конфиг.
Не понял: нетворк мы пишем в compose и всё? Всё, что делали до этого в консоли с сетью роли не играет? Просто пишем нетворк: нетворк2 и присоединяем все сервисы в одну сеть ив всё?
Да, всё верно. Но можно использовать и сеть созданную в консоли или даже в другом композе, если прописать в текщем композе у нее параметр external: true
@@danilovcode ++
А как composer подключить? тоже в services его прописать?
Прописать его установку в Dokerfile. Вот пример th-cam.com/video/gVGfegSLg14/w-d-xo.html
Подскажите пожалуйста, я хочу зарустить свой глобальный сервер с mysql, с php, как это можно сделать?!
Где можно почитать!
Свой это на домашнем ПК? Если так, то вам нужен статический IP адрес. Провайдеры интернета предоставляют его за доп плату. Затем регистрируете домен у любого регистратора. Потом его можно добавить на любой бесплатный днс-хостинг (например cloudflare) и в днс-записях прописать ваш статический айпишник и имя домена. При этом у регистратора домена нужно прописать в ns-записях ns-сервера клаудфлера. Потом на свой комп устанавливаете все что нужно для вебсервера
@@danilovcode нет не компьютер, а серверную стойку собираюсь покупать! Там стоит уже Виндовс Сервер (ну вы знаете она не особо отличается), так вот, мне этот сервер нужен для того что я ранее перечислил! IP у меня уже есть, Домен и Поддомен тоже есть!
Не могу разобраться, таким же способом устанавливать всё как и вы, или на таких серверах стоят какие то особые утилиты!
С виндовс сервером я вам не подскажу что делать. Я считаю, что ставить надо линукс и на него стандартный стек для вебсервера.
@@danilovcode понял, что входит в стандартный стек?
Кстати, обязательно пробрасывать порты? Если кабель изернет подключены на прямую к серверу, без роутера?
Может у вас есть полный курс как сделать глобальный сервер, я хотел бы ознакомиться с материалом
Стандартный это apache+php+mysql или nginx+phpfpm+mysql. Вместо mysql может быть mariadb, pgsql и т.д. Вместо php-fpm может быть apache. Вместо nginx любой другой легковесный веб-сервер.
В уроке порты пробрасываются в контейнер, это никак не связано с wifi роутером. На своем сервере вы можете не использовать докер, либо посмотреть уроки как делать деплой сервера на докере. Можете почитать еще про оркестрацию. Дело в том что настройки докера для локального сервера для разработки отличаются от продакшена. Рекомендую на проде пока не использовать докер, а для начала изучить получше обычный серверный стек
А что конкретно должно быть в SCRIPT_FILENAME? Путь до index.php? Если речь про phpmyadmin. Настраивать правда пытаюсь в k8s с nginx ingress контроллером и при заходе на phpmyadmin у меня просто белая страница, хотя коды ответов получает веб-сервер 200.
В SCRIPT_FILENAME полный путь до скрипта, которому передается запрос. Смотрите логи, возможно там что-то есть
@@danilovcode логи где? В контейнере с phpmyadmin?
@@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 я написал, что посмотрел) Проблема выше. Подключается все нормально. Ответ от корня 200, но все остальное 403 как будто проблема с правами. На рабочую папку в php все права www-data… И все никак. Может быть попробовать создать конфиг с параметром security.limit_extensions?
Здравствуйте. Сколько бы я не старался, но порт 9000 phpfpm не выдает
Здравствуйте. Что значит не выдает? Что вы делали и что происходит? Есть сообщения об ошибках?
@@danilovcode нет всё запускается. Но порт нужно прописывать в ручную
Отлично. Не мешало бы в php контейнер прикрутить composer!
Вот в этом уроке прикручиваем compozer: th-cam.com/video/gVGfegSLg14/w-d-xo.html
какой контейнер откуда как эти директории создавать в терминале хз нихрена не создаётся
Я все по ходу видео подробно поясняю. Рекомендую посмотреть с самого начала, не пропуская важные части. Если у вас не получается что-то конкретное сделать - задавайте вопросы, на все постараюсь ответить. Но перед вопросом желательно напишите что вы делали и к каким ошибкам это привело.
Кто делает на винде учтите, путь должен быть с обратным слешем docker run -d -p 80:80 -v .\vhost.conf:/etc/nginx/conf.d/default.conf nginx
И то только в windows консоли, а не git-bash например, там не работает даже прямой, файл не прокидывается, хотя и ошибку не выдает.
Thank you, I spent three days looking for a solution, why my mount does not work. And then I saw this comment and everything worked!!!
-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?
Нужно так:
docker container run -p 80:80 -v ./default.conf:/etc/nginx/conf.d/default.conf nginx
иначе докер думает, что это именованый волюм, а не путь к файлу
docker container run -d -p 80:80 -v ${PWD}/vhost.conf:/etc/nginx/conf.d/default.conf nginx
На Windows так нужно делать
Можно и так. Pwd возвращает путь к текущей директории. Также как и точка
@@kzamirtay520 $PWD без скобок - у меня только так сработало. до этого гемороился по-всякому.
@@Olegcowboyoleg а у меня не получается, при выполнении команды создается папка vhost.conf;C
Очень полезное видео, спасибо автору!