微服务Docker打包在现在的微服务时代,你的代码没有微服务和分布式,当然会被人认为是低端的!对于我们开发者来说,掌握了这些技术就意味着薪水的增加。我们在项目中使用了多个微服务。上次课程我们是用手动上传打包的,但是很麻烦。有没有更好的办法?是的,我们可以直接通过idea把我们的微服务打包成Docker镜像,推送到Docker仓库。这里我们使用jib-maven-plugin构建一个容器化的springboot应用。Jib可以在不编写Dockerfile的情况下使Docker打包成为可能。什么是JibJib?它是由谷歌开发的。直接构建Java应用的Docker和OCI镜像的类库,以Maven和Gradle插件的形式提供。Jib带来的是,它允许您通过简单地向您选择的构建工具(Maven或Gradle)添加一个插件来创建容器,不需要额外的文件,只需几行配置,它处理将应用程序打包到容器中所有图像的步骤。Jib是来自Google的一个开源Java容器,它允许Java开发人员使用他们知道的Java工具构建容器,它不需要您编写Dockerfile或安装docker,它直接集成到Maven和Gradle中。与传统插件Docker构建过程的区别在“传统”Java到Docker镜像的构建过程中,我们需要安装Dockerfile和dockerdaemon,在Jib构建过程中,只需要插件项目的构建文件。Jib构建过程通过Jib,Java开发人员可以使用他们熟悉的Java工具来构建容器。Jib是一种快速而简单的容器镜像构建工具,它负责将应用程序打包到容器镜像中所需的所有步骤。它不需要您编写Dockerfile或安装Docker,它直接集成到Maven和Gradle中——只需将插件添加到您的构建中,您就可以立即将您的Java应用程序容器化。准备工作设置Horbor用户权限我们要将idea的微服务推送到Harbor,并使用itcast用户,我们只需要设置我们的itcast用户就是开发者pom文件配置jib应用的基础本地存储镜像,请添加配置jib-maven-pluginpublicproperty配置在.xml如下内容在properties中配置harbor的公共配置itcastharbor.comlibraryitcastQwert123编译配置插件配置src/main/java**/*.xmlsrc/main/resourcestruecom.google.cloud.toolsjib-maven-plugin2.8.0trueopenjdk:8-jdk-alpine${docker.registry.url}/${docker.registry.name}/${project.artifactId}:${project.version}</image>${project.version}${docker.registry.username}${docker.registry.password}-Djava.security.edg=file:/dev/./urandom<卷><卷>/tmp卷><卷>/日志卷>8080com.heima.test.ApplicationOCIUSE_CURRENT_TIMESTAMPjib-maven-pluginpackagebuild执行>执行actions>执行构建,然后在项目根目录执行mvncleancompilejib:build。我们可以看到harbor仓库已经推送成功了在通过域名访问harbor中查看,我们查看我们库中的镜像仓库,点进去可以看到我们刚刚推送的镜像以及该镜像的详细信息其他microservicesuploadmicroservicepackaging这里我们也将其他的微服务上传到仓库中,步骤同上查看仓库中的镜像。检查我们仓库中的图像。我们看到图片已经上传到仓库了。harbor测试删除本地镜像。可以通过dockerrmi镜像ID删除本地镜像。dockerrm-flearn-docker-storagedockerrmi192.168.64.153/library/learn-docker-storage:0.0.3在harbor中运行镜像我们已经把我们所有的微服务上传到仓库中,我们把docker作为一个完整的项目来运行learn-docker-storage服务执行运行命令dockerrun-d\-v/tmp/data/logs:/logs\--namelearn-docker-storage\--network=learn-docker-network\manager-hongbaoyu-java.itheima.net:8443/library/learn-docker-storage:1.0-SNAPSHOT因为我们是基于内网访问的,所以不需要暴露接口。访问微服务测试curlhttp://192.168.64.152:8080/userinfo/10001|python-mjson.toolrunlearn-docker-web服务执行运行命令dockerrun-d\--namelearn-docker-web\--network=learn-docker-network\manager-hongbaoyu-java.itheima.net:8443/library/learn-docker-web:1.0-SNAPSHOT这个微服务也是内部服务,不需要泄露端口,没有配置日志输出。未安装所有日志路径。运行learn-docker-gateway服务执行运行命令dockerrun-d\-p8888:8888\--namelearn-docker-gateway\--network=learn-docker-network\manager-hongbaoyu-java.iheima.net:8443/library/learn-docker-gateway:1.0-SNAPSHOT因为网关需要对外暴露端口,所以都需要开放8888端口才能查看nacos注册的微服务,发现我们三个服务都已经注册了访问测试微服务。因为我们存储服务的8003端口没有暴露,无法访问,所以需要通过网关访问。curlhttp://192.168.64.153:8888/employeapi/find/10001|python-mjson.tool本文由传智教育博学谷教研组发布。如果本文对您有帮助,请关注并点赞;大家有什么建议也可以留言或者私信,你们的支持是我坚持创作的动力。转载请注明出处!