🇸 🇹 🇦 🇷 🇮 🇰
vприветствую знатоки, есть вопросик
есть приложение, которое работает из коробки под виндой, я хочу его разбить на несколько контейнеров и запустить
само приложение состоит из вебсервера - томката, бд mysql, но использовать планирую постгрес
Вопрос следующий, как лучше реализовать эту связку? котейнер томката я поднял, он у меня крутится, вроде без проблем
Контейнер с бд возможно помучаюсь, но подниму, если есть предложения всегда выслушаю) Как их слинковать и как реализовать работу бд? в качесте volume или поднять бд на виртуалке и через tcp/ip сконнектить?
Siroga 🇺🇦
А чего мучаться с postgres? Есть официальный имейдж. Поднимаете оба контейнера в одной сети (docker netwok) и обращаетесь с томкат в конейнер с postgres по имени. Убедитесь только что postgres слушает 0.0.0.0 а не 127.0.0.1
Так же при создании контейнера с postgres указываете volume, чтобы при его рестарте не потерять данные.
Николаич
Всем шалом )) Вопрос не по теме чата, извините. На ХабрQ&A задавал, но что-то ответов нет пока.
Что взять для загрузки файлов, чтобы завернуть в Docker и запустить на поддомене сайта? Надоело писать каждый раз свою загрузку. Если есть интеграция с Keycloak, то вообще идеально. Авторизация на сайте через него как раз.
Наверняка здесь кто-то использует подобные решения. Поделитесь опытом, пожалуйста. Вопрос не "как использовать", а "с чем меньше геморроя".
Сторонние сервисы хранения файлов пока не рассматриваю. Хочется своё, чтобы не зависеть ))
Evgeniy
Николаич
Evgeny
Всем привет.
А как этот докер переносить?
Что ли зашёл на сервак по ssh, сделал там git pull и потом docker-compose up?
Evgeniy
docker push
docker pull
лучше использовать образы и запускать их
Evgeny
Evgeniy
для prod лучше создавать готовые образы и там где ты их собираешься запускать просто запускать образ, без их сборки и тд
Evgeny
Evgeny
И докер композы?
Evgeniy
они нужны
Evgeniy
докер файл нужен чтобы создать image на билд сервере
Evgeniy
когда ты создаешь образ ты его отправляешь или hub или в registry
Evgeniy
далее место где он будет запускаться просто берет готовый образ (без сборок)
Evgeniy
и просто запускает и использует
Evgeniy
без разницы что ты там используешь docker-compose, docker-swarm, kub
Evgeny
Evgeniy
куда тебе удобней
Evgeniy
для публичных бесплатный
Evgeniy
но надо решать хочешь ли ты хостить свой registy
Evgeniy
можешь юзать hub (бесплатный или платный)
Evgeniy
можно заюзать github с private repo и там есть registry под каждый репозиторий
или gitlab
Arman
а зачем вы образы заливаете на хаб? 🤔
Evgeny
Evgeniy
github, gitlab, свое решение
Evgeniy
можно в aws и еще куча мест
Evgeny
Т.е. хаб - это докер хаб, верно?
Arman
просто помнить нужно, что след разраб должен как-то у себя это все поднять. и docker-compose.yml разве на Хаб идет?
Evgeniy
не надо путать версию для разработки и версию для прода (стейджа)
Evgeniy
если мы говорим о проде то его поднимает не разработчик и за него отвечает не разработчик
Arman
на два чата одна тема )
Evgeniy
вот возьму пример решил я такой замутить себе wireguard
нашел на hub контейнер для wireguard готовый к использованию
запустил у себя на компе, сделал настройку, нагенерировал ключи, все протестил работает
хочу это перевести теперь куда нибудь на vds
Evgeniy
чтобы запустить туже самую конфигурацию на удаленном сервере что мне надо сделать ?
1. запустить образ который есть в хаб
2. передать нагенерированные файлы (тут по сложнее)
Evgeny
Да, я и хочу перенести на vds
Evgeny
И не сразу понял зачем мне нужен этот докер хаб
Evgeniy
начнем с выполнения первого пункта
получил я vds мне надо понять что я там буду юзать на проде docker-compose, swarm или куб
например docker-compose
что я делаю с vds я там раскатываю докер (цепляюсь по ssh и ручками инсталю докер или юзаю ansible и раскатываю роль, плевать) цель я получил докер socket
далее я его пробрасываю (по ssh например) на локалку например на какой нибудь порт 127.0.0.1:1234 - это докер сокет вдски
Evgeniy
следующим действием открываю консоль и завачиваю docker cli на 127.0.0.1:1234 (чтобы он выполнял команды на удаленном хосте)
Evgeniy
далее я беру docker-compose.yml что на моем компе и просто пишу docker-compose up и у меня на удаленном серваке все запускается
только одна проблема, генерируются новые ключи, если я хочу сохранить текущие что я уже создал идем к пункту 2
Evgeniy
создаю некий образ для данных пример описан тут https://dzone.com/articles/docker-backup-your-data-volumes-to-docker-hub
далее надо этот образ с локального компа отправить в приватное хранилище, тут уже выбирать тебе что использовать (hub, github, gitlab, aws, просто запустить registry где то)
следом я в консоле по работе с удаленным сервером получаю этот образ вместе с данными (ключами)
далее в настройках docker-compose.yml файле я меняю пути до файлов с ключами чтобы wireguard не генерировал их, а использовал теже что были на моем компе
Evgeniy
можно файлами ручками перетащить не через образ, а по старинке по sftp например, up to you
Evgeny
Как сложно(((
Evgeny
Значит нужно просто попробовать подключиться к vds, установить там докер, вытянуть код проекта через гит и запуститься..
Или не сработает так?
Evgeniy
так может запуститься, но тут есть куча потенциальных проблем
Evgeniy
например зачем тебе гит и код проекта на продуктовом сервере ?
Evgeny
Evgeniy
на каком языке ты пишешь ?
Evgeniy
скриптовый какой то получается
Evgeniy
если бы был go, rust, c++ или что то компилируемое то не было бы таких вопросов)
Evgeny
Ну, хочу проект запустить реакт+ларавел
Arman
Evgeny
Arman
Evgeniy
помойму ты экономишь на спичках
Arman
докер на проде дело админов, куда разрабы не должны нос сувать, только кидать запросы что сделать
Evgeny
Evgeniy
например тебе на проде надо будет ставить еще зависимости
у чувака там js (npm) и php (composer)
тебе это тоже надо будет все тащить
Evgeniy
чтобы из git версии получить что то что может быть хоть как то запущено
Evgeniy
ну или ты предлаешь в гит пушить и dependency ?))
Evgeniy
это первый грабли с которыми ты столкнешься
Evgeniy
я молчу на тему холиваров надо ли комитить compose.lock и package.lock в репозиторий
Evgeniy
а если их не комитить то есть большой шанс то что тестировали на тестовом сервере, может отличаться от того что будет на продуктовом
потому что разница во времени сборки может придти новая версия сторонней зависимости
а код не идеален и всегда может содержать баги тех что раньше не было
Evgeniy
поэтому надо стараться сразу
билдить один раз образ
и запускать его в разных окружениях, тестовых или проде
сборка удобная для разработки имеет чуть чуть отличия имхо
Arman
ну или ты предлаешь в гит пушить и dependency ?))
нет, там скрипты сами поднимают composer install, а npm там для многих проектов вообще делать нечего. билды фронта уже идут в репку или как вариант в стороннюю репку, чтоб мусора много не было, но такое редко
Evgeniy
Arman
сейчас на простых хостингах даже гиты которые по хукам тянут с гитхаба
Arman
Evgeniy
помойму это какое то костыльно ориентированная ситуация
Evgeniy
уже давно в github есть actions
в gitlab есть gitlab-ci
в bitbucket есть pipeline
есть сторонние сервисы (travis и тд)
Evgeniy
которые могут осуществлять билд образов и пушить их в хранилище (без разницы где оно)
Evgeny
Evgeniy
то что можно делать билд на твоей локальной машине и просто пушить его в хранилище (если лень ci настрайвать)
Evgeniy
ему нужно просто докер и образ который она должна запускать
причем в образе должно быть только то что необходимо в рантайме(пакетные менеджеры тут нафиг не нужны)
Evgeny
Че-то вроде проясняется
Evgeniy
приведу пример для create-react-app (популярный скилет для react app)
Evgeniy
вот пример докер файла https://pastebin.com/EikuSaB9