В этой статье я познакомлю вас с новой областью, как использовать jenkins для публикации изображений на ранчере.
1. Установите плагин
Войдите в jenkins и найдите rancher в диспетчере плагинов, чтобы установить плагин rancher.
2. Добавить сборку владельца ранчо
На самом деле, мы также можем напрямую передать зеркальный сервис с помощью следующей команды.
mvn clean package docker:build -DpushImage
Но рассматриваемая сеть медленная, мы используем плагин напрямую, а прямой доступ к ранчеру внутри будет гораздо быстрее.
3. Настройте информацию о владельце ранчо
API Endpoint можно найти в rancher здесь
Ключ API ранчера:
имя пользователя — это ключ доступа, полученный на первом шаге
пароль — секретный ключ, полученный на первом шаге
id и Description не важны и могут быть заполнены по желанию
Идентификатор среды ранчера: идентификатор среды, который можно получить в управлении средой интерфейса управления ранчо.
Имя службы: формат — это имя инфраструктуры/имя службы, следующая цифра — это имя инфраструктуры.
Нажмите, чтобы ввести название каждой службы
Docker Image: имя контейнера, вы можете использовать переменные jenkins для динамической сборки
На этом этапе, после создания jenkins, вы можете вызвать API ранчера для выпуска и обновления контейнера.
4. Убедитесь, что развертывание прошло успешно
Просмотр журнала консоли jenkins
Войдите в систему ранчера, чтобы просмотреть журнал службы, и обновление успешно завершено.
5. Список вопросов для замечаний
Вопрос один:
Причина в том, что maven не распознает docker-maven-plugin и должен быть добавлен в тег pluginGroups файла settings.xml.
<pluginGroup>com.spotify</pluginGroup>
Таким образом, реимпорт в порядке
<pluginGroups> <pluginGroup>com.spotify</pluginGroup> </pluginGroups>
Место, где мой pom.xml представляет плагин докера, выглядит следующим образом:
<groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.0.0</version>
Вопрос второй:
o {}->unix://localhost:80: No such file or directory
Apr 06, 2020 11:07:51 AM org.apache.http.impl.execchain.RetryExec execute
решение:
1. Откройте удаленный доступ к API Docker (ссылка: https://blog.csdn.net/csde12/article/details/70240721)
sudo vi /etc/systemd/system/docker.serviceExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
2. Перезапустите демон
sudo systemctl daemon-reload
sudo systemctl restart docker
3. Добавьте DOCKER_HOST=tcp://localhost:2375 в глобальную переменную Jenkins.
Вопрос третий
org.apache.http.conn.UnsupportedSchemeException), пойманный при обработке запроса к {}->tcp://192.168.218.24:2375: протокол tcp не поддерживается…
решение:
<dockerHost>${docker.repository.host}</dockerHost>
Меняем протокол tcp на http