docker-compose部署eureka服务端、客户端的案例代码

 更新时间:2023年03月21日 08:52:24   作者:MAO_JIN_DAO  
这篇文章主要介绍了docker-compose部署eureka服务端、客户端,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

使用场景

使用docker-compose方式部署eureka的服务端和客户端,并使用容器ip进行通信。
原理是使用docker-compose默认在一个网络下,并提供dns下的通过service通信的功能。
该方法也可以用于其它形式的容器内部服务调用的功能实现。

服务端主要代码

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>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.7.9</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.liuyang.sc</groupId>
	<artifactId>eurekaserver</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>eurekaserver</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>1.8</java.version>
		<spring-cloud.version>2021.0.6</spring-cloud.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<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-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>${spring-cloud.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>

			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-resources-plugin</artifactId>
				<version>2.4.3</version>
			</plugin>
		</plugins>
	</build>

</project>


application.yml

spring:
  application:
    name: eureka-server

server:
  port: 29108 #服务注册中心端口号
eureka:
  instance:
    hostname: 127.0.0.1 #服务注册中心IP地址
  client:
    registerWithEureka: false #是否向服务注册中心注册自己
    fetchRegistry: false #是否检索服务
    serviceUrl: #服务注册中心的配置内容,指定服务注册中心的位置
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

main.java

package com.liuyang.sc.eurekaserver;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableEurekaServer
@SpringBootApplication
public class EurekaserverApplication {

	public static void main(String[] args) {
		SpringApplication.run(EurekaserverApplication.class, args);
	}

}

客户端主要代码

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>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.7.9</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.sc</groupId>
	<artifactId>gateway-project</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>gateway-project</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>1.8</java.version>
		<spring-cloud.version>2021.0.6</spring-cloud.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-webflux</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-gateway</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>io.projectreactor</groupId>
			<artifactId>reactor-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>${spring-cloud.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-resources-plugin</artifactId>
				<version>2.4.3</version>
			</plugin>
		</plugins>
	</build>

</project>

application.yml

spring:
  application:
    name: gateway
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true

server:
  port: 29107

eureka:
  client:
    service-url:
        defaultZone: http://eurekaserver:29108/eureka/  #此处的eurakaserver为docker-compose.yml中eureka-server工程的容器定义
  instance:
    prefer-ip-address: true	# 使用IP注册,避免容器id:port调用报错

main.java

package com.sc.gatewayproject;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@EnableEurekaClient
@EnableDiscoveryClient
@SpringBootApplication
public class GatewayProjectApplication {

	public static void main(String[] args) {
		SpringApplication.run(GatewayProjectApplication.class, args);
	}

}

粗陋的DockerFile

eurekaserver

FROM java:openjdk-8u111-jdk

COPY eurekaserver-0.0.1-SNAPSHOT.jar app.jar

EXPOSE 29108

ENTRYPOINT ["java","-Xmx128m","-jar","app.jar"]

gateway

FROM java:openjdk-8u111-jdk

COPY gateway-project-0.0.1-SNAPSHOT.jar app.jar

EXPOSE 29107

ENTRYPOINT ["java","-Xmx128m","-jar","app.jar"]

docker-compose.yml

version: '2'
services:
  eurekaserver:			# 注意此处的名称需要添加到eureka客户端的defaultZone中,相当于docker内的主机名
    #container_name: eureka_server
    image: maojindaobike/eurekaserver:230315
    ports:
      - "29108:29108"
  gateway:
    #container_name: gateway
    image: maojindaobike/gateway:230316_v5
    ports:
      - "29107:29107"
    depends_on:
      - eurekaserver

启动

docker-compose up -d

扩容

扩容时,需要显式端口映射,避免端口冲突
docker-compose.yml

version: '3'
services:
  eurekaserver:
    #container_name: eureka_server
    image: maojindaobike/eurekaserver:230315
    ports:
      - "29108:29108"
  gateway:
    #container_name: gateway
    image: maojindaobike/gateway:230316_v5
    ports:
      - "29107"
    depends_on:
      - eurekaserver
docker-compose up -d
docker-compose up -d --scale gateway=3

docker-compse ps

root@dockerserver:~/springcloud-dockerpose# docker-compose ps
/snap/docker/2746/lib/python3.6/site-packages/paramiko/transport.py:32: CryptographyDeprecationWarning: Python 3.6 is no longer supported by the Python core team. Therefore, support for it is deprecated in cryptography. The next release of cryptography (40.0) will be the last to support Python 3.6.
  from cryptography.hazmat.backends import default_backend
                Name                             Command             State                      Ports
-------------------------------------------------------------------------------------------------------------------------
springcloud-dockerpose_eurekaserver_1   java -Xmx128m -jar app.jar   Up      0.0.0.0:29108->29108/tcp,:::29108->29108/tcp
springcloud-dockerpose_gateway_1        java -Xmx128m -jar app.jar   Up      0.0.0.0:49154->29107/tcp,:::49154->29107/tcp
springcloud-dockerpose_gateway_2        java -Xmx128m -jar app.jar   Up      0.0.0.0:49156->29107/tcp,:::49156->29107/tcp
springcloud-dockerpose_gateway_3        java -Xmx128m -jar app.jar   Up      0.0.0.0:49155->29107/tcp,:::49155->29107/tcp

到此这篇关于docker-compose部署eureka服务端、客户端的文章就介绍到这了,更多相关docker compose部署eureka内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • centos6使用docker部署kafka项目的方法分析

    centos6使用docker部署kafka项目的方法分析

    这篇文章主要介绍了centos6使用docker部署kafka项目的方法,结合实例形式分析了centos6环境下使用docker部署kafka项目的相关命令与使用技巧,需要的朋友可以参考下
    2020-02-02
  • Docker部署Microsoft Sql Server详细步骤

    Docker部署Microsoft Sql Server详细步骤

    大家好,本篇文章主要讲的是Docker部署Microsoft Sql Server详细步骤,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • docker安装gitea教程(本地部署gitea仓库)

    docker安装gitea教程(本地部署gitea仓库)

    这篇文章主要介绍了docker安装gitea教程(本地部署gitea仓库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • 通过Docker安装启动DB2在Spring Boot整合DB2的方法

    通过Docker安装启动DB2在Spring Boot整合DB2的方法

    DB2是IBM的一款优秀的关系型数据库,这篇文章主要介绍了通过Docker启动DB2,并在Spring Boot整合DB2,需要的朋友可以参考下
    2023-01-01
  • 教你使用Docker Compose一键部署前后端分离项目

    教你使用Docker Compose一键部署前后端分离项目

    Compose是一个定义和管理多容器的工具,使用Python语言编写,下面这篇文章主要给大家介绍了关于如何使用Docker Compose一键部署前后端分离项目的相关资料,需要的朋友可以参考下
    2023-01-01
  • docker5 全功能harbor仓库搭建过程

    docker5 全功能harbor仓库搭建过程

    Harbor是构建企业级私有docker镜像的仓库的开源解决方案,本文给大家分享docker5 全功能harbor仓库搭建过程,感兴趣的朋友一起看看吧
    2021-06-06
  • Docker使用镜像仓库的方法

    Docker使用镜像仓库的方法

    这篇文章介绍了Docker使用镜像仓库的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-01-01
  • Docker构建简单的个人主页网站实战教程

    Docker构建简单的个人主页网站实战教程

    Docker是一种开源容器化技术,可以打包、发布和运行应用程序,本教程介绍了如何使用Docker构建一个简单的个人主页网站,通过编写Dockerfile来自定义镜像,并展示了如何通过传入环境变量来动态更改网页内容,项目使用的技术包括Docker、Alpine、Nginx、HTML、CSS和JavaScript
    2024-10-10
  • Docker中安装宝塔的详细教程

    Docker中安装宝塔的详细教程

    这篇文章主要介绍了Docker中安装宝塔的详细教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • Linux下定时自动备份Docker中所有SqlServer数据库的脚本

    Linux下定时自动备份Docker中所有SqlServer数据库的脚本

    这篇文章主要介绍了Linux下定时自动备份Docker中所有SqlServer数据库 ,编写shell文件给出一个备份的范例,在Linux添加定时任务,通过下列命令来检测并安装这个服务,需要的朋友可以参考下
    2022-09-09

最新评论