springboot项目构建docker image镜像

Posted 猩猩之火

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot项目构建docker image镜像相关的知识,希望对你有一定的参考价值。

怎么把自己的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>

以上是关于springboot项目构建docker image镜像的主要内容,如果未能解决你的问题,请参考以下文章

springboot项目构建docker image镜像

Springboot 生成docker image

本地Docker部署SpringBoot项目

使用 Docker 构建部署运行Spring Boot应用 《Spring Boot 2.0 极简教程》

Docker实现SpringBoot项目的快速构建

Docker实现SpringBoot项目的快速构建