git - 从 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
解决方案
推荐阅读
- excel - 将文件夹中的文件 csv 导入单个工作表
- javascript - TypeError:name.toLowerCase 不是函数 - React
- python-3.x - 使用 matplotlib 为单个值设置水平条形图宽度
- click - 我可以使用 microsoft graph api 在 microsoft 团队中的按钮上复制用户单击操作吗?
- c# - 仅在运行用户服务帐户时出现访问冲突错误
- sql - 用“/”分隔的 SQL 连接两列中的值
- javascript - 我可以在后台每 5 秒自动调用另一个函数时调用一个函数吗?
- android - 如何在 React Native 中在没有用户交互的情况下收到通知时打开应用程序
- jenkins - Jenkins 中未显示机器人框架插件
- html - 粘性菜单字体大小