【问题标题】:Setting up Java + svn + Eclipse+ Tomcat , development environment with docker搭建Java + svn + Eclipse+ Tomcat , docker 开发环境
【发布时间】:2017-09-11 10:19:18
【问题描述】:

我刚开始试用 docker 看看它是否有助于设置我们的开发环境,它由

  1. JDK 1.6
  2. 日食
  3. RabbitVCS
  4. 雄猫
  5. MySQL 服务器

我们的开发桌面大多是 Ubuntu 16.04。我会在 host 上安装 eclipse,RabbitVCS,其余的在 container 中。

如果一切顺利,开发人员应该能够下载 Docker 映像。运行该映像应该为他们提供 JDK、Tomcat 和 MySQL 服务器。然后开发人员可以开始使用 RabbitVCS 来检查项目。

这对 Docker 可行吗?

【问题讨论】:

  • 是的,这是可行的
  • 你能帮我一些细节吗?我已经安装了 jdk 和 mysql 。在容器中打开端口 3306 等。
  • 你应该试试 git 而不是 RabbitVCS
  • 我建议您咨询this official Docker guide,了解如何使用 Eclipse 调试实时运行的容器。基本有你需要的图案。

标签: java eclipse ubuntu docker docker-compose


【解决方案1】:

tl;博士

不可行在宿主机操作系统中运行 eclipse 并使用 JDK/JRE 在容器中运行,因为 eclipse 对 JRE 有依赖。同样,你不能在一个容器中拥有 tomcat,而在另一个容器中拥有 JRE/JDK,因为 tomcat 需要 JRE 才能运行。

说明

我会在主机上安装 eclipse、RabbitVCS,其余的在容器中......运行该图像应该为它们提供 JDK、Tomcat 和 MySQL 服务器

您是否尝试使用在 docker 容器上运行的 JDK(以及在主机操作系统上运行的 Eclipse IDE)进行主动开发?如果是这种情况,不可行(有争议,您可以进行远程调试;但请记住,调试与主动开发有很大不同)。这不是码头工人的意图。在开发过程中,您的开发人员可能需要在他们的主机上安装 JDK。在您的情况下,从容器运行唯一明智的事情是 mysql,因为您在那里没有任何积极的开发。

编辑:构建可移植的开发环境

在 docker-land 中,一种可能的解决方案是,将 eclipse+jdk+tomcat 放在同一个 docker 映像中,并将 X11 套接字安装到容器中,以便您可以将容器中运行的 eclipse GUI 暴露给主机操作系统

更多阅读:https://blog.jessfraz.com/post/docker-containers-on-the-desktop/

或者干脆放弃 Docker 并转到像 virtualbox 这样的成熟 VM,您可能能够找到其中包含 eclipse 的预构建映像(不确定),或者您可以在安装所有必需的软件包后构建一个基础图像并在您的开发人员之间共享。

【讨论】:

  • 可以通过转发一些用于调试目的的端口来连接 Eclipse 和 Tomcat(例如forums.docker.com/t/…)。在不同的容器中使用 java 有很多好处。例如,您可以拥有多个具有多个“隔离”JDK 版本的容器来测试您的应用程序。此外,在不同的开发环境(windows/mac/linux)上设置整个套装更加容易和快捷,没有太多麻烦。
  • 我认为你没有明白。调试与主动开发有很大不同。首先,eclipse 需要一个 JRE 来运行(无论你在哪里运行 eclipse,而不是在任何其他容器上)。其次,eclipse 附带一个编译器,您不一定必须安装 JDK(同样,有争议)。您是否尝试过在上述设置中进行开发?我建议在这里wiki.eclipse.org/Eclipse/Installation 和stackoverflow.com/questions/5722905/… 阅读更多内容(不是那么真实,但仍然)
  • @so-random-dude 。好的,我正在寻找对我们的开发环境进行 Dockerise 化的最佳方法。目前我正在尝试 Adi 的建议。这是最好的办法吗。我正在尝试构建一个可移植的开发环境。你有什么建议。
【解决方案2】:

是的,这是可行的。

我建议为每个服务(Mysql/Tomcat/JDK)使用不同的容器。您可以使用 docker-compose 将容器连接在一起并自动执行许多任务。 dockerhub 上已有大量图片可供您使用。

这是一个简单的示例,说明如何设置自己的 docker-compose.yml 文件:

services:
    tomcat_service:
    #contains tomcat & jdk
        image: tomcat
        volumes:
            - /local/path:/path/in/docker
        links:
            - mysql_service
        depends_on:
            - mysql_service
        ports:
            - "80:80"
          # - other ports for debugging

    mysql_service:
        image: mysql
        volumes:
            #you should keep mysql data on the host, not in container
            - /local/path/data:/var/lib/mysql

上面使用的每个图像都会自动从 dockerhub 下载: tomcat, java, mysql

编辑: jdk 和 tomcat 放在同一个容器中会更好

【讨论】:

  • “编辑:jdk 和 tomcat 在同一个容器中会更好”——你建议 tomcat 将如何运行?
  • @so-random-dude 我猜他的意思是使用tomcat容器的JDK,并没有单独的JDK容器。
猜你喜欢
  • 2012-02-10
  • 2022-01-13
  • 2012-12-03
  • 1970-01-01
  • 2010-09-05
  • 1970-01-01
  • 2013-09-12
  • 1970-01-01
  • 2011-01-19
相关资源
最近更新 更多