热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringBoot打包上传Docker仓库的详细步骤

这篇文章主要介绍了SpringBoot打包上传Docker仓库的详细步骤,本文分步骤给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

重要提示:学习本文之前需要提前了解docker容器相关的知识,了解和熟练运用常用的docker操作命令,如果已经了解了docker容器相关的知识那我们就开搞吧!

以下是完成标题所述功能的大致步骤:

搭建docker镜像仓库

修改Spring Boot 配置文件添加docker仓库配置,打包,上传至docker 镜像仓库

从自己搭的docker镜像仓库拉取上传的镜像文件并运行

Step1 搭建docker镜像私有仓库

搭建docker镜像仓库我们需要依赖docker-registry工具 ,docker-registry是官方提供的工具,可以用于构建私有的镜像仓库。本文内容基于 docker-registry v2.x 版本 官方地址:https://docs.docker.com/registry/

1.拉取registry 镜像文件

docker pull registry  

2.启动镜像

$ docker run -d \
    -p 5000:5000 \
    -v /opt/data/registry:/var/lib/registry \
    registry

-d:守护线程启动
-p:端口映射 宿主机的端口:容器的端口
-v:数据卷把容器内的地址目录映射到宿主机中/opt/data/registry就是宿主机中镜像私有仓库存放镜像的位置
registry 就是镜像名

3.配置daemon.json文件加入,仓库配置

vim /etc/docker/daemon.json

添加配置如下:

{
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ],
  "insecure-registries": [
    "yourip:5000"
  ]
}

在原来的daemon.json 文件添加 insecure-registries 节点配置,yourip :填写你的虚拟机ip, 保存退出 重新加载配置文件和重新启动docker

systemctl daemon-reload
systemctl restart docker

4.测试把镜像上传到自己的镜像仓库,我们标记一个镜像然后上传的仓库 使用 docker tag 命令:docker tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]

docker tag ubuntu:latest 127.0.0.1:5000/ubuntu:latest

(这里测试上传的镜像不必和文中相同,你可以pull 一个 tomcat 镜像然后上传即可) 此时会生成一个标记的镜像

docker image ls
REPOSITORY                        TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu                            latest              ba5877dc9bec        6 weeks ago         192.7 MB
127.0.0.1:5000/ubuntu:latest      latest              ba5877dc9bec        6 weeks ago         192.7 MB

push 到私有仓库

docker push 127.0.0.1:5000/ubuntu:latest

查看私有仓库的镜像(其实可以去启动仓库时挂载的目录下看,本文可以到宿主机 /opt/data/registry 目录下查看了上传的镜像文件)

curl 127.0.0.1:5000/v2/_catalog

把私有仓库的镜像pull 下来

docker pull 127.0.0.1:5000/ubuntu:latest

pull 下来没问题那就说明镜像仓库已经搭建好了

Step 2 修改SpringBoot 配置文件添加docker仓库配置,打包,上传至docker 镜像仓库

在配置SpringBoot项目之前,还需要对docker 容器做一些配置,才能把jar包上传到仓库

开启docker远程api,修改文件,

vim /lib/systemd/system/docker.service

原来ExecStart :ExecStart=/usr/bin/dockerd -H fd:// --cOntainerd=/run/containerd/containerd.sock

添加**-H tcp://0.0.0.0:2375**

修改后:ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --cOntainerd=/run/containerd/containerd.sock

(如果你使用的是阿里云服务器记得去出入规则那里打开2375这个端口哦!)

保存退出,重新加载配置和启动docker

systemctl daemon-reload 
systemctl restart docker

查看配置是否成功,

docker -H 127.0.0.1 info

输出如下就是配置成功:

Client:
Debug Mode: false

Server:
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 6
Server Version: 19.03.3
Storage Driver: overlay2
.......

配置springboot 项目,pom文件添加打包配置如下


    com.spotify
    docker-maven-plugin
    1.1.0
    
        
            build-image
            package
            
                build
            
        
    
    
        jenkins_test/${project.artifactId}:${project.version}
        http://yourip:2375
        java:8
        ["java", "-jar","/${project.build.finalName}.jar"]
        
        
            
                /
                ${project.build.directory}
                ${project.build.finalName}.jar
            
        
    
  • executions.execution.phase:此处配置了在maven打包应用时构建docker镜像;
  • imageName:用于指定镜像名称,jenkins_test是仓库名称,{project.version}为镜像版本号;
  • dockerHost:打包后上传到的docker服务器地址;
  • baseImage:该应用所依赖的基础镜像,此处为java;
  • entryPoint:docker容器启动时执行的命令;
  • resources.resource.targetPath:将打包后的资源文件复制到该目录;
  • resources.resource.directory:需要复制的文件所在目录,maven打包的应用jar包保存在target目录下面;
  • resources.resource.include:需要复制的文件,打包好的应用jar包。

配置好以上内容后就可以打包了,(正常的springboot maven 打包,或者idea mavenproject install 即可)

打包成功完成后,回到docker容器 查看镜像仓库

curl 127.0.0.1:5000/v2/_catalog

确认存在之后将上传的镜像拉取下来,拉取成功后查看镜像列表

docker iamges

显示如图:

这样就说明这一套操作成功了 ,首次打包可能比较慢 因为docker 要拉去一下 java :8 基础镜像

我们来启动一下这个镜像

docker run -p 8080:8080 imageid

-p:端口映射

启动成功如图:

因为springboot 项目的application.yml文件中配置的server.port 为8080.启动的时候需要映射 8080:8080 第一个8080 是宿柱机的端口 第二个8080 是容器的端口

到此本文的所需要实现的都已经实现了,继续阅读有彩蛋哦!!!!

在springboot 项目中有一个日志配置,如下

<&#63;xml version="1.0" encoding="UTF-8"&#63;>

    
    
    
    
        
            
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
        
    
    
    
        
            
            ${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log
            
            30
        
        
            
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
        
        
        
            10MB
        
    

    
    
        
        
    

我们要注意这个节点配置的logs 文件的保存地址

如果按照传统的jar包部署方式,日志文件应该就在宿主机的 /home/logs 里面了但是现在我们发现都没有这个目录了,那问题出现在哪?日志文件输出到哪了??我们进入启动的springboot容器试一试,以交互形式进入一个已经在运行的容器内部

docker exec -it containerid bash

我们就看到里面有一个 home目录,依次进入目录我们会发现日志文件在这里了!

思考,我们前面不是使用到了数据卷的命令嘛,是否可以把容器内的路径映射到虚拟机上?试试吧!停掉启动的容器,(我们直接删除吧)

docker stop containerid
docker rm containerid

重新启动容器

docker run -d -p 8080:8080 -v /home/logs:/home/logs imageid

这次我们命令加了一个 -d 意思是守护线程启动 (后台运行) 使用如下命令 查看启动的容器日志

docker logs -f  containerID

可以看到,启动成功了,那么 按理说 locback.xml 会在我们映射的宿主机的 /home/logs 目录下输出我们的日志文件,我们去看看 输入一系列命令,可以看到日志文件真的在这里了!

到此这篇关于Spring Boot 打包上传Docker 仓库的详细步骤的文章就介绍到这了,更多相关Spring Boot 打包上传内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!


推荐阅读
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文介绍了如何使用PHP代码实现微信平台的媒体素材上传功能,详细解释了API接口的使用方法和注意事项,确保文件路径正确以避免常见的错误。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 图数据库中的知识表示与推理机制
    本文探讨了图数据库及其技术生态系统在知识表示和推理问题上的应用。通过理解图数据结构,尤其是属性图的特性,可以为复杂的数据关系提供高效且优雅的解决方案。我们将详细介绍属性图的基本概念、对象建模、概念建模以及自动推理的过程,并结合实际代码示例进行说明。 ... [详细]
  • 本题涉及一棵由N个节点组成的树(共有N-1条边),初始时所有节点均为白色。题目要求处理两种操作:一是改变某个节点的颜色(从白变黑或从黑变白);二是查询从根节点到指定节点路径上的第一个黑色节点,若无则输出-1。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 本文探讨了在Linux系统上使用Docker时,通过volume将主机上的HTML5文件挂载到容器内部指定目录时遇到的403错误,并提供了解决方案和详细的操作步骤。 ... [详细]
  • 在Python开发过程中,随着项目数量的增加,不同项目依赖于不同版本的库,容易引发依赖冲突。为了避免这些问题,并保持开发环境的整洁,可以使用Virtualenv和Virtualenvwrapper来创建和管理多个隔离的Python虚拟环境。 ... [详细]
  • PostgreSQL 10 离线安装指南
    本文详细介绍了如何在无法联网的服务器上进行 PostgreSQL 10 的离线安装,并涵盖了从下载安装包到配置远程访问的完整步骤。 ... [详细]
  • 探讨如何高效使用FastJSON进行JSON数据解析,特别是从复杂嵌套结构中提取特定字段值的方法。 ... [详细]
  • 本文详细介绍了如何使用jQuery防止事件冒泡,确保子元素的点击事件不会触发父元素或祖先元素的相应事件。通过具体的代码示例和解释,帮助开发者更好地理解和应用这一技术。 ... [详细]
  • 作为一名专业的Web前端工程师,掌握HTML和CSS的命名规范是至关重要的。良好的命名习惯不仅有助于提高代码的可读性和维护性,还能促进团队协作。本文将详细介绍Web前端开发中常用的HTML和CSS命名规范,并提供实用的建议。 ... [详细]
  • 本文将深入探讨如何在不依赖第三方库的情况下,使用 React 处理表单输入和验证。我们将介绍一种高效且灵活的方法,涵盖表单提交、输入验证及错误处理等关键功能。 ... [详细]
author-avatar
手机用户2502870065
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有