Bash + Docker Compose. Простой деплой docker приложений на простой Ubuntu сервер
Вставка
- Опубліковано 19 сер 2024
- Деплой проекта позволяет сделать ваше приложение видимым для вашей аудитории. Мы, в Wormsoft, перепробовали разные варианты деплоя. Для небольших проектов мы остановились на варианте простого Bash скрипта вместе с правильно настроенным docker-compose файлом.
Более подробное описание к ролику можно прочитать в моем блоге - amorev.ru/gmor...
Также прикрепляю ссылки на репозитории, про которые говорю в видео:
github.com/gmo... - пример интерфейса, который общается с публичным микросервисом.
github.com/gmo... - пример “микросервисов”, которые общаются между собой через REST и один из них открыт в паблик и доступен для интерфейса.
github.com/gmo... - репозиторий с примером боевогоо docker-compose файла, bash скрипта и примером .env. Данный пример разворачивает
Мой Telegram канал - t.me/amorev94
Это просто мегаполезное видео. Фактически по нему и дополнительному гуглению понял как работает docker, как разворачивать приложение, и насколько это все интересно. И в итоге сделал свой петпроджект. Автору бесконечное спасибо. За 20 минут очень понятно, доступно все объяснил.
Прекрасно! Очень рад, что видео понравилось и оказалось полезным! Спасибо огромное за комментарий!
Живописно!
побольше бы таких уроков...
Спасибо большое, переиспользовал некоторые кучки кода, с первого раза поднял личный "прод".
Респект
Очень рад! Спасибо за комментарий!
Продолжай в этом духе!
Норм схема👍 но можно улучшить.
В docket way правильнее сначала собирать образы и только потом их деплоить. Gitlab CI + Gitlab Container registry.
Ну по сути мы сразу собираем и "деплоим" на тот же сервер) Оно так получается быстрее, чем сначаа залить в registry а потом оттуда пуллить. На некоторых проектах делаем именно так, чтобы сервер не грузить сборкой, а на мелких проектах отлично едет и такой вариант
очень интересно, жаль шо ниче не понятно
Если вы делаете свой первый деплой через Docker, можете не смотреть это, вы ничего не поймете.
Здравствуйте! Я новичок, наткнулся на ваше видео и мне понравилось. Но есть пара вопросов:
1. как деплоить бота (телеграм) на сервер вместо сайта?
2. Что делать если этих ботов может быть много, и я хочу запустить их независимо друг от друга на одном сервере?
Спасибо!
1. Также можно деплоить. Просто вам не нужен http порт, если вы не собираетесь работать через webhook
2. можете таких копий через docker запускать сколько угодно много на одном сервере, пока хватает диска, памяти и процессора
А не думали начать использовать ansible?
Не только думали) мы его используем. Но для данного видео решил пойти путем bash скрипта для настройки окружения, чтобы наглядно показать тем, кто вообще не в теме ansible. Вы - не первый, кто мне это уже написал и похоже надо будет сделать подобный видос про то, как у нас это устроено при ansible.
Спасибо за обратную связь!
столкнулся с проблемой. сделал все как показано и по шпаргалке с гита все запустилось но запросы никак не проходят есть идеи что я мог сделать не так? докре пс пишет что все работает да и телеграм бот который запускаеться в контейнере отрабатывает. но я так понимаю nginx не пропускает запросы так как без проксирования запросы проходят
Вы можете написать мне в личке в Telegram - @amorevbot и я подскажу) просто по вашему сообщению подсказать вам врядли смогу)
Объясни пожалуйста почему service1 и service2 висят на одинаковом порту 3001? Заранее спасибо.
Потому что они находятся в изолированной Docker сети и не выходят за ее пределы. Я не прописываю ничего в ports блок. А общаются между собой они уже по 3001 портам (потому что открыли 3001 внутри сети через expose)
Дружище, помоги с настройкой простого сервака, я через докер компоуз делал, проблема в том что локально на существующую базу поднимается норм, а вот удаленно, беда, пробую поднять все меня не пускает, фатал ерорр не находит базу, смотрел через docker inspect, порт есть, а вот айпишник пустое поле
а сама база запущена на том же сервере?
А если например в бд в ручную нужно что-то поменять , как быть ?
ua-cam.com/video/GBx3KEcuKFA/v-deo.html я в этом ролике показывал как я это делаю через туннели. Можно в phpstorm настроить подключение или любой другой проге, которая работает PG
@@amorev там вы рассказываете про туннели, а я как раз таки спрашивал про pgadmin или phpmyadmin, про эти платформы которые администрируют субд, как с ними быть ? если их так же в контейнере запускать то они будут доступны всем, нужно закрывать тоже там доступ ко всему этому ? хотелось бы про это узнать
@@amorev всё же пересмотрел пару раз видео, и если я правильно понял то благодаря туннелям я могу со своего компа запустить например тот же phpmyadmin или pgadmin и подключиться к контейнеру к субд ? я правильно понял этот момент в целом ?
@@llwebstylell242 о. интересный вопрос. Ну, во-первых, на этих интерфейсах тоже есть авторизация. Плюс можно добавить basic авторизацию на уровне HTTP в nginx-reverse-proxy. Но, если честно, в бою такие решения очень очень выглядят опасно - забрутфорсят.
Если критически важен phpmyadmin, то я бы его запустил внутри и через docker-hostmanager и ssh туннель уже подключался на него.
Благодарю за вопрос!
@@llwebstylell242 Вы поняли почти правильно да. Я бы сделал так - на сервере запустил phpmyadmin, но не открывал бы его порт внешнему миру. Далее через ssh туннель сделал бы проброс порта phpmyadmin (через его домен в докер сети и docker-hostmanager) и дальше уже на своем компе подключался бы следующим образом:
1. Включил туннель со своего 8080 порта на 80 порт phpmyadmin на удаленной машине.
2. У себя в браузере открыл бы адрес localhost:8080 и работал бы с phpmyadmin как будто он стоит локально
что за хост, у которого брал сервак на убунту, а то я взял и у меня рут прав не было, даже не поигрался с докером
хм. вообще где угодно дают хост с рутом..
Странно вообще без рута давать хост. Даже sudo не работает?
Так беру обычно vds.selectel.ru или hetzner
@@amorev вообще ничего не работает с sudo, чтобы что-нибудь пулнуть из докерхаба нужно зарегаться, а чтобы регнуться нужно обновить докер а без судо нельзя это сделать
Может у вас был сервак с Debian?
Зачем Ubuntu на сервер, если есть Debian?
Так сложилось исторически. Так то и на Debian все тоже самое можно сделать:)
убунта популярна
up -d не демон, а детач
ага) просто он запускается в формате демона)