在Jenkins中运行构建作业时的端口分配

时间:2018-02-16 17:17:50

标签: docker elasticsearch jenkins apache-kafka

我的项目结构是这样的,Jenkins中的构建作业是从推送到Git触发的。作为我的应用程序逻辑的一部分,我启动了kafka和弹性搜索实例,以便在我的下游测试用例中使用。

我现在遇到的问题是,当开发人员将他的更改推送到Git时,它会触发Jenkins的构建,然后运行我们的代码并在localhost:9092中生成kafka代理并在localhost:9200中生成弹性搜索。

当另一个开发人员同时处理其他更改时,推送他的代码,它会再次触发构建作业并尝试启动另一个kafka / elastic搜索实例,但失败并显示“Port has in use”这个异常。

我正在研究如何处理这种情况的选项。

在docker容器中运行这些实例会在某种程度上有所帮助吗?在这种情况下如何处理端口问题?

1 个答案:

答案 0 :(得分:1)

是这些实例的docker化确实可以帮助您,因为您可以多次生成它们。

你可以为每个组件创建一个包含你的应用程序的docker容器,然后通过链接它们或使用docker-compose让它们相互通信

这样您就不必将端口暴露给“外部”世界,而是将其保留在docker环境中。

这样你就不会有“已经在使用的端口”。唯一的问题是那种情况下的记忆。例如如果对git仓库进行100次推送,则可能会耗尽内存......