gpt4 book ai didi

docker - 通过 jenkins 用新建的镜像重启 Docker 容器(在容器中运行)

转载 作者:行者123 更新时间:2023-12-02 21:04:42 26 4
gpt4 key购买 nike

我有一个 docker-compose.yml 文件,它定义了我需要的所有服务。重要部分如下:

services:
backend-api:
build: .
jenkins:
build: ./jenkins
volumes:
- jenkins_data:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock

backend-api 是一个使用 gradle 构建的简单 Java 应用程序,而 jenkins 服务是安装了 docker 的标准 jenkins 镜像。

后端 API 的 Dockerfile:
FROM gradle:jdk8 as builder

COPY --chown=gradle:gradle . /home/gradle/src
WORKDIR /home/gradle/src
RUN gradle build

FROM openjdk:8-jre-slim
EXPOSE 8080
COPY --from=builder /home/gradle/src/backend/build/distributions/backend.tar /app/
WORKDIR /app
RUN tar -xvf backend.tar
WORKDIR /app/backend
CMD bin/backend

我想重建并重新启动 backend-api来自 jenkins 的服务容器。我读了很多关于他的文章并查看了 CloudBees jenkins 的 docker 插件但我不知道如何从 Jenkins 容器内部重新启动和重建主机上的容器。

是否有可能以某种方式实现这一目标,或者我的整个方法都是错误的?

最佳答案

快速回答

您需要在 jenkins docker 容器中正确配置 docker 客户端。这里是 Dockerfile或整个 post

之后您可以使用 -H docker 参数来执行远程 docker 中的任何命令。敌人的例子我用它来从另一台机器上查看我的远程日志:

docker -H 10.10.10.66:2375 logs --tail 500 my-app

注:您必须启用 docker rest api前!

长答案

使用 C.I 和 docker 的常见、简单、手动和经过验证的方法是:
  • 在一台服务器上安装您的 c.i。
  • 在其他服务器上安装或配置您的 docker 应用程序,不在同一个主机你的 c.i
  • 启用 docker rest api在您的远程 docker 服务器中。这允许您使用 docker 从您的 c.i 连接并执行 docker 命令到另一台使用 docker 的远程计算机。
  • 配置您的 c.i(在您的情况下为 jenkins),以便在安装了 docker 的其他服务器中执行任务。
  • 手动或使用 webhooks 触发 jenkins 任务/作业
  • 必须构建此 jenkins 标签并将 docker 镜像推送到您的 private docker registry
  • 最后,此任务可以从私有(private)注册表下载或拉取新图像到目标 docker 服务器

  • 注:
  • 您可以使用 -H 参数代替 api rest 在远程 docker 主机中执行命令。
  • 您可以按照 guide 将图像推送到 docker 公共(public)中心如果您没有私有(private) Docker 注册表或实现它所需的资金。如果您选择公共(public)https://hub.docker.com,请注意源代码和变量
  • 如果您无法拥有私有(private) docker 注册表服务器 $$ 并且您无法将企业代码推送到公共(public) docker 注册表,you can install a private docker registry在您的 Jenkins 主机中。不推荐,但是:我们能做什么?
  • 如果在 jenkins 旁边安装 docker 注册表不是一个选项,您可以在 jenkins 中创建一个任务,它将源代码(Dockerfile 和应用程序文件)下载到远程机器中并在远程机器中执行 docker build。
  • 关于docker - 通过 jenkins 用新建的镜像重启 Docker 容器(在容器中运行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58779426/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com