我首先要说的是,我不是Java开发人员,也不是Docker专家。
为了尽量缩小前端和后端(在这种情况下是Java)开发人员之间的差距,我开始使用java和maven设置一些对接映像,在构建之后,我使用指向java项目的卷启动了一个docker容器(而且前端开发人员不必担心依赖关系或如何运行后端服务)。
我已经有个问题了。我见过其他人用实际的代码构建一个映像,而不是稍后附加它,那么最好的情况是什么(如果有)?我是这样做的,因为我可以为“每个”项目重用该映像,并避免构建不同的映像。
为了启动/停止/重新启动坞容器,我创建了一个脚本来完成所有这些工作,这样我就可以对代码进行一些更改,然后重新打开它。
它有点工作,我的意思是,我很清楚这不是Java开发人员从控制台进行这类工作的正常工作流程。因此,现在,最重要的问题是,如何将对接器与Java集成?我知道您可以创建自定义的构建/运行命令,但我也看到IDE中没有显示日志之类的内容。
有人能解释一下你是如何使用Docker + Java的吗?
注意: Maven也用于编译java代码,比如mvn clean install (如果这有帮助的话)
发布于 2015-03-07 20:08:44
我不将Docker与Java结合使用。我使用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构建-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 packageJava的Docker并没有给您带来那么大的效果,因为JAR已经非常可移植,并且包含了很好的内容。我认为这样可以方便地同时运行不同的Java版本。我使用它是因为它允许我以不同的语言运行应用程序,而不需要知道容器中有什么。我有一些在Java,一些在Python,一些在JavaScript,一些在Erlang,但是它们都是作为docker run -d <flags> myorg/myimage:someversion开始的。
https://stackoverflow.com/questions/28907975
复制相似问题