Docker如何多步构建生成dubbo-admin镜像详解

前言

Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。关于注册中心、协议支持、服务监控等内容。

Docker是支持多步构建的,对于需要编译源代码的那种构建,多步构建一方面可以获得更小的镜像,另外一方面也不需要手动清理源代码和别的文件了。

有时候本地调试的时候需要起一个dubbo-admin看一下,但是每次都是启动一个tomcat,然后拷贝war,久了也有点麻烦。想从Docker镜像启动一个,但是官方没有提供。网上有不少个人构建的镜像,但是版本有些旧了。索性自己搞一下放在Docker hub。

手动操作比较直接,克隆代码库,然后maven打包出war包,放tomcat运行即可。

多步构建的Dockerfile如下:

FROM maven:3-jdk-8
RUN git clone --depth 1 https://github.com/apache/incubator-dubbo-ops.git /source
WORKDIR /source
RUN mvn package -f dubbo-admin

FROM tomcat:8.0-jre8
RUN rm -rf /usr/local/tomcat/webapps/
COPY --from=0 /source/dubbo-admin/target/*.war /usr/local/tomcat/webapps/ROOT.war
EXPOSE 8080

运行的时候提供一下注册中心的环境变量(dubbo.registry.address)即可。

如果是docker-compose中的写法如下:

version: '3'

services:
 zookeeper:
 image: zookeeper
 admin:
 image: htynkn/dubbo-admin
 depends_on:
  - zookeeper
 ports:
  - 8080
 environment:
  - dubbo.registry.address=zookeeper://zookeeper:2181

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • springboot集成dubbo注解版的示例代码

    工作中用springboot搭建项目,用dubbo做远程调用.springboot提倡注解配置和java配置,本文是基于dubbo最新版本2.6.3,使用注解方式的示例. 本文假定你已经有springboot和dubbo的使用经验. dubbo简介 dubbo是阿里巴巴开源的分布式服务框架,一般使用dubbo的RPC调用.但2016年停止维护,现在使用的2.8.4版本其实是当当维护的dubbox.2017年8月阿里又重启维护dubbo,并从2.5.7版本开始支持注解配置. 准备 此示例使用gra

  • 详解SpringBoot开发案例之整合Dubbo分布式服务

    前言 在 SpringBoot 很火热的时候,阿里巴巴的分布式框架 Dubbo 不知是处于什么考虑,在停更N年之后终于进行维护了.在之前的微服务中,使用的是当当维护的版本 Dubbox,整合方式也是使用的 xml 配置方式. 改造前 之前在 SpringBoot 中使用 Dubbox是这样的.先简单记录下版本,Dubbox-2.8.4.zkclient-0.6.zookeeper-3.4.6. 项目中引入 spring-context-dubbo.xml 配置文件如下: <?xml versio

  • 解决dubbo错误ip及ip乱入问题的方法

    问题 在本地启动dubbo时,服务注册在本地的zookeeper ,但是注册IP却不是本地的iP.产生问题,导致consumer 找不到provider ,访问不了服务. 例如 本地IP为 10.0.0.1 ,但是zookeeper上的注册ip 可能是 196.168.0.1 产生原因,随机产生,可能是你重启一下机器,或者电脑小智一段时间就会发生. 报错类似 com.alibaba.dubbo.remoting.RemotingException: client(url: dubbo://100

  • springboot2.0整合dubbo的示例代码

    写在前面: 使用springboot作为web框架,方便开发许多,做分布式开发,dubbo又不可少,那么怎么整合在一起呢, 跟我学一遍,至少会用 注意,springboot2.0和springboot1.x与dubbo整合不一样, 1.环境 1.新建一个空的maven项目,作为父工程,新建moudle,,service(接口层,及实现层,没有具体分,),web(web层,springboot项目) 项目结构如下 父pom如下 <properties> <project.build.sou

  • 从dubbo zookeeper注册地址提取出zookeeper地址的方法

    用途 项目中使用了 dubbo,注册中心使用的 zookeeper,使用 zookeeper 实现了一个简单的分布式锁(依赖 curator),因为配置文件存在 dubbo.registry 配置,为了直接使用这个地址来创建分布式锁,写了一个简单的方法来提取 zookeeper 地址. 效果 dubbo.registry 有多种配置方式,支持所有情况,下面是常见的例子和提取结果: zookeeper://localhost:2181 zookeeper://localhost:2181?clie

  • 详解Springboot整合Dubbo之代码集成和发布

    本文介绍了Springboot整合Dubbo之代码集成和发布,分享给大家,具体如下: 1. boot-dubbo-api相关 打开boot-dubbo-api项目,正在src/main/java下创建一个包,并创建你需要dubbo暴露的接口TestService.java,并创建一个实体类用于测试User.java.如下图所示: 创建文件和包结构 User.java package com.boot.domain; import lombok.Data; import java.io.Seria

  • SpringBoot 整合 dubbo xml实现代码示例

    昨天发布了注解方式,有人给我发了邮件希望能出一版本xml格式的,本来12点前能搞定的但是电脑稍微出了问题,导致idea 疯狂奔溃,搞了很久废话不多说了,有错误之处望大家指出发我邮箱. 用dubbo肯定是多模块化了 所以我们先创建一个聚合项目 这是项目结构 Dubbo_demo 的pom 这个主要用来聚合业务模块用不做任何业务处理 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="

  • Spring boot 集成Dubbox的方法示例

    前言 因为工作原因,需要在项目中集成dubbo,所以去查询dubbo相关文档,发现dubbo目前已经不更新了,所以把目光投向了dubbox,dubbox是当当网基于dubbo二次开发的一个项目,dubbox,因为公司项目中一个是基于spring mvc 3.0的,一个是基于spring boot的,而spring boot相对来说文档少一点,所以此文记录下spring boot下如何继承dubbox 一.安装zookeeper 1.zookeeper简介 ZooKeeper是一个分布式的,开放源

  • 使用dubbo+zookeeper+spring boot构建服务的方法详解

    前言 互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的.现在核心业务抽取出来,作为独立的服务,使前端应用能更快速和稳定的响应. Dubbo是什么 Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合).从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服

  • Dubbo无法访问远程Zookeeper已注册服务的问题解决方案

    背景 使用Dubbo的时候发现当Zookeeper.Dubbo-admin.生产者和消费者都在内网中的时候,生产者的生产和消费是没有问题的,但是当它Zookeeper.生产者放到远程服务器上,然后消费者在访问消费就出现了无法找到找到服务的问题. 内网环境使用情况 上述的图是在同一个内网中,使用的代码如下: 1.生产者配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http:/

随机推荐