我们知道,docker能实现应用打包隔离,实现快速部署和迁移。如果我们开发应用使用了spring cloud + spring boot架构,那么,通过docker-maven-plugin实现快速构建镜像并发布到远程docker服务器会非常方便。相关步骤参考如下:

step1、开启docker服务器的tcp管理端口,这里以2375为例进行说明。具体的配置过程请参考另一篇博客:
https://www.cnblogs.com/funnyboy0128/p/9983779.html

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

step2、在本地配置环境变量:DOCKER_HOST,如下: 

Docker-通过docker-maven-plugin插件实现docker镜像构建并自动发布到远程docker服务器 Cloud 第1张

 

step3、在应用中src/main下新建docker文件夹,并编写Dockerfile和runboot.sh文件

Docker-通过docker-maven-plugin插件实现docker镜像构建并自动发布到远程docker服务器 Cloud 第2张

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

Docker-通过docker-maven-plugin插件实现docker镜像构建并自动发布到远程docker服务器 Cloud 第3张

Docker-通过docker-maven-plugin插件实现docker镜像构建并自动发布到远程docker服务器 Cloud 第4张

 

step6、远程登陆服务器,查看docker镜像:docker images

Docker-通过docker-maven-plugin插件实现docker镜像构建并自动发布到远程docker服务器 Cloud 第5张

 

经过上述步骤,就已经成功实现了构建spring cloud+spring boot应用,并将镜像发布到远程docker服务器。

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄