1、java项目开发,假定已有一个java项目能够编译成jar/war并且运行了。
2、编写dockerfile,docker是一个容器技术每一个容器就是一个“完整”的linux系统,这个dockerfile需要提供这个系统包含内容的描述,比如FROM maven:3.3.3、FROM ubuntu:16.04。如果这个java项目是个web项目那么还需要提供tomcat环境。添加项目构建信息。比如采用maven编译项目的话该如何如何。
ADD pom.xml /tmp/build/
RUN cd /tmp/build && mvn -q dependency:resolve
ADD src /tmp/build/src
#构建应用RUN cd /tmp/build && mvn -q -DskipTests=true package \
#拷贝编译结果到指定目录
&& rm -rf $CATALINA_HOME/webapps/* \
&& mv target/*.war $CATALINA_HOME/webapps/ROOT.war \
#清理编译痕迹
&& cd / && rm -rf /tmp/build
3、暴漏接口:EXPOSE 8080
CMD ["catalina.sh","run"]
4、执行镜像构建
docker build -t docker-demo-java-tomcat .
5、基于创建好的镜像创建容器
docker run -d -p 8080:8080 docker-demo-java-tomcat
6、访问
http://127.0.0.1:8080/demo
来源于dockercloud文档,可自去查看。
在这个例子中需要增加三个文件:
Maven的配置文件: pom.xml
一个Java类:Hello.java
一个Dockerfile
源码是下面的代码:
https://github.com/giantswarm/sparkexample
pom.xml
pom.xml包含一些基本的Maven配置,比如配置Spark所依赖的Java 8。它会把所有的依赖封装成一个大的jar包。
Hello.java
pom.xml文件定义mainClass为sparkexample.Hello,需要在src/main/java/sparkexample/目录下创建Hello.java文件。Dockerfile
最后我们来编写Dockerfile文件,这个Dockerfile使用到了Java镜像(java:oracle-java8),并从安装Maven开始做起。下一步它会安装项目依赖。我们通过pom.xml来解析这些依赖,正如你所看到的,它允许Docker缓存这些依赖。下一步,要编译打包应用,并启动应用。如果重建应用时,pom.xml文件没有任何修改,之前的步骤都被缓存下来了,直接到最后一步启动应用。这可以加快应用的重新构建速度。
创建和运行
一旦这三个文件已经完成,那创建Docker镜像就变得轻而易举了。
$ docker build -t giantswarm/sparkexample .
注意:首次启动时会花费一些时间,因为它要安装Maven并下载所有的依赖。之后再启动就需要几秒钟,因为所有的东西都已经缓存了。
镜像创建之后,用下面的命令创建容器:
docker run -d -p 4567:4567 giantswarm/sparkexample
用下面的命令访问:
curl localhost:4567 hello from sparkjava.com
现在有非常多的Java Web框架,但我这里并不打算使用它们。我只想要的是一个小的框架所以我选择了Spark,它是一个基于Java 8的极小的框架。Spark使用Maven作为构建工具。
回到顶部
源代码和配置文件
在这个例子中你要增加三个文件:
Maven的配置文件: pom.xml
一个Java类:Hello.java
一个Dockerfile
如果有读者等不及了,可以克隆这个repo:
https:// github.com/giantswarm/sparkexample下面我们会详细解释这三个文件的结构,你可以此视频来快速了解。(读者可以查看原文中的视频,看完视频基本可以了解怎么做)
Docker只是一个容器,和java开发没什么关系。通常是把开发好的Java程序放进Docker里运行
docker只是个容器而已,况且还是虚拟的。你可以开发好项目部署上去,最好不要用来开发。