0

我正在努力改进我们的生产环境,并偶然发现了一个有趣的情况。

我们将微服务打包到容器中,并有几种不同的部署环境——主干(用于开发)、集成(用于测试和验证)和生产。

最近,我一直在努力精简我们的容器,转向 alpine 基础镜像,并努力使我们所有服务的内容更加一致。我们已经开始做的一件事是使用仅包含运行应用程序代码所需的模块的定制 JRE。

在使用 JLink 构建要包含在基本映像中的 JRE 时,我将其配置为不包含该jdk.jdwp.agent模块,因为在生产中不需要它。在我的想法中(如果我在这里的想法错了,请纠正我),这减少了攻击面(通过减少生产中的东西)和图像的大小。

这里的挑战是,当我们使用这个基础镜像时,我们在开发过程中不能再在我们的主干环境中调试代码,这显然是非常有用的。

我的问题归结为以下几点:

  • 我是否过于谨慎地从基础映像中的 JRE 中删除 jdwp,并且不必要地阻碍了我们的开发团队(过早的优化?)
  • 如果这是正确的方法,我们如何解决它以使远程调试回到主干环境?我有一个单独的基本映像,其中包括具有调试支持的完整 JDK,但是如果我们将其用于主干而不是生产,我们就不会使用一致的配置进行开发/部署。这是个坏主意吗?
4

0 回答 0