Docker一键打包微服务

Docker一键打包微服务_第1张图片

微服务Docker打包

现在的微服务时代,你的代码没个微服务、分布式人家都会觉得低端,当然!对于我们开发人员来说,掌握这些技术意味着涨薪。

​ 我们项目中用到了多个微服务,我们上一节课程打包用的是手动上传,但是很麻烦,有没有更好的方式呢,是有的,我们可以直接通过idea将我们的微服务打包成Docker镜像,并推送到Docker仓库中

​ 这里我们采用jib-maven-plugin 来进行来构建容器化的spring boot应用程序,Jib可以让不写Dockerfile就能实现Docker打包

什么是Jib

Jib 是 Google 开发的可以直接构建 Java 应用的 Docker 和 OCI 镜像的类库,以 Maven 和 Gradle 插件形式提供。

​ Jib带来的是,它允许您通过简单地将插件添加到您选择的构建工具(Maven或Gradle)来创建容器,没有额外的文件,只需几行配置,它处理将应用程序打包到容器映像的所有步骤。

​ Jib是来自Google的开源Java容器,它允许Java开发人员使用他们所知道的Java工具构建容器,它不需要您编写Dockerfile或安装了docker,它直接集成到MavenGradle中

和传统的插件区别

Docker 构建流程
在“传统”Java到Docker映像构建流程中,我们需要安装Dockerfile和docker守护进程,在Jib构建流程中,您只需要插件项目的构建文件。

Docker一键打包微服务_第2张图片

Jib构建流程

​ 通过 Jib,Java 开发者可以使用他们熟悉的 Java 工具来构建容器。Jib 是一个快速而简单的容器镜像构建工具,它负责处理将应用程序打包到容器镜像中所需的所有步骤。它不需要你编写 Dockerfile 或安装 Docker,而且可以直接集成到 Maven 和 Gradle中 —— 只需要将插件添加到构建中,就可以立即将 Java 应用程序容器化。

file

准备工作

设置Horbor用户权限
我们要将idea的微服务推送到Harbor,并且用itcast的用户,所有我们要设置我们的itcast用户是开发者
Docker一键打包微服务_第3张图片

pom文件配置jib

对于应用程序的基本本地存储镜像,请在pom.xml以下内容中配置jib-maven-plugin
公共属性配置
在properties中配置harbor的共有配置

    
    itcastharbor.com
    
    library
    
    itcast
    
    Qwert123
编译配置插件配置

    
        
            src/main/java
            
                **/*.xml
            
        
        
            src/main/resources
            true
        
    
    

        
            com.google.cloud.tools
            jib-maven-plugin
            2.8.0
            
                true
                
                
                    
                    openjdk:8-jdk-alpine
                
                
                    
                    ${docker.registry.url}/${docker.registry.name}/${project.artifactId}:${project.version}
                    
                    
                        
                        ${project.version}
                    
                    
                    
                        ${docker.registry.username}
                        ${docker.registry.password}
                    
                
                
                

                    
                        
                        -Djava.security.edg=file:/dev/./urandom
                    
                    
                    
                        /tmp
                        /logs
                    
                    
                        
                        8080
                    
                    
                    com.heima.test.Application
                    OCI
                    
                    USE_CURRENT_TIMESTAMP
                
            
            
                
                
                    jib-maven-plugin
                    package
                    
                        build
                    
                
            
        
        
    

执行构建

然后在项目根目录执行mvn clean compile jib:build就可以了

Docker一键打包微服务_第4张图片

我们看到已经推送成功了

harbor仓库中查看

通过域名访问harbor,我们看我们的library里面的镜像仓库

Docker一键打包微服务_第5张图片

点进去就可以看到我们刚刚推送的镜像

Docker一键打包微服务_第6张图片

以及镜像的详细信息

Docker一键打包微服务_第7张图片

其他的微服务上传

微服务打包
这里我们也将其他微服务上传到仓库,步骤同上

Docker一键打包微服务_第8张图片

仓库中查看镜像
在我们的仓库中查看镜像,我们看到镜像都已经上传到仓库中了

Docker一键打包微服务_第9张图片

harbor 测试

删除本地镜像
可以通过docker rmi 镜像ID删除本地镜像
docker rm -f learn-docker-storage
docker rmi  192.168.64.153/library/learn-docker-storage:0.0.3

file

运行harbor 中的镜像
我们把我们的所有微服务都上传到了仓库中,我们以一个完整的项目运行docker

Docker一键打包微服务_第10张图片

运行learn-docker-storage服务
执行运行命令
docker run -d \
-v /tmp/data/logs:/logs \
--name learn-docker-storage \
--network=learn-docker-network \
manager-hongbaoyu-java.itheima.net:8443/library/learn-docker-storage:1.0-SNAPSHOT
因为我们是基于内部网络访问 不需要暴漏接口了

Docker一键打包微服务_第11张图片

访问微服务测试
curl http://192.168.64.152:8080/userinfo/10001 | python -m json.tool

Docker一键打包微服务_第12张图片

运行learn-docker-web服务
执行运行命令
docker run -d \
--name learn-docker-web \
--network=learn-docker-network \
manager-hongbaoyu-java.itheima.net:8443/library/learn-docker-web:1.0-SNAPSHOT
该微服务也是内部服务不需要暴漏端口,并且没有配置日志输出所有不挂载日志路径

Docker一键打包微服务_第13张图片

运行learn-docker-gateway服务
执行运行命令
docker run -d \
-p 8888:8888 \
--name learn-docker-gateway \
--network=learn-docker-network \
manager-hongbaoyu-java.itheima.net:8443/library/learn-docker-gateway:1.0-SNAPSHOT
因为网关对外需要暴漏端口,所有需要开放8888端口

Docker一键打包微服务_第14张图片

查看nacos注册的微服务
我们发现我们的三个服务都已经注册进去了

访问测试微服务
因为我们存储服务的8003端口没有暴漏出来,无法访问,我们需要通过网关进行访问
curl http://192.168.64.153:8888/employeapi/find/10001| python -m json.tool

Docker一键打包微服务_第15张图片

本文由传智教育博学谷教研团队发布。

如果本文对您有帮助,欢迎关注点赞;如果您有任何建议也可留言评论私信,您的支持是我坚持创作的动力。

转载请注明出处!

你可能感兴趣的:(javadocker容器)