【问题标题】:Setup Java development environment with Docker使用 Docker 设置 Java 开发环境
【发布时间】:2015-03-05 01:11:18
【问题描述】:

最近几天我花了很多时间研究 docker。我对在开发中拥有与生产环境相同的环境印象深刻!

目前我想从小处着手,开始加强开发过程。我们正在开发部署在 tomcat 上的 Java 应用程序。开发人员正在使用 Eclipse 和 IntelliJ 等 IDE。

在开发过程中,您可以在 IDE 中配置您的 tomcat 环境,以便您可以自动部署和调试代码。因此,tomcat 基本目录必须可供设置。

目前我有一个 docker debian 镜像,tomcat 安装在 /opt/tomcat 上。

我现在希望能够将容器 /opt/tomcat 目录的内容链接到我主机中的目录。 可悲的是,该功能似乎不存在。使用 -v 选项,您只能在容器内挂载主机目录,反之则不行。

目前我看到的唯一解决方案是挂载容器的 webapps 目录,然后将我的 war 文件放在这里,在我看来这非常不高效。

您必须手动启动/重新启动您的 tomcat,只能进行远程调试,您的 IDE 控制台中没有日志。

那么,有人对使用 docker 优化 Java Webapp 开发的开发流程有任何想法吗?

【问题讨论】:

  • 这看起来仍然没有真正的解决方案。我知道 docker 非常适合隔离环境,但我真的希望我们可以使用本地 IDE 调试器,而不是在本地 docker 容器上开发时使用远程调试器。我不想每次更改 jsp 或某些 java 类时都必须坐在那里重新部署我的应用程序,这是低效的。
  • 我完全支持你。我想在我的 IDE 中配置我的运行时环境,并将日志发送到我的控制台,而无需手动打包软件。
  • 根据我的经验,运行 docker + tomcat 设置的最简单方法是使用嵌入式 tomcat。因此,您无需运行 tomcat 并部署 war 文件,而是创建一个包含 tomcat 并运行它的 far jar。主要好处是:您在开发和生产中调试/运行相同的设置,并且非常容易创建 docker 映像。我将 spring-boot 用于样板文件,但这是可选的。它也可以用 maven 来实现。您对这样的设置感兴趣吗?
  • 我为此编写了 Docker Shell - dockershell.io。不幸的是,它还不支持运行 X 应用程序,所以你仍然被远程调试所困。
  • 可以添加有问题的环境信息吗?您的 IDE 主机是什么? Mac/Windows 或 Linux ,它将对解决方案产生很大影响。如果是windows我可以给出解决方案

标签: java eclipse tomcat web-applications docker


【解决方案1】:

我看到一个blog 正在谈论 doclipser (Eclipse + Docker)。

在博客中,主要是在帖子的底部,它提到了以下工具:

希望这会有所帮助:)

【讨论】:

    【解决方案2】:

    您可能必须在同一个容器中运行 Eclipse 和 Tomcat,但是我肯定会首先尝试让它们在两个单独的容器中运行。也许从这个base image 开始,并尝试使用共享卷将其链接到 Tomcat 映像。

    【讨论】:

    • 嘿,在同一个容器中安装 IDE 不是一个真正的选择,因为我也想在生产中重用容器(将来)。我也真的不想为 IDE 创建一个容器,因为开发人员应该使用他想要的任何 IDE 和他想要的任何操作系统..
    • 这就是我推荐 2 容器方法的原因。这样您就可以将 Tomcat 容器链接到开发中的 IDE 容器。
    • 但我不想将 IDE 放在容器中
    【解决方案3】:

    如果我正确理解了您的问题,为什么不直接使用-v 选项来挂载war 文件本身。这对我使用 wildfly 来说效果很好。

    基本上,我使用 maven 构建战争并将 target/myapp.war 映射到 /opt/wildfly/myapp.war。然后,每当我在应用程序中进行更改时,我只需运行 mvn clean package 和应用程序容器,看到战争已经改变,重新部署。

    现在,这利用了 wildfly 的部署扫描器,但可能仍然适用于 tomcat。如果没有,也许你可以用爆炸的战争运行 tomcat,然后将构建文件夹 target/myapp 挂载到 tomcat 上的 webapps 文件夹中。

    【讨论】:

    • 一般来说,你可以使用 tomcat 自动重新部署,但在现实生活中,这会产生比解决它更多的问题..经常导致内存泄漏或 webapp 的奇怪行为......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 2011-11-09
    • 2018-08-07
    • 1970-01-01
    • 2017-12-24
    相关资源
    最近更新 更多