jenkins - 如何使用 docker 在 jenkins 中隔离构建

标签 jenkins docker jenkins-pipeline

我在专用服务器上使用 jenkins 2。我的构建是一个多分支管道,此构建的第一步是执行 docker-compose up -d 以运行数据库(redis 和 mongo)并针对它们运行测试。

一切正常,直到您同时在不同的分支上进行 2 次提交; 2 个构建之一无法启动容器,因为端口当然已经被占用。

我希望能够在 2 个不同的分支上并行运行 2 个构建:我是如何实现的?

我的 docker-compose.yml 文件如下所示:

mongo:
  image: mongo:2.6.12
  ports:
    - 27017:27017
  mem_limit: 100m

redis:
  image: redis:3.0.7-alpine
  ports:
    - 6379:6379
  mem_limit: 60m

我的构建是使用 Jenkinsfile 完成的,我读到有一种方法可以在容器内运行构建

docker.image("some image").inside{
    // build
}

最佳答案

我建议您不要暴露端口。或者你需要将 docker 端口暴露给随机的 docker 端口

mongo:
  image: mongo:2.6.12
  ports:
    - 27017
  mem_limit: 100m

redis:
  image: redis:3.0.7-alpine
  ports:
    - 6379
  mem_limit: 60m

如果您的应用程序运行到不需要公开的 docker 网络端口。

关于jenkins - 如何使用 docker 在 jenkins 中隔离构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38877617/

相关文章:

jenkins - 在Jenkins管道并行阶段,如果一个阶段失败,如何及时杀死其他阶段?

docker - Jenkins 管道 - groovy.lang.MissingPropertyException

jenkins - 在单个 jenkins 构建中生成两个覆盖率报告

python - 在Google App Engine上部署Flask和Tensorflow服务

bash - 使容器自行停止

docker - 获取运行给定镜像版本的容器

jenkins - 如何以特定用户身份运行 Jenkins 的工作?

svn - Jenkins:服务器 SSL 证书验证失败 - 颁发者不受信任

git - Jenkins Git 集成 - 如何禁用 SSL 证书验证

Jenkins 工作流程并行步骤和 Jenkins 配置