我在专用服务器上使用 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/