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
.
开始的
首先我要声明我不是 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
.