1. 程式人生 > >Docker-通過docker-maven-plugin外掛實現docker映象構建並自動釋出到遠端docker伺服器

Docker-通過docker-maven-plugin外掛實現docker映象構建並自動釋出到遠端docker伺服器

我們知道,docker能實現應用打包隔離,實現快速部署和遷移。如果我們開發應用使用了spring cloud + spring boot架構,那麼,通過docker-maven-plugin實現快速構建映象併發布到遠端docker伺服器會非常方便。相關步驟參考如下:

step1、開啟docker伺服器的tcp管理埠,這裡以2375為例進行說明。具體的配置過程請參考另一篇部落格:
https://www.cnblogs.com/funnyboy0128/p/9983779.html

step2、在本地配置環境變數:DOCKER_HOST,如下: 

 

step3、在應用中src/main下新建docker資料夾,並編寫Dockerfile和runboot.sh檔案

Dockerfile主要用來構建映象,參考示例如下:

 1 FROM java:8
 2 MAINTAINER funnyboy
 3 VOLUME /tmp
 4 RUN mkdir /app
 5 ADD docker-app-0.0.1-SNAPSHOT.jar /app/app.jar
 6 ADD runboot.sh /app/
 7 RUN bash -c 'touch /app/app.jar'
 8 WORKDIR /app
 9 RUN chmod a+x runboot.sh
10 EXPOSE 5678
11 
12 CMD /app/runboot.sh

 

runboot.sh為應用啟動指令碼,參考如下:

1 java -Djava.security.egd=file:/dev/./urandom -jar /app/app.jar

 

step4、在pom中新增docker-maven-plugin外掛配置,關鍵程式碼如下:

 1 <build> 
 2     <plugins>
 3            <plugin>
 4                <groupId>org.springframework.boot</groupId>
 5                <artifactId>spring-boot-maven-plugin</artifactId>
 6
</plugin> 7 <plugin> 8 <groupId>com.spotify</groupId> 9 <artifactId>docker-maven-plugin</artifactId> 10 <version>0.4.3</version> 11 <configuration> 12 <!-- 映象名稱 --> 13 <imageName>${docker.image.prefix}/${project.artifactId}</imageName> 14 <!-- 指定Dockerfile 檔案的位置 --> 15 <dockerDirectory>src/main/docker</dockerDirectory> 16 <!-- 指定哪些檔案需要和 Dockerfile放在一起,一般jar包需要 --> 17 <resources> 18 <resource> 19 <targetPath>/</targetPath> 20 <directory>${project.build.directory}</directory> 21 <include>${project.build.finalName}.jar</include> 22 </resource> 23 </resources> 24 </configuration> 25 </plugin> 26 </plugins> 27 </build> 28 <properties> 29 <docker.image.prefix>funnyboy</docker.image.prefix> 30 <project.artifactId>docker-app</project.artifactId> 31 <project.build.finalName>app</project.build.finalName> 32 </properties>

 

step5、本地執行構建:mvn clean package docker:build

 

step6、遠端登陸伺服器,檢視docker映象:docker images

 

經過上述步驟,就已經成功實現了構建spring cloud+spring boot應用,並將映象釋出到遠端docker伺服器。