Docker 和 Java IDE 整合

Docker and Java IDE integration

首先我要声明我不是 Java 开发人员,也不是 Docker 专家。

为了尽量减少前端和后端(在这个特定情况下,Java)开发人员之间的差距,我开始使用 java 和 maven 放置一些 docker 图像和构建完成后,我启动了一个 docker 容器,其中包含一个指向 java 项目的卷(前端开发人员不必担心依赖关系或如何 运行 后端服务)。

我已经在这里有问题了。 我见过其他人用内部的实际代码构建图像而不是稍后附加它,那么最好的情况是什么(如果有的话)? 我这样做是因为我可以将该图像重新用于 "every" 项目并避免构建不同的图像。

对于 starting/stopping/restarting docker 容器,我创建了一个脚本来执行所有这些操作,因此我可以对代码进行一些更改,然后再将其关闭和启动。

它有点管用,我的意思是,我很清楚这不是 Java 开发人员从控制台执行此类操作的正常工作流程。 那么现在,最重要的问题是,如何将 docker 与 Java IDE 集成? 我知道您可以创建自定义 build/run 命令,但我还了解到 IDE 上没有显示日志之类的东西。

谁能解释一下你是如何使用 Docker + Java IDE 的?

注意:Maven 也用于编译 java 代码,例如 mvn clean install(如果有帮助)

我不使用 Docker 和 Java IDE。我使用 IDE (Eclipse) 来编写和测试代码,用 Maven 来管理构建。然后我有一个像这样的Dockerfile

FROM java:8

RUN apt-get update || apt-get update
RUN apt-get install -y maven

# Maven installs Java 7, which set itself as the default...
RUN update-alternatives --remove java /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java

CMD java -jar target/main.jar

# Pull down dependencies here to allow Docker to cache more
ADD pom.xml /opt/app/pom.xml
WORKDIR /opt/app
RUN mvn dependency:go-offline -X

# I use the maven-shade-plugin to build a single jar
ADD src /opt/app/src
RUN mvn package

如果您在一台机器上构建所有图像,那么 Docker 将智能缓存,您无需执行任何其他操作。如果你想 运行 跨更多的机器,或者你只是想让它明确,你可以这样做:

base/Dockerfile:

FROM java:8

RUN apt-get update || apt-get update
RUN apt-get install -y maven
RUN update-alternatives --remove java /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java

CMD java -jar target/main.jar

$ docker build -t yourorg/java-base:8 ./base/

myapp/Dockerfile:

FROM yourorg/java-base:8

ADD pom.xml /opt/app/pom.xml
WORKDIR /opt/app
RUN mvn dependency:go-offline -X

ADD src /opt/app/src
RUN mvn package

你不会从 Docker 和 Java 中得到那么大的影响,因为 JAR 已经非常便携且包含良好。我想它可以很容易地并排 运行 不同的 Java 版本。我使用它是因为它允许我 运行 不同语言的应用程序,而无需知道容器内有什么。我有一些在 Java 中,一些在 Python 中,一些在 JavaScript 中,一些在 Erlang 中,但它们都是以 docker run -d <flags> myorg/myimage:someversion.

开始的