Можно ли использовать Docker machine с инструментами непрерывной интеграции?

#docker #continuous-integration #digital-ocean #docker-machine

#docker #непрерывная интеграция #digital-ocean #docker-machine

Вопрос:

Что я пытаюсь сделать: используйте инструмент непрерывной интеграции, такой как CircleCI или GitLab, для развертывания в DigitalOcean droplet. Локально я могу использовать Docker Machine для запуска чего-то вроде

$ eval $(docker-machine env my-droplet)

для подключения к уже созданному droplet, а затем docker run foo .

Возможно ли выполнить такое действие с помощью традиционного развертывания.yml-файл? Предположим, что у меня уже есть a digitalocean-access-token и a droplet.

Ответ №1:

Если я правильно понял ваш вопрос, вы можете использовать эту команду для достижения желаемого:


docker-machine create
--driver generic
--generic-ip-address=<your vm IP>
--generic-ssh-key ~/.ssh/id_rsa
my-droplet

И тогда вы можете делать то, что хотите:


$ eval $(docker-machine env my-droplet)

Это зарегистрирует машину. В противном случае вам необходимо предоставить все сертификаты и конфигурации из вашей среды разработки в ваш CI, что небезопасно и рекомендуется.

Комментарии:

1. Спасибо, Boynux. Я уже создал машину локально таким образом. Будет ли использование команд, которые вы описали выше, частью моего развертывания. yml присоединяется к уже созданному droplet? А также, мне, вероятно, нужно установить docker-machine как часть сценария развертывания CI?

2. Спасибо @boynux, я не знал, что универсальный драйвер можно использовать таким образом (и я подробнее об этом прочитал в официальной документации: docs.docker.com/machine/drivers/generic ). Похоже, это сработало.

Ответ №2:

Интеграция, предлагаемая DigitalOcean, больше связана с Docker Cloud, что означает, что ваш CI должен поместить ваш образ в Docker Cloud, чтобы DigitalOcean мог использовать его в Droplet.

См. «Развертывание Horizon с использованием Docker Cloud и DigitalOcean» из Chris Asche

войдите в Docker Cloud и привяжите свою учетную запись DigitalOcean. Для этого нажмите «Настройки облака» внизу слева. Теперь вы должны увидеть список облачных провайдеров на странице. Нажмите на значок плагина рядом с DigitalOcean, чтобы связать свои учетные записи. Обратите внимание, что на момент написания статьи к вашей учетной записи DigitalOcean при подключении к Docker Cloud добавляется кредит в размере 20 долларов США.

https://raw.githubusercontent.com/pluralsight/guides/master/images/d0ffee77-f47c-41ac-942d-3d02f8b3d42f.png

Как только ваши учетные записи будут связаны, создайте новый кластер узлов DigitalOcean. Я собираюсь позвонить своему, horizon-with-docker в регион Toronto 1 .

https://raw.githubusercontent.com/pluralsight/guides/master/images/82fcfbc6-5e4c-4038-8ce4-152c54bbf711.png

Недавно созданный кластер узлов можно использовать для запуска стека. Стек — это набор служб, а каждая служба — это набор контейнеров. Стеки создаются с помощью stack-yaml файла.

https://raw.githubusercontent.com/pluralsight/guides/master/images/9109de97-3698-4f44-9d10-15b7e5e6970d.png

После создания вернитесь к кластеру узлов, созданному ранее, чтобы получить IP-адрес вашего DigitalOcean droplet — мой IP-адрес droplet — 159.203.61.66. Продолжайте и посетите свое недавно развернутое приложение Horizon по IP-адресу.