微服务Docker打包(docker微服务架构实战)

  本篇文章为你整理了微服务Docker打包(docker微服务架构实战)的详细内容,包含有微服务docker部署 docker微服务架构实战 微服务 docker k8s 微服务打包部署 微服务Docker打包,希望能帮助你了解 微服务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,它直接集成到Maven和Gradle中。

  和传统的插件区别

  Docker 构建流程

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

  Jib构建流程

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

  设置Horbor用户权限

  我们要将idea的微服务推送到Harbor,并且用itcast的用户,所有我们要设置我们的itcast用户是开发者
 

  pom文件配置jib

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

  公共属性配置

  在properties中配置harbor的共有配置

  

 properties 

 

   !--harbor 仓库地址--

   docker.registry.url itcastharbor.com /docker.registry.url

   !--harbor 的项目名称--

   docker.registry.name library /docker.registry.name

   !--harbor账号--

   docker.registry.username itcast /docker.registry.username

   !--harbor密码--

   docker.registry.password Qwert123 /docker.registry.password

   /properties

  

 

  编译配置插件配置

  

 build 

 

   resources

   resource

   directory src/main/java /directory

   includes

   include **/*.xml /include

   /includes

   /resource

   resource

   directory src/main/resources /directory

   filtering true /filtering

   /resource

   /resources

   plugins

   plugin

   groupId com.google.cloud.tools /groupId

   artifactId jib-maven-plugin /artifactId

   version 2.8.0 /version

   configuration

   allowInsecureRegistries true /allowInsecureRegistries

   !--from节点用来设置镜像的基础镜像,相当于Docerkfile中的FROM关键字--

   from

   !--使用openjdk官方镜像,tag是:8-jdk-alpine,表示镜像的操作系统是alpine,装好了jdk8--

   image openjdk:8-jdk-alpine /image

   /from

   !--镜像名称和tag,使用了mvn内置变量${project.version},表示当前工程的version--

   image ${docker.registry.url}/${docker.registry.name}/${project.artifactId}:${project.version}

   /image

   tags

   !--版本号--

   tag ${project.version} /tag

   /tags

   !--harbor的认证信息--

   auth

   username ${docker.registry.username} /username

   password ${docker.registry.password} /password

   /auth

   /to

   !--容器相关的属性--

   container

   jvmFlags

   !--一些启动参数--

   jvmFlag -Djava.security.edg=file:/dev/./urandom /jvmFlag

   /jvmFlags

   !--挂载volume的配置--

   volumes

   volume /tmp /volume

   volume /logs /volume

   /volumes

   ports

   !--暴漏端口号--

   port 8080 /port

   /ports

   !--微服务的启动类--

   mainClass com.heima.test.Application /mainClass

   format OCI /format

   !--使用该参数将镜像的创建时间与系统时间对其--

   creationTime USE_CURRENT_TIMESTAMP /creationTime

   /container

   /configuration

   executions

   !--执行打包配置--

   execution

   id jib-maven-plugin /id

   phase package /phase

   goals

   goal build /goal

   /goals

   /execution

   /executions

   /plugin

   !-- Docker maven plugin --

   /plugins

   /build

  

 

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

  我们看到已经推送成功了

  harbor仓库中查看

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

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

  以及镜像的详细信息

  其他的微服务上传

  微服务打包

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

  仓库中查看镜像

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

  harbor 测试

  删除本地镜像

  可以通过docker rmi 镜像ID删除本地镜像

  

docker rm -f learn-docker-storage

 

  docker rmi 192.168.64.153/library/learn-docker-storage:0.0.3

  

 

  运行harbor 中的镜像

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

  运行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

  

 

  因为我们是基于内部网络访问 不需要暴漏接口了

  访问微服务测试

  

curl http://192.168.64.152:8080/userinfo/10001 python -m json.tool

 

  

 

  运行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

  

 

  该微服务也是内部服务不需要暴漏端口,并且没有配置日志输出所有不挂载日志路径

  运行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端口

  查看nacos注册的微服务

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

  访问测试微服务

  因为我们存储服务的8003端口没有暴漏出来,无法访问,我们需要通过网关进行访问

  

curl http://192.168.64.153:8888/employeapi/find/10001 python -m json.tool

 

  

 

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

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

  转载请注明出处!

  以上就是微服务Docker打包(docker微服务架构实战)的详细内容,想要了解更多 微服务Docker打包的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: