怎么把自己的spring-boot项目构建成docker image 打包到宿主机上,这里说下两种方法:
一、首先要搭建自己的docker仓库服务器:
当我们执行 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的远程连接。
修改宿主机的docker配置,开放2375端口,让其可以远程访问。该方法有漏洞,容易被黑客远程放入挖矿机镜像,开启需做好防范,开放了2375,没做ip限制,容易被拉去挖矿。。
修改配置文件(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>