做为一个java后端开发人员,docker如何与Maven 工程相结合是咱们必需要面对的问题,它联系着咱们的项目
。也为了装x,so,看看吧。html
这里为了节省空间,采用一个现有的项目进行docker 改造。 项目就是一个springboot的入门项目,运行后,访问:http://host:8080/ ,界面以下图: java
只给出核心代码git
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!-- Docker maven plugin --> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <configuration> <!-- imageName 仓库名称/镜像名称:标签名称--> <imageName>${docker.image.prefix}/${project.artifactId}:1.0.0</imageName> <!-- 基础镜像名称 ,相似于 Dockerfile 中的 FROM --> <baseImage>java</baseImage> <!-- 程序入口,相似于 Dockerfile中的 ENTTYPOINT--> <entryPoint>["java","-Djava.security.egd=file:/dev/./urandom","-jar","/${project.build.finalName}.jar"]</entryPoint> <resources> <resource> <targetPath>/</targetPath> <!-- 指定须要复制的根目录,--> <directory>${project.build.directory}</directory> <!-- 用于指定须要复制的文件。 表示打包后的jar 文件 --> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> <!-- Docker maven plugin --> </plugins> </build>
将项目复制到Linxu 服务器(使用scp) 进入项目根目录 mvn clean package docker:build
发现相似以下信息,证实已经构建成功github
Step 1/3 : FROM java Pulling from library/java Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d Status: Downloaded newer image for java:latest ---> d23bdf5b1b1b Step 2/3 : ADD /springboot-docker-1.0-SNAPSHOT.jar // ---> ef9ec89f58e1 Step 3/3 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/springboot-docker-1.0-SNAPSHOT.jar"] Successfully built e61fa22956f9 Successfully tagged anhusky/springboot-docker:1.0.0
查看生成的镜像spring
[root@VM_9_185_centos springboot-docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE anhusky/springboot-docker 1.0.0 e61fa22956f9 2 minutes ago 659MB
运行docker
[root@VM_9_185_centos springboot-docker]# docker run -d -p 8080:8080 anhusky/springboot-docker
访问服务地址,http://host:8080/ ,看是否能看到项目的主页面后端
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!-- Docker maven plugin --> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <configuration> <!-- imageName 仓库名称/镜像名称:标签名称--> <imageName>${docker.image.prefix}/${project.artifactId}:1.0.0</imageName> <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <!-- 指定须要复制的根目录,--> <directory>${project.build.directory}</directory> <!-- 用于指定须要复制的文件。 表示打包后的jar 文件 --> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> <!-- Docker maven plugin --> </plugins> </build>
src -> main -> docker -> Dockerfilecentos
Dockerfile 文件以下:springboot
FROM openjdk:8-jdk-alpine VOLUME /tmp ADD springboot-docker-dockerfile-1.0.0.jar app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
注意:copy 到服务器,打包、运行,与无dockerfile 的操做一致,请自行参考bash
springboot-docker <br/> springboot-docker-dockerfile