#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 долларов США.
Как только ваши учетные записи будут связаны, создайте новый кластер узлов DigitalOcean. Я собираюсь позвонить своему,
horizon-with-docker
в регионToronto 1
.
Недавно созданный кластер узлов можно использовать для запуска стека. Стек — это набор служб, а каждая служба — это набор контейнеров. Стеки создаются с помощью
stack-yaml
файла.
После создания вернитесь к кластеру узлов, созданному ранее, чтобы получить IP-адрес вашего DigitalOcean droplet — мой IP-адрес droplet — 159.203.61.66. Продолжайте и посетите свое недавно развернутое приложение Horizon по IP-адресу.