spring eureka集群+spring boot 微服务,容器化部署示例

一、docker安装
这里先采用在线安装,利用docker hup下载基础镜像
1.环境版本要求

内核版本3.10及其以上
操作系统位数为64位
CPU架构为x86_64或amd64(目前也有别的支持)
内核开启并支持cgroup和命名空间

2.命令检查内核版本,本地环境为centos7

uname -r
1
3.更新yum

sudo yum update
1
4.添加Docker的yum源

sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
 
5.安装Docker软件包

sudo yum install docker-engine
1
6.设置Docker服务开机自启

sudo systemctl enable docker.service
1
7.启动Docker服务

sudo systemctl start docker
1
8.验证Docker是否安装成功

docker -v
1
9.查看镜像

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED   
1
2
10.删除docker

 sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine
 
二、项目配置
springcloud版本:

<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
spring-boot-starter-parent:2.0.3
 
1.eureka
1)关键pom

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
 
2)启动类

@SpringBootApplication
@EnableEurekaServer
public class CommonserviceEurekaApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {

        SpringApplication.run(CommonserviceEurekaApplication.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(CommonserviceEurekaApplication.class);
    }
}
 
3)配置文件关键参数

eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
1
2.config
1)关键pom

     <!--注册发现-->
     <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
          <!--配置中心-->
          <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
 
2)启动类

@SpringBootApplication
@EnableConfigServer
@EnableDiscoveryClient
@EnableEurekaClient
public class ConfigServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }
}
 
3)配置文件关键参数

#配置注册服务中心
eureka.client.serviceUrl.defaultZone= http://${eureka-container-name}:${config-service-port}/eureka/
#设置为本地启动的方式,而不是通过git
spring.profiles.active=native
#配置本地配置路径
spring.cloud.config.server.native.search-locations=${local-config-path}

注意:上面的${eureka-container-name}为eureka容器的别名或者id

三、生成镜像
1.项目eureka\config分别打包上传服务器
2.Dockerfile

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD ROOT.jar app.jar
#RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
EXPOSE ${PORT}


注意上面的${PORT} 应替换成eureka\config设置的不同容器声明端口
3.build 生成镜像

docker build -t orginaztion/service-image-name:tag
1
其中-t 标识镜像tag ,格式为:所属库/服务镜像名:版本

四、运行镜像
其中localhost−∗−port替换为宿主机开放端口,{localhost-*-port}替换为宿主机开放端口,localhost−∗−port替换为宿主机开放端口,{container-*-port}替换为容器服务端口
1.启动eureka

docker run --name eureka-service -d -it -p ${localhost-eureka-port}:${container-eureka-port} orginaztion/service-image-name:tag
1
注意:
并且name对应config中的注册机参数的${eureka-container-name}
2.启动config

docker run --name config-server  --link eureka-server:eureka-server-name-alias -d -it -p ${localhost-config-port}:${container-config-port} -v ${local-config-path}:${contain-config-path} orginaztion/service-image-name:tag
1
注意:config依赖eureka,用–link链接 ,-v指定本地配置路径链接容器相应路径
3.访问config配置信息

http://${localhost}:${localhost-config-port}/${prefix-config-name}/test|dev|prod
 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/386701.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序员如何技术划水,手把手教你写Android项目文档,绝对干货

安卓开发大军浩浩荡荡&#xff0c;经过近十年的发展&#xff0c;Android技术优化日异月新&#xff0c;如今Android 11.0 已经发布&#xff0c;Android系统性能也已经非常流畅&#xff0c;可以在体验上完全媲美iOS。 但是&#xff0c;到了各大厂商手里&#xff0c;改源码、自定…

rabbitmq文档

https://blog.csdn.net/hellozpc/article/details/81436980转载于:https://www.cnblogs.com/nankeyimengningchenlun/p/10968594.html

spring cloud各个微服务打包到docker容器内

日常你所启动的微服务比如这样的 java -jar eureka-0.0.1-SNAPSHOT.jar --server.port41578 --spring.profiles.activelocal 然后想把它给整Docker里玩玩 首先要在打包好的Spring Boot同级目录下&#xff0c;建立一个Dockerfile 然后在这个文件下写上以下内容,大致的意思上从…

程序员如何自我学习和成长?深度好文

前言 工欲善其事必先利其器!在现代IT中&#xff0c;每个Android程序员都需要最好的工具来提高他们的技能和效率。在Android应用程序开发这个残酷的竞争行业中&#xff0c;只有优秀的程序员才能生存下去。你需要向客户展示你拥有的最佳技术和能力。 不仅仅是展示你的设备以吸引…

.net core 杂记:用Autofac替换内置容器

官方建议使用内置容器&#xff0c;但有些功能并不支持&#xff0c;如下&#xff1a;属性注入基于名称的注入子容器自定义生存期管理Func<T> 支持所以可以使用其他第三方IOC容器&#xff0c;如Autofac&#xff0c;下面为学习使用记录 一、首先准备了一个接口和其实现类 pu…

linux shell 获取本机ip 写入文件

本机IP获取 /sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk {print $2}|tr -d "addr:" k8s 获取容器所造node节点的ip container_netifconfig eth0 |grep "inet" |grep -v "inet6"| awk {print $2}|cut -d . -f 3node_ipet…

程序员必看!Android面试10大知识点总结宝典助你通关!年薪50W

起由 搞了7年多Android了&#xff0c;前阵子面试了一家不大不小的公司。公司不大&#xff0c;面试官架子还不小&#xff0c;一副目中无人高高在上的样子&#xff0c;搞得好像我一万个想进他们公司、我进不了他们公司我全家都得喝西北风一样。搞得我是真的郁闷&#xff1a;现在…

Odoo免费开源企业信息化平台助力企业成功

企业信息化变革之路 信息孤岛的真实由来 打开百度App&#xff0c;看更多图片左边为当下企业现状&#xff0c;右边为Odoo的整体 企业信息孤岛的严重性&#xff0c;来自于企业的自身高速发展&#xff0c;企业以销售为生命主题围绕着客户会搭建一系列相关的信息化系统&#xff0c;…

group count聚集函数无法直接统计出分组后的总记录数

数据库Group By类型语句统计记录条数 最近做一个分页查询查询的数据采用了group by来完成数据的查询处理&#xff0c;需要统计分组后的数据总数发现count(*) 聚集函数无法直接统计出分组后的总记录数。 查询SQL&#xff1a; 复制代码 SELECT count(*) FROM employeeexam, ex…

系统盘点Android开发者必须掌握的知识点,含小米、腾讯、阿里

什么是Flutter? Flutter是Google推出并开源的移动应用程序&#xff08;App&#xff09;开发框架&#xff0c;主打跨平台、高保真、高性能。其采用Dart&#xff08;官网、中文网&#xff09;语言作为开发语言&#xff0c;开发者可以通过Dart语言开发Flutter App&#xff0c;一…

java 堆和栈的区别

1&#xff0c;在栈中存放的是基本类型变量和对象的引用变量&#xff0c;当一段代码定义一个变量时&#xff0c;java 就在栈内为这个变量分配内存空间&#xff0c;当超过变量的作用域时&#xff0c;java会自动回收分配的内存。局部变量在栈内存 2&#xff0c;堆内存放的是new创建…

Web For Pentester -- File Upload

文件上传漏洞是指用户上传了一个可执行的脚本文件&#xff0c;并通过此脚本文件获得了执行服务器端命令的能力。 文件上传导致的常见安全问题&#xff1a; 上传文件是Web脚本语言&#xff0c;服务器的Web容器解释并执行了用户上传的脚本&#xff0c;导致代码执行&#xff1b; 上…

组件化与插件化的差别在哪里?附面试题答案

前言 本人水平有限&#xff0c;此文针对于自认为技术实力对标阿里P7&#xff0c;百度T5或者以下的读者&#xff0c;如果是大佬不小心点进来了&#xff0c;可以自行点x略过。文内并不会出现每一家公司的面试过程细节&#xff0c;主要目的在于帮助大家怎么在像我一样菜的情况下在…

json转成类对象转成xml全过程

类对象 XStreamAlias("ROOT") public class ProjectBase implements BaseConverterBean {private ProjectInfo PROJECTINFO;public ProjectInfo getPROJECTINFO() {return PROJECTINFO;}public void setPROJECTINFO(ProjectInfo pROJECTINFO) {PROJECTINFO pROJECT…

细数Android开发者的艰辛历程,全网最新

前言 这篇文章主要是分享今年面试心得&#xff0c;现已就职于某大厂有三个月了&#xff0c;近期有很多公司均已启动秋招&#xff0c;也祝大家面试顺利&#xff0c;获得理想的offer&#xff01; 之前找工作的那段时间感想颇多&#xff0c;总结一点面试经验和人生思考分享给大家…

Mac安装nginx配置过程

mac电脑系统重装了&#xff0c;记录一下安装nginx的过程&#xff1a; 1、打开终端 2、安装Command Line tools xcode-select --install 3、安装brew命令 1 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 4、安装…

2.用Python套用Excel模板,一键完成原亮样式

from xlutils.copy import copy import xlrd import xlwttem_excelxlrd.open_workbook(日统计.xls,formatting_infoTrue)tem_sheettem_excel.sheet_by_index(0)new_excelcopy(tem_excel) new_sheetnew_excel.get_sheet(0) new_sheet.write(2,1,12) new_sheet.write(3,1,18) new…

面试中Handler这些必备知识点你都知道吗?面试真题解析

前言 前几天去参加了一场面试。面试的题目大多很基础&#xff0c;有一道关于埋点的问题&#xff0c;面试官问我如果不用第三方SDK进行埋点&#xff0c;自己埋点的话&#xff0c;如何减少埋点对业务代码的入侵。 当时没想太多&#xff0c;就说创建一个 BaseView 类&#xff0c…

kubernetes对象之deployment

系列目录 简述 Deployment为Pod和ReplicaSet提供了一个声明式定义(declarative)方法&#xff0c;用来替代以前的ReplicationController来方便的管理应用。典型的应用场景包括&#xff1a; 定义Deployment来创建Pod和ReplicaSet滚动升级和回滚应用扩容和缩容暂停和继续Deploymen…