微服务实例构建成 docker 镜像实例

这篇具有很好参考价值的文章主要介绍了微服务实例构建成 docker 镜像实例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


🎈 作者:Linux猿

🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬


目录

一、实验环境

二、制作 jar

二、打包镜像

2.1 编写 DockerFile

2.2 构建 docker 镜像

三、运行镜像

四、远程访问容器


本文主要介绍如何将微服务实例的 jar 构建成 docker 镜像。

一、实验环境

本文的试验环境是 CentOS 7.9,如下所示。

[root@k8s-master ~]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[root@k8s-master ~]#

二、制作 jar

我创建了一个微服务实例,打包成了 jar,如下所示。

微服务实例构建成 docker 镜像实例,微服务/K8s/Docker,打包jar镜像,docker,微服务,jar,镜像
图1 微服务实例

上面的微服务实例可以通过 localhost:8088/index 访问,返回 hello,如下所示。

微服务实例构建成 docker 镜像实例,微服务/K8s/Docker,打包jar镜像,docker,微服务,jar,镜像
图2 访问微服务

 在 Linux 环境中创建一个目录 imagesJar,将 demo-0.0.1-SNAPSHOT.jar 拷贝到该目录下,如下所示。

[node@k8s-master imagesJar]$ ls
demo-0.0.1-SNAPSHOT.jar
[node@k8s-master imagesJar]$

二、打包镜像

在微服务实例同一目录下(imagesJar目录下)创建 DockerFile 文件,如下所示。

[node@k8s-master imagesJar]$ ls
demo-0.0.1-SNAPSHOT.jar  DockerFile
[node@k8s-master imagesJar]$

下面编写 DockerFile 文件。 

2.1 编写 DockerFile

编写 DockerFile 文件内容如下所示。

#penjdk:8-jre 为基础镜像,来构建此镜像,可以理解为运行的需要基础环境
FROM openjdk:8-jre

#WORKDIR指令用于指定容器的一个目录, 容器启动时执行的命令会在该目录下执行。
WORKDIR /opt/docker/images/metabase/

#将当前目录下 demo-0.0.1-SNAPSHOT.jar 复制到容器根目录下
ADD demo-0.0.1-SNAPSHOT.jar demo-0.0.1-SNAPSHOT.jar

#将依赖包 复制到容器根目录/libs下,demo-0.0.1-SNAPSHOT.jar 已不再需要添加其它jar包
#ADD libs /libs

#暴露容器端口为 8088 Docker镜像告知Docker宿主机应用监听了8088端口
EXPOSE 8088

#容器启动时执行的命令
CMD java -jar demo-0.0.1-SNAPSHOT.jar

2.2 构建 docker 镜像

在 imagesJar 目录下执行如下命令。

[node@k8s-master imagesJar]$ sudo docker build -f DockerFile  -t  test/demo:1.2.0 .
Sending build context to Docker daemon  16.5 MB
Step 1/5 : FROM openjdk:8-jre
 ---> 0c14a0e20aa3
Step 2/5 : WORKDIR /opt/docker/images/metabase/
 ---> Using cache
 ---> 971fa909168f
Step 3/5 : ADD demo-0.0.1-SNAPSHOT.jar demo-0.0.1-SNAPSHOT.jar
 ---> Using cache
 ---> e9c435263fb7
Step 4/5 : EXPOSE 8088
 ---> Running in 874466bc2650
 ---> 590b7380444b
Removing intermediate container 874466bc2650
Step 5/5 : CMD java -jar demo-0.0.1-SNAPSHOT.jar
 ---> Running in 2d14cbde1e3d
 ---> fff004fa39a7
Removing intermediate container 2d14cbde1e3d
Successfully built fff004fa39a7
[node@k8s-master imagesJar]$

查看打包好的镜像,执行如下命令。

[node@k8s-master imagesJar]$ sudo docker images
REPOSITORY                                            TAG                 IMAGE ID            CREATED             SIZE
test/demo                                             1.2.0               fff004fa39a7        26 seconds ago      290 MB
test/demo                                             1.0.0               d1d4460e42b1        25 hours ago        290 MB
test/demo                                             1.1.0               d1d4460e42b1        25 hours ago        290 MB
nginx                                                 alpine              4937520ae206        3 weeks ago         41.4 MB
nginx                                                 latest              eb4a57159180        3 weeks ago         187 MB
docker.io/openjdk                                     8-jre               0c14a0e20aa3        11 months ago       274 MB
192.168.231.152:5000/pod-infrastructure               latest              99965fb98423        5 years ago         209 MB
registry.access.redhat.com/rhel7/pod-infrastructure   latest              99965fb98423        5 years ago         209 MB
tianyebj/pod-infrastructure                           latest              34d3450d733b        6 years ago         205 MB
[node@k8s-master imagesJar]$

在上图中,test/demo-1.2.0 是新打得镜像。

三、运行镜像

打包完成镜像后,执行如下命令运行镜像。

[node@k8s-master imagesJar]$ sudo docker run -d -p 8088:8088 test/demo:1.2.0
4dbd849d1d79aa0874ee64f5c220a05b5b65395c94e3e12eb6e38e65121ccf29
[node@k8s-master imagesJar]$

查看运行的镜像,如下所示。

[node@k8s-master imagesJar]$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
4dbd849d1d79        test/demo:1.2.0     "/bin/sh -c 'java ..."   23 seconds ago      Up 21 seconds       0.0.0.0:8088->8088/tcp   zen_dijkstra
[node@k8s-master imagesJar]$

四、远程访问容器

通过浏览器访问容器,如下所示。

微服务实例构建成 docker 镜像实例,微服务/K8s/Docker,打包jar镜像,docker,微服务,jar,镜像
图3 通过浏览器访问容器

参考链接:

https://blog.csdn.net/Jarbein/article/details/103627413


🎈 感觉有帮助记得「一键三连支持下哦!有问题可在评论区留言💬,感谢大家的一路支持!🤞猿哥将持续输出「优质文章回馈大家!🤞🌹🌹🌹🌹🌹🌹🤞文章来源地址https://www.toymoban.com/news/detail-533337.html


到了这里,关于微服务实例构建成 docker 镜像实例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • k8s实战从入门到上天系列第一篇:K8s微服务实战内容开篇介绍

            我们使用开源ruoyi微服务基本使用,基于基本的微服务实践。我们来讲解k8s的实战内容。         第一章:开源ruoyi微服务简介基本使用         第二章:k8s基本知识回顾、k3s集群搭建和基本使用         第三章:微服务镜像构建         第四章:中间件镜像构建

    2024年02月01日
    浏览(34)
  • Nestjs 微服务实战 - 动态微服务创建链接

    所有的微服务都需要做服务治理 服务治理包括(配置中心、服务发现、注册服务等等),常见的包括 Java 的 Nacos,这里不关注与服务治理,只说明,如何用 nest 网关,并且在网关层动态实现微服务注入 nestjs 官网的案例明显是偏向于手动注册微服务的,例如: 以上属于官网列

    2024年01月24日
    浏览(28)
  • go-zero微服务实战——服务构建

    接上一节go-zero微服务实战——基本环境搭建。搭建好了微服务的基本环境,开始构建整个微服务体系了,将其他服务也搭建起来。 order的目录结构,如下 根目录 api服务 rpc服务 自定义逻辑层logic 自定义参数层models 自定义工具层util api服务和rpc服务都是基于goctl一键生成的,当

    2024年02月14日
    浏览(32)
  • SpringCloudAlibaba微服务实战系列(一)Nacos服务注册发现

    实战前先做一个背景了解。 单体架构:近几年技术的飞速发展,各种各样的服务已经进入到网络化。单体架构发布时只需要打成一个war或jar包发布即可;而随着业务量激增或网站流量的增加,必会暴露致命缺陷。 SOA:Service Oriented Architecture 面向服务的体系结构。旨在提升代

    2024年02月15日
    浏览(27)
  • 《微服务实战》 第三十二章 微服务链路跟踪-sleuth zipkin

    第三十二章 微服务链路跟踪-sleuth zipkin 第三十章 分布式事务框架seata TCC模式 第二十九章 分布式事务框架seata AT模式 第十二章 Spring Cloud Alibaba Sentinel 第十一章 Spring Cloud Alibaba nacos配置中心 第十章 SpringCloud Alibaba 之 Nacos discovery 第七章 Spring Cloud 之 GateWay 第六章 Spring Cloud 之

    2024年02月09日
    浏览(30)
  • go-zero微服务实战——etcd服务注册与发现

    浅谈etcd服务注册与发现 etcd官网 etcd中文文档 apt安装etcd,启动命令十分简单 etcd 。 etcd分为v2版本和v3版本,命令有所不一样,使用命令 etcdctl h 查看 如上图所示并没有出现API的版本,此时是使用默认的v2版本,但是v2版本很多命令使用不了,因此切换为v3版本,命令如下: e

    2024年02月12日
    浏览(29)
  • 一篇文章学会如何在 NestJS 中开启微服务,微服务实战分享

    在软件开发的世界里,微服务架构是一个经常被提及的概念。但它到底是什么意思呢?为什么现在这么多团队和公司选择使用微服务?而NestJS又是如何帮助开发者构建微服务的? 想象一下,你想建一座大厦。你可以选择由一间强大的公司全权负责,从地基到尖塔的每一部分;

    2024年02月21日
    浏览(29)
  • [golang gin框架] 39.Gin商城项目-微服务实战之微服务架构

    单体架构在 中小企业内部 用的是非常多的,当 业务不复杂 , 团队规模不大 的时候,单体架构比微服务架构具有 更高的生产率 单体架构 当 业务比较复杂 , 并发量 比较大, 团队规模扩大的时候, 就需要引入微服务架构了,它比单体架构 具有 更高的生产率, 可以 节省成本 , 解

    2024年02月12日
    浏览(31)
  • [golang gin框架] 40.Gin商城项目-微服务实战之Captcha验证码微服务

    本次内容需要 gin框架基础知识, golang微服务基础知识才能更好理解 在前面,讲解了微服务的架构等,这里,来讲解前面商城项目的 Captcha验证码 微服务 ,captcha验证码功能在前台,后端 都要用到 ,可以把它 抽离出来 ,做成微服务功能 编辑 这个验证码功能封装代码captcha.go如下: 把这个

    2024年02月16日
    浏览(30)
  • [golang gin框架] 42.Gin商城项目-微服务实战之后台Rbac微服务角色增删改查微服务

    上一节讲解了后台Rbac微服务用户登录功能以及Gorm数据库配置单独抽离,Consul配置单独抽离,这一节讲解 后台Rbac微服务 角色 增删改查微服务 功能,Rbac微服务角色增删改查微服务和 后 台Rbac用户登录微服务 是属于 同一个Rbac微服务 的 不同子微服务功能 ,为了区分不同子微

    2024年02月15日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包