使用docker-compose方式部署eureka的服务端和客户端,并使用容器ip进行通信。
原理是使用docker-compose默认在一个网络下,并提供dns下的通过service通信的功能。
该方法也可以用于其它形式的容器内部服务调用的功能实现。
4.0.0 org.springframework.boot spring-boot-starter-parent 2.7.9 com.liuyang.sc eurekaserver 0.0.1-SNAPSHOT eurekaserver Demo project for Spring Boot 1.8 2021.0.6 org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-starter-netflix-eureka-server org.springframework.boot spring-boot-starter-test test org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import org.springframework.boot spring-boot-maven-plugin org.apache.maven.plugins maven-resources-plugin 2.4.3
spring:application:name: eureka-serverserver:port: 29108 #服务注册中心端口号
eureka:instance:hostname: 127.0.0.1 #服务注册中心IP地址client:registerWithEureka: false #是否向服务注册中心注册自己fetchRegistry: false #是否检索服务serviceUrl: #服务注册中心的配置内容,指定服务注册中心的位置defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
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);}}
4.0.0 org.springframework.boot spring-boot-starter-parent 2.7.9 com.sc gateway-project 0.0.1-SNAPSHOT gateway-project Demo project for Spring Boot 1.8 2021.0.6 org.springframework.boot spring-boot-starter-webflux org.springframework.cloud spring-cloud-starter-gateway org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.boot spring-boot-starter-test test io.projectreactor reactor-test test org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import org.springframework.boot spring-boot-maven-plugin org.apache.maven.plugins maven-resources-plugin 2.4.3
spring:application:name: gatewaycloud:gateway:discovery:locator:enabled: trueserver:port: 29107eureka:client:service-url:defaultZone: http://eurekaserver:29108/eureka/ #此处的eurakaserver为docker-compose.yml中eureka-server工程的容器定义instance:prefer-ip-address: true # 使用IP注册,避免容器id:port调用报错
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);}}
eurekaserver
FROM java:openjdk-8u111-jdkCOPY eurekaserver-0.0.1-SNAPSHOT.jar app.jarEXPOSE 29108ENTRYPOINT ["java","-Xmx128m","-jar","app.jar"]
gateway
FROM java:openjdk-8u111-jdkCOPY gateway-project-0.0.1-SNAPSHOT.jar app.jarEXPOSE 29107ENTRYPOINT ["java","-Xmx128m","-jar","app.jar"]
version: '2'
services:eurekaserver: # 注意此处的名称需要添加到eureka客户端的defaultZone中,相当于docker内的主机名#container_name: eureka_serverimage: maojindaobike/eurekaserver:230315ports:- "29108:29108"gateway:#container_name: gatewayimage: maojindaobike/gateway:230316_v5ports:- "29107:29107"depends_on:- eurekaserver
docker-compose up -d
扩容时,需要显式端口映射,避免端口冲突
docker-compose.yml
version: '3'
services:eurekaserver:#container_name: eureka_serverimage: maojindaobike/eurekaserver:230315ports:- "29108:29108"gateway:#container_name: gatewayimage: maojindaobike/gateway:230316_v5ports:- "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_backendName 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
上一篇:iOS APP上架问题总结