• 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。

     刷新配置,重启服务

    1. systemctl daemon-reload        //加载docker守护线程
    2. systemctl restart docker     //重启docker

    一、通过maven插件的方式(docker-maven-plugin)

    1、pom里添加docker-maven-plugin代码

    1. <plugin>
    2. <groupId>com.spotify</groupId>
    3. <artifactId>docker-maven-plugin</artifactId>
    4. <version>1.2.0</version>
    5. <configuration>
    6. <dockerHost>http://114.xxx.xx.xx:2375</dockerHost>
    7. <imageName>${project.artifactId}:${project.version}</imageName>
    8. <imageTags>${project.version}</imageTags>
    9. <baseImage>ascdc/jdk8</baseImage>
    10. <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
    11. <resources>
    12. <!--复制jar包到docker容器指定的位置-->
    13. <resource>
    14. <targetPath>/</targetPath>
    15. <directory>${project.build.directory}</directory>
    16. <include>${project.build.finalName}.jar</include>
    17. </resource>
    18. </resources>
    19. </configuration>
    20. <executions>
    21. <execution>
    22. <phase>package</phase>
    23. <goals>
    24. <goal>build</goal>
    25. </goals>
    26. </execution>
    27. </executions>
    28. </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仓库了

    1. <plugin>
    2. <groupId>org.springframework.boot</groupId>
    3. <artifactId>spring-boot-maven-plugin</artifactId>
    4. <version>${spring-boot-maven-plugin.version}</version>
    5. <executions>
    6. <execution>
    7. <goals>
    8. <goal>repackage</goal>
    9. </goals>
    10. </execution>
    11. </executions>
    12. <configuration>
    13. <includeSystemScope>true</includeSystemScope>
    14. </configuration>
    15. </plugin>

  • 相关阅读:
    从零学习VINS-Mono/Fusion源代码(五):VIO初始化
    Tomcat的各种对象HttpServletRequest、HttpServletResponse、ServletContext、ServletConfig
    python爬虫设计实验
    matlab编译.net dll及C#调用
    EIVideo的安装笔记
    Mysql学习笔记
    这次的PMP考试(6月25日),有人欢喜有人忧,原因就在这...
    ISO Swift高德导航开发指南
    为什么iphone邮箱里已发送邮件是空的
    2022/7/30
  • 原文地址:https://blog.csdn.net/lovebosom/article/details/126724817