咱们知道,docker能实现应用打包隔离,实现快速部署和迁移。若是咱们开发应用使用了spring cloud + spring boot架构,那么,经过docker-maven-plugin实现快速构建镜像并发布到远程docker服务器会很是方便。相关步骤参考以下:html
step一、开启docker服务器的tcp管理端口,这里以2375为例进行说明。具体的配置过程请参考另外一篇博客:
https://www.cnblogs.com/funnyboy0128/p/9983779.htmljava
step二、在本地配置环境变量:DOCKER_HOST,以下: spring
step三、在应用中src/main下新建docker文件夹,并编写Dockerfile和runboot.sh文件docker
Dockerfile主要用来构建镜像,参考示例以下:bash
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
step四、在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>
step五、本地执行构建:mvn clean package docker:build并发
step六、远程登录服务器,查看docker镜像:docker imagesapp
通过上述步骤,就已经成功实现了构建spring cloud+spring boot应用,并将镜像发布到远程docker服务器。dom