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

КОМЕНТАРІ • 37

  • @volatilnost
    @volatilnost 5 місяців тому +1

    Это просто мегаполезное видео. Фактически по нему и дополнительному гуглению понял как работает docker, как разворачивать приложение, и насколько это все интересно. И в итоге сделал свой петпроджект. Автору бесконечное спасибо. За 20 минут очень понятно, доступно все объяснил.

    • @amorev
      @amorev  5 місяців тому

      Прекрасно! Очень рад, что видео понравилось и оказалось полезным! Спасибо огромное за комментарий!

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

    Живописно!
    побольше бы таких уроков...

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

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

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

      Очень рад! Спасибо за комментарий!

  • @hs-pp3xh
    @hs-pp3xh 2 роки тому +1

    Продолжай в этом духе!

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

    Норм схема👍 но можно улучшить.
    В docket way правильнее сначала собирать образы и только потом их деплоить. Gitlab CI + Gitlab Container registry.

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

      Ну по сути мы сразу собираем и "деплоим" на тот же сервер) Оно так получается быстрее, чем сначаа залить в registry а потом оттуда пуллить. На некоторых проектах делаем именно так, чтобы сервер не грузить сборкой, а на мелких проектах отлично едет и такой вариант

  • @dd-pe5dp
    @dd-pe5dp Рік тому +1

    очень интересно, жаль шо ниче не понятно

  • @user-ey3yn9fw6s
    @user-ey3yn9fw6s 11 місяців тому +7

    Если вы делаете свой первый деплой через Docker, можете не смотреть это, вы ничего не поймете.

  • @whicencer8819
    @whicencer8819 7 місяців тому

    Здравствуйте! Я новичок, наткнулся на ваше видео и мне понравилось. Но есть пара вопросов:
    1. как деплоить бота (телеграм) на сервер вместо сайта?
    2. Что делать если этих ботов может быть много, и я хочу запустить их независимо друг от друга на одном сервере?
    Спасибо!

    • @amorev
      @amorev  7 місяців тому +1

      1. Также можно деплоить. Просто вам не нужен http порт, если вы не собираетесь работать через webhook
      2. можете таких копий через docker запускать сколько угодно много на одном сервере, пока хватает диска, памяти и процессора

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

    А не думали начать использовать ansible?

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

      Не только думали) мы его используем. Но для данного видео решил пойти путем bash скрипта для настройки окружения, чтобы наглядно показать тем, кто вообще не в теме ansible. Вы - не первый, кто мне это уже написал и похоже надо будет сделать подобный видос про то, как у нас это устроено при ansible.
      Спасибо за обратную связь!

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

    столкнулся с проблемой. сделал все как показано и по шпаргалке с гита все запустилось но запросы никак не проходят есть идеи что я мог сделать не так? докре пс пишет что все работает да и телеграм бот который запускаеться в контейнере отрабатывает. но я так понимаю nginx не пропускает запросы так как без проксирования запросы проходят

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

      Вы можете написать мне в личке в Telegram - @amorevbot и я подскажу) просто по вашему сообщению подсказать вам врядли смогу)

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

    Объясни пожалуйста почему service1 и service2 висят на одинаковом порту 3001? Заранее спасибо.

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

      Потому что они находятся в изолированной Docker сети и не выходят за ее пределы. Я не прописываю ничего в ports блок. А общаются между собой они уже по 3001 портам (потому что открыли 3001 внутри сети через expose)

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

    Дружище, помоги с настройкой простого сервака, я через докер компоуз делал, проблема в том что локально на существующую базу поднимается норм, а вот удаленно, беда, пробую поднять все меня не пускает, фатал ерорр не находит базу, смотрел через docker inspect, порт есть, а вот айпишник пустое поле

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

      а сама база запущена на том же сервере?

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

    А если например в бд в ручную нужно что-то поменять , как быть ?

    • @amorev
      @amorev  Рік тому +2

      ua-cam.com/video/GBx3KEcuKFA/v-deo.html я в этом ролике показывал как я это делаю через туннели. Можно в phpstorm настроить подключение или любой другой проге, которая работает PG

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

      @@amorev там вы рассказываете про туннели, а я как раз таки спрашивал про pgadmin или phpmyadmin, про эти платформы которые администрируют субд, как с ними быть ? если их так же в контейнере запускать то они будут доступны всем, нужно закрывать тоже там доступ ко всему этому ? хотелось бы про это узнать

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

      @@amorev всё же пересмотрел пару раз видео, и если я правильно понял то благодаря туннелям я могу со своего компа запустить например тот же phpmyadmin или pgadmin и подключиться к контейнеру к субд ? я правильно понял этот момент в целом ?

    • @amorev
      @amorev  Рік тому +2

      ​@@llwebstylell242 о. интересный вопрос. Ну, во-первых, на этих интерфейсах тоже есть авторизация. Плюс можно добавить basic авторизацию на уровне HTTP в nginx-reverse-proxy. Но, если честно, в бою такие решения очень очень выглядят опасно - забрутфорсят.
      Если критически важен phpmyadmin, то я бы его запустил внутри и через docker-hostmanager и ssh туннель уже подключался на него.
      Благодарю за вопрос!

    • @amorev
      @amorev  Рік тому +2

      @@llwebstylell242 Вы поняли почти правильно да. Я бы сделал так - на сервере запустил phpmyadmin, но не открывал бы его порт внешнему миру. Далее через ssh туннель сделал бы проброс порта phpmyadmin (через его домен в докер сети и docker-hostmanager) и дальше уже на своем компе подключался бы следующим образом:
      1. Включил туннель со своего 8080 порта на 80 порт phpmyadmin на удаленной машине.
      2. У себя в браузере открыл бы адрес localhost:8080 и работал бы с phpmyadmin как будто он стоит локально

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

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

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

      хм. вообще где угодно дают хост с рутом..
      Странно вообще без рута давать хост. Даже sudo не работает?
      Так беру обычно vds.selectel.ru или hetzner

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

      @@amorev вообще ничего не работает с sudo, чтобы что-нибудь пулнуть из докерхаба нужно зарегаться, а чтобы регнуться нужно обновить докер а без судо нельзя это сделать

    • @sergey8513
      @sergey8513 11 місяців тому

      Может у вас был сервак с Debian?

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

    Зачем Ubuntu на сервер, если есть Debian?

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

      Так сложилось исторически. Так то и на Debian все тоже самое можно сделать:)

    • @dd-pe5dp
      @dd-pe5dp Рік тому

      убунта популярна

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

    up -d не демон, а детач

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

      ага) просто он запускается в формате демона)