首页 > 编程知识 正文

idea打包war到docker,eureka集群同步策略

时间:2023-05-04 14:45:13 阅读:128773 作者:3795

IDEA通过使用Docker插件构建Eureka群集实现的功能:

1、利用Linux服务器上的Docker将本地Eureka项目打包到镜像中,自动上传到Linux服务器,同时创建Docker容器。 (本机不需要安装Docker环境) )。

2、构建Eureka集群(在三台Linux服务器上部署Eureka,相互注册) )。

3、在Eureka上使用Spring Security,访问Eureka页面需要输入账号和密码,提高Eureka的安全性

一、准备工作1、做好Eureka项目,正常建设Eureka项目即可。 在三台服务器上配置项目,其中一个application.yml配置如下

server : port :8761 spring : application : name : a服务- eureka security : # spring security hpptbasic帐户和密码user : name : admin password 3360 admin eureka : instance 3360 hostname 3360 peer1# 引入此服务的主机名为health-check-URL :http://$ { eureka.instance.hostname } : $ { server.port }/actuator/healtor 对于单节点部署,为false;对于群集部署,是否在trueregister-with-eureka 3360 true # eureka中注册服务;对于单节点部署,为false。 集群部署是指trueservice-URL : default zone :3358 admin @ peer 1: $ { server.port }/eureka/3358 admin 3: Eureka/#注册其他eureka服务器health check : enabled 3360 true #打开运行状况检查并默认打开注意事项:

1、因为构建了Eureka集群,所以我采用的三台服务器需要将fetch-registry和register-with-eureka都设置为true,打开服务间的相互注册功能

2、peer1、peer2和peer3是三台服务器的名称,必须添加与/etc/hosts对应的ip映射。 示例:

192.168.79.128由于采用peer 1192.168.79.129 peer 2192.168.79.130 peer 3http://www.Sina.com/docker部署项目,因此

3、部署在其他两台服务器上的项目,在配置文件的service-url.defaultZone中修改peer1和peer2即可,修改eureka.instance.hostname即可,其他的则

4、在项目中使用Spring Security,提高Eureka的安全性,避免和方便所有人直接访问Eureka页面,使用httpbasic认证,方法如下:

加入安全依赖

ependencygroupidorg.spring framework.boot/groupidartifactidspring-boot-starter-security/artifact id/dependency

@ configurationpublicclassmysecurityconfigextendswebsecurityconfigureradapter { @ overrideprotectedvoidconfigure (http安全保护sable ).httpBasic ).and ).authorizeRequests ).anyRequest ).authenticical }在配置式中设置访问Eureka的帐户和密码

spring : security : user : name : admin password : admin在service-URL.default zone中添加用于访问Eureka的帐户和密码,然后单击

5、打开Eureka

的健康检查,healthcheck.enabled设置为true,并设置健康检查的url health-check-url,Eureka集群中必须开启,Eureka就是通过健康检查判断Eureka节点是否正常工作,需要引入以下依赖

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId></dependency> 2、开启Linux服务器Docker远程连接

1、在Linux服务器上安装上Docker,网上教程很多,请自行参考

2、开启Docker远程API

①编辑Docker配置文件,执行vi /usr/lib/systemd/system/docker.service命令,找到以ExecStart开头的行,注释掉,然后在下面加上ExecStart=/usr/hsjdjz/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

②重新加载配置文件,执行systemctl daemon-reload命令

③重启docker,执行命令systemctl restart docker命令

④验证Docker远程连接是否成功,执行netstat -anp|grep 2375命令,如果能看到端口信息,并且执行curl 127.0.0.1:2375/info能显示信息,说明Docker远程连接配置成功

3、IDEA安装Docker插件,并配置Docker远程连接

1、安装Docker插件,File->Settings->Plugins打开插件面板,搜索Docker(新版IDEA好像默认会安装Docker插件)

如果能在installed中看到Docker,表明Docker插件安装成功,否则需要切换到Marketplace找到Docker插件进行安装

2、配置Docker连接

①在Idea底下面板中显示services tab

②创建Docker连接

由于需要在三台服务器上部署Eureka,所以需要创建三个服务器的Docker连接

4、在Pom.xml中加入docker-maven-plugin插件

完整的pom.xml如下

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.shuguangtj</groupId> <artifactId>spring-cloud-study</artifactId> <version>1.0-SNAPSHOT</version> </parent> <groupId>com.shuguangtj</groupId> <artifactId>aservice-eureka</artifactId> <version>0.0.1-SNAPSHOT</version> <name>aservice-eureka</name> <description>eureka注册中心服务</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <configuration> <imageName>${project.name}:v1</imageName> <dockerDirectory>${project.basedir}</dockerDirectory> <skipDockerBuild>false</skipDockerBuild> <resources> <resource> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> </plugins> </build></project> 5、编写Dockefile FROM java:8# 指定工作路径,到docker exec -it 进入到容器内部,会进入到该路径下,如果路径不存在会自动创建WORKDIR /opt/aservice/eureka# 将jar包加入到镜像,./ 是上面指定的WORKDIR路径ADD target/aservice-eureka-0.0.1-SNAPSHOT.jar ./# 暴露端口EXPOSE 8761ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=peer2", "aservice-eureka-0.0.1-> SNAPSHOT.jar"]

注意:Dockerfile文件跟targer目录在同一路径下,项目结构如下:

二、使用Docker插件生成镜像并自动上传到Linux服务器 1、配置Docker

1、进入Docker配置页

2、Docker配置

Run options配置详情

Before launch配置详情

2、使用Docker创建镜像和容器

1、构建镜像,以及生成容器

2、查看docker镜像的构建过程及构建结果

3、查看docker容器的其他信息

4、操作Linux服务器上的镜像和容器,可以进行删除镜像、启动容器、停止容器、删除容器等操作

搭建过程中遇到的问题:

1、Failed to deploy ‘vhr-front Dockerfile: Dockerfile’: Not connected to docker,参考:https://www.cnblogs.com/modestlin/p/14993176.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。