подскажите пожалуйста как лучше организовать работу микросервисовЭто гооловная боль программистов. Задача девопс предоставить им среду исполнения и организовать сетевую связность. DDD и прочие шаблоны удел программистов.
Стоит ли разворачивать БД в докере, или лучше на хосте, или вообще на другой машине, почему, и какие могут быть подводные камни?Тут многое зависит от проекта. Если это наколенный сайт, коих подавляющее большинство, можно сильно не заморачиваться и лепить всё на одном хосте. Но есть правило хорошего тона: разносить хранилище данных (СУБД) и среду обработки данных (обычно бэкенд). Потому что бэкенд может скалироваться горизонтально без особых проблем (но программисты и тут не дремлют), с базами такой номер далеко не всегда проходит. Второй момент: обновление кода (бекенда) не должно аффектить данные (СУБД). Но блин проклятые миграции, миграции, миграции.
Нужен ли мне kubernetes?
В кубере привлекает система деплоя "брось dockerfile/docker-compose и забудь",Да конечно, как же. Иногда пока бросишь, забыться хочется.
1. Сбилдил образ -> запушил в registry. Например в docker.ioОбыкновенный процесс деплоя из области CI/CD. Можно готовый образ сразу отправлять на целевой сервер и там его запускать как душе угодно. Кто-то пишет небольшую политику для Ansible, которая всё делает.
2. Запускаю образ на сервере с нужными переменными окружения на определенном порту
3. ....
Скажите, в чем могут проблемы/подводные камни размещения mysql в контейнере, при том, что сама база будет находится на хосте докера.Будь готов, что будет жрать место на диске как из пистолета. В остальном проблем нет. Возможный оверхед от использования базы в контейнере, компенсируется никакущими настройками сервера базы (ты же не занимался профилированием сервера под текущий профиль нагрузки?) и кривизной самой базы (в планировщике кто-нибудь отлаживал запросы?). Поэтому беспокоиться не стоит.
Стоит ли переучиваться сразу на Docker?Стоит. Программисты его по разному немного распробовали, теперь неистоствуют.
Сложилось впечатление, что Docker только для продакшена норм подходит.Продакшн продакшену рознь. Как-то интересовался у фанатеющих от него компутерщиков, готовы ли они, чтобы их ЗП считали на ПО развёрнутом в контейнерах? И что-то утвердительных ответов не было.
Vagrant мне тоже показался неудобным: каждый раз, когда мне нужно сделать хоть одностраничный лендос, мне нужно будет качать 2гб и заново...У некоторых контейнеры во время сборки тоже пол интернета тянут.
Или заставить себя пользоваться VM...Увы, реальность такова, что заставлять себя пользоваться тем или иным придётся исходя из сложившегося стека технологий у работодателя. Часто он нелеп и контрконструктивен: на железных серверах подняты виртуалки, в которых запущены контейнеры, в которых работает куча процессов.
В книге он говорит о том, что разработчики docker считают, что наиболее правильным в работе контейнеров использовать один процесс на один контейнер.Всё верно. Это основная парадигма при использовании контейнеризации. Ноги растут из 12 factors. Можно одной картинкой
Подскажите, значит ли это, что если я хочу развернуть веб сервер то мне надо минимум 3 контейнераТак и есть. Дальнейший запуск всех приложений осуществляется одной командой. Поскольку она получается довольно длинной (как будто Ява приложение запускаешь), предпочтительно использовать для этих целей docker-compose. Там единственный файл в формате yaml, в котором можно описать, что в какой последовательности запускать и в случае необходимости перезапускать, сколько и каких ресурсов железа выделять каждому приложению и много много ещё чего.
Или это все непринципиально и все можно сложить в один контейнер и будет работать так же хорошо.Можно и так сделать. Правда проще и разумнее всего не заморачиваться в этом случае с контейнерами.
А то складывается ощущение, что все только и делают что деплоят приложения для смартфонов каждый день и работают в высокотехнологичных ИТ компаниях, типа гугла)Ты не поверишь, есть масса компаний, которые херачат их куда следует и в основном куда не следует совсем, объясняя это безопасностью, которую якобы даёт контейнер. Также это модный тренд, поэтому некоторые пичкают контейнеры куда не попадя, а потом рассказывают какое у них модное крутое и инновационное приложение, ибо докер.
Как пробросить /etc/apache2/sites-enabled/000-default.conf с докера в хостовую машину чтобы при перезагрузке системы настройки не слетали?Прописать в файле entrypoint.sh, чтобы после перезагрузки подтягивал файл.