怎么把自己的spring-boot项目构建成docker image 打包到宿主机上,这里说下两种方法:
当我们执行 docker pull xxx 的时候 ,它实际上是从 registry.hub.docker.com 这个地址去查找,这就是Docker公司为我们提供的公共仓库。在工作中,我们不可能把企业项目push到公有仓库进行管理。所以为了更好的管理镜像,Docker不仅提供了一个中央仓库,同时也允许我们搭建本地私有仓库。这一篇介绍registry私有仓库搭建。
Docker 官方提供了一个搭建私有仓库的镜像 registry ,只需把镜像下载下来,运行容器并暴露5000端口,就可以使用了。
docker pull registry:2
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --name dockerRegistry registry:2
浏览器访问http://127.0.0.1:5000/v2,出现下面情况说明registry运行正常。这样私有仓库就成功了。

接下来,开始本地打包到docker仓库,通过Maven插件自动部署,需要先开启docker的远程连接。
修改配置文件(centos7)
vi /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

unix://var/run/docker.sock:unix socket,本地客户端将通过这个来连接 Docker Daemon
tcp://0.0.0.0:2375:tcp socket,表示允许任何远程客户端通过 2375 端口连接 Docker Daemon。
刷新配置,重启服务
- systemctl daemon-reload //加载docker守护线程
- systemctl restart docker //重启docker
一、通过maven插件的方式(docker-maven-plugin)
1、pom里添加docker-maven-plugin代码
- <plugin>
- <groupId>com.spotify</groupId>
- <artifactId>docker-maven-plugin</artifactId>
- <version>1.2.0</version>
- <configuration>
- <dockerHost>http://114.xxx.xx.xx:2375</dockerHost>
- <imageName>${project.artifactId}:${project.version}</imageName>
- <imageTags>${project.version}</imageTags>
- <baseImage>ascdc/jdk8</baseImage>
- <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
- <resources>
- <!--复制jar包到docker容器指定的位置-->
- <resource>
- <targetPath>/</targetPath>
- <directory>${project.build.directory}</directory>
- <include>${project.build.finalName}.jar</include>
- </resource>
- </resources>
- </configuration>
- <executions>
- <execution>
- <phase>package</phase>
- <goals>
- <goal>build</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
如果报错类似java:8 not found ,我的docker上没有jdk1.8的镜像文件,需要自己下一个,可以docker search jdk8,pull一个,或者自己传tar包上去然后Dockerfile搞一个。我直接pull了一个.


docker images 查看下镜像

然后修改pom文件的基础镜像:baseImage改为刚才pull的镜像ascdc/jdk8
<baseImage>ascdc/jdk8</baseImage>
然后运行docker:build命令:


build success后,查看docker images
![]()
如果不想手动docker:build构建的话,pom可以加下面插件,实现 mvn clean package 命令即可实现自动构建到docker仓库了
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <version>${spring-boot-maven-plugin.version}</version>
- <executions>
- <execution>
- <goals>
- <goal>repackage</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <includeSystemScope>true</includeSystemScope>
- </configuration>
- </plugin>