使用Docker搭建Java + svn + Eclipse + Tomcat开发环境

11

我最近开始尝试使用Docker来帮助设置我们的开发环境,包括:

  1. Jdk 1.6
  2. Eclipse
  3. RabbitVCS
  4. Tomcat
  5. MySQL服务器

我们的开发桌面主要运行Ubuntu 16.04操作系统。我会在主机上安装Eclipse和RabbitVCS,并将剩余部分安装在容器中。

如果一切顺利,开发人员应该能够下载一个Docker镜像。运行该镜像应该提供JDK、 Tomcat 和 MySQL服务器。开发人员可以使用RabbitVCS来检出项目。

这使用Docker可行吗?


是的,这是可行的。 - Tarun Lalwani
你能帮我解决一些问题吗?我已经在容器中安装了JDK和MySQL,并打开了3306端口等等... - born
你应该尝试使用Git而不是RabbitVCS。 - Roman Gherta
1
我建议您参考官方Docker指南,了解如何使用Eclipse调试正在运行的容器。基本上包含您需要的模式。 - Mano Marks
2个回答

7

tl;dr

在Docker容器中运行JDK / JRE并不可行,因为Eclipse依赖于JRE。

Explanation

如果你想在本地系统的Eclipse IDE上使用运行在Docker容器中的JDK来进行开发,这是不可行的(尽管可以进行远程调试)。在开发过程中,开发人员需要在他们的主机上安装JDK。对于你的情况,唯一有意义的从容器中运行的是mysql,因为你没有活跃的开发任务存在。

Edit: To build a portable development environment

在Docker环境下,一种可能的解决方案是将eclipse + jdk + tomcat放在同一个docker镜像中,并将X11 socket挂载到容器中,以便您可以在本地系统中访问运行在容器中的Eclipse GUI

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

或者完全放弃Docker,转向全面的虚拟机像virtualbox,你可以找到预先构建的包含Eclipse的镜像(不确定),或者在基础镜像上安装所有所需软件包并在开发人员之间共享。


可以通过转发一些端口以进行调试的目的(例如https://forums.docker.com/t/how-to-debug-app-on-tomcat-running-inside-the-container/4216/4)来将Eclipse与Tomcat连接起来。 在不同容器中拥有Java有许多好处。 例如,您可以拥有多个具有多个“隔离”JDK版本的容器,以测试您的应用程序。 此外,在不同的开发环境(Windows / Mac / Linux)上设置整个套件要容易得多,而且也更快捷,不会有太多麻烦。 - Adi Fatol
1
我认为你没有理解...调试与主动开发非常不同。首先,Eclipse需要JRE才能运行(无论你在哪里运行Eclipse,而不是在任何其他容器中)。其次,Eclipse附带了一个编译器,您不一定需要安装JDK(同样有争议)。您是否尝试过在上述设置中进行开发?我建议在这里阅读更多信息https://wiki.eclipse.org/Eclipse/Installation和https://stackoverflow.com/questions/5722905/eclipse-ide-for-jdk-on-a-server(不太正式,但仍然) - so-random-dude
@so-random-dude。好的,我正在努力找出最佳方法来将我们的开发环境Docker化。目前我正在尝试Adi的建议。这是最好的方法吗?我正在尝试构建一个便携式开发环境。你有什么建议? - born

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下载: tomcatjavamysql 编辑:jdk和tomcat最好在同一个容器中。

“编辑:JDK 和 Tomcat 最好一起在同一个容器中,否则你有什么其他建议让 Tomcat 运行?” - so-random-dude
@so-random-dude 我想他的意思是使用Tomcat容器的JDK,而不是单独为JDK使用另一个容器。 - Ayushya
有没有关于如何配置Eclipse使用来自Docker容器的Tomcat服务器的想法? - Eric Libay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接