做爲一個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