我的项目结构是这样的,Jenkins中的构建作业是从推送到Git触发的。作为我的应用程序逻辑的一部分,我启动了kafka和弹性搜索实例,以便在我的下游测试用例中使用。
我现在遇到的问题是,当开发人员将他的更改推送到Git时,它会触发Jenkins的构建,然后运行我们的代码并在localhost:9092中生成kafka代理并在localhost:9200中生成弹性搜索。
当另一个开发人员同时处理其他更改时,推送他的代码,它会再次触发构建作业并尝试启动另一个kafka / elastic搜索实例,但失败并显示“Port has in use”这个异常。
我正在研究如何处理这种情况的选项。
在docker容器中运行这些实例会在某种程度上有所帮助吗?在这种情况下如何处理端口问题?
答案 0 :(得分:1)
是这些实例的docker化确实可以帮助您,因为您可以多次生成它们。
你可以为每个组件创建一个包含你的应用程序的docker容器,然后通过链接它们或使用docker-compose让它们相互通信
这样您就不必将端口暴露给“外部”世界,而是将其保留在docker环境中。
这样你就不会有“已经在使用的端口”。唯一的问题是那种情况下的记忆。例如如果对git仓库进行100次推送,则可能会耗尽内存......