Как Развернуть Docker-Compose На Удаленном Хосте

  • Автор темы ACCTEKERS
  • Обновлено
  • 19, Oct 2024
  • #1

Я новичок в экосистеме докеров и пытаюсь найти подходящую инфраструктуру развертывания для системы, над которой я работаю.

Представьте себе следующий сценарий: система состоит из трех микросервисов — БД, основного сервера и приложения (сервер + клиент). Для каждого из них я создал образ докера. Я также связал их вместе с помощью docker compose, чтобы описать систему в целом и описать связи между микросервисами. Во время выпуска микросервиса я помечаю изображение соответствующим тегом и отправляю его в частный репозиторий Docker. Пока все хорошо, работает локально.

Теперь представьте, что у меня есть три разных производственных клиента, и у каждого есть свой стоечный Linux-сервер. Я не уверен, как мне подойти к развертыванию системы с помощью докера:

1) Я хочу иметь возможность указывать разные версии микросервисов для разных производственных серверов. Как мне к этому подойти? Должен ли я иметь один общий файл docker-compose или один файл с указанными версиями для каждой производственной среды?

Где мне следует хранить docker-compose? В репозитории? Как он потом копируется на удаленный хост? Как развернуть файл docker-compose.yml на удаленном хосте?

2) Как я могу развернуть новую версию микросервиса на удаленном хосте? Я ищу инструмент, чтобы, если я запущу

 docker-compose up -d 

он запустит образ приложения версии 2.33 на сервере server1. Есть ли для этого инструмент?

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

Я не могу найти наилучшую практику сейчас в экосистеме докеров для развертывания образа на простом сервере без AWS/Beanstalk или какой-либо другой облачной среды. Должен ли я просто подключиться к нему по SSH, скопировать docker-compose и запустить tool deploy [email protected] [server1] ?

Любые мысли оценены по достоинству, спасибо!

#docker #docker-compose #deployment

ACCTEKERS


Рег
11 Aug, 2015

Тем
79

Постов
198

Баллов
613
  • 25, Oct 2024
  • #2

Давайте разберем ваши вопросы по порядку:

Я хочу иметь возможность указывать разные версии микросервисов для разных производственных серверов. Как мне к этому подойти?

Есть много разных способов справиться с этим. Одна из возможностей — «пометить» ваши образы докеров и создать разные файлы для создания докеров, которые используют эти изображения.

Должен ли я иметь один общий файл docker-compose или один файл с указанными версиями для каждой производственной среды?

Зависит от. Сколько у вас сред? Я часто видел один файл docker-compose, который ссылается на отдельный файл среды.

Где мне следует хранить docker-compose? В репозитории?

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

Как он потом копируется на удаленный хост? Как развернуть файл docker-compose.yml на удаленном хосте?

Развертывание docker-compose.yml зависит от целевой архитектуры. Поскольку вы упомянули Linux, вы можете использовать объект чтобы скопировать файл.

Как я могу развернуть новую версию микросервиса на удаленном хосте?

Ведущим в отрасли инструментом для этого на данный момент является Кубернетес. Если вы примените этот подход, ваш docker-compose может быть преобразован в развертывание Kubernetes. Используя просто docker-compose, вам нужно будет каким-то образом определить, что новый контейнер доступен, и извлечь его. Сторожевая башня или аналогичный инструмент может быть полезен.

На основании того, что вы описали, я бы порекомендовал взглянуть на интерактивный Учебники по Кубернетесуи посмотреть, окажется ли это в конечном итоге более простым подходом, чем все, что я изложил выше.

 

Blaск


Рег
03 Sep, 2007

Тем
75

Постов
212

Баллов
617
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно