首页 > 解决方案 > 从 Jenkins 在 Docker 主机上运行 docker-compose 命令

问题描述

所以我有这个设置,我有一个运行 Docker 引擎(由 docker-compose 控制)和我的 Jenkins 和应用程序容器(Node.js,React.js)的服务器。目标是让 scm webhook 启动 Jenkins 作业,以提取最新代码、运行测试和部署应用程序服务。

目前我只有一个 git 存储库,其中包含 Node.js 和 React.js 服务的代码,我计划将它们移动到单独的存储库中。我想要的基本上是当有人将代码推送到该 repo 的 master 分支时,我希望服务器拉取 git repo、运行测试并部署应用程序。

那么对于初学者来说,我如何最好地将新代码放入应用程序容器中?git pull 是否应该包含在这些图像的 Dockerfile 中?然后我也许可以重建这些图像来触发新代码的拉取?或者 Jenkins 是否应该在服务器中触发 git pull,然后将这些文件注入到容器/映像中?

第二部分是,我是否应该在即将用于部署应用程序的同一个容器中运行测试?

目前,我已经绑定了 docker.sock,如下所示,以便能够与主机中的 Docker 通信。但是我如何从 Jenkins 获得 docker-compose 呢?

services:
  jenkins:      
    image: jenkins/jenkins:lts
    privileged: true
    user: root
    ports:
      - "50000:50000"
      - "9000:8080"
    container_name: jenkins
    volumes:
      - ./jenkins:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/local/bin/docker:/usr/local/bin/docker

标签: gitdockerjenkinsdocker-compose

解决方案


推荐阅读