docker-compose部署eureka服務(wù)端、客戶(hù)端的案例代碼
使用場(chǎng)景
使用docker-compose方式部署eureka的服務(wù)端和客戶(hù)端,并使用容器ip進(jìn)行通信。
原理是使用docker-compose默認(rèn)在一個(gè)網(wǎng)絡(luò)下,并提供dns下的通過(guò)service通信的功能。
該方法也可以用于其它形式的容器內(nèi)部服務(wù)調(diào)用的功能實(shí)現(xiàn)。
服務(wù)端主要代碼
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 #服務(wù)注冊(cè)中心端口號(hào)
eureka:
instance:
hostname: 127.0.0.1 #服務(wù)注冊(cè)中心IP地址
client:
registerWithEureka: false #是否向服務(wù)注冊(cè)中心注冊(cè)自己
fetchRegistry: false #是否檢索服務(wù)
serviceUrl: #服務(wù)注冊(cè)中心的配置內(nèi)容,指定服務(wù)注冊(cè)中心的位置
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);
}
}客戶(hù)端主要代碼
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注冊(cè),避免容器id:port調(diào)用報(bào)錯(cuò)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: # 注意此處的名稱(chēng)需要添加到eureka客戶(hù)端的defaultZone中,相當(dāng)于docker內(nèi)的主機(jī)名
#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啟動(dòng)
docker-compose up -d

擴(kuò)容
擴(kuò)容時(shí),需要顯式端口映射,避免端口沖突
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:
- eurekaserverdocker-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到此這篇關(guān)于docker-compose部署eureka服務(wù)端、客戶(hù)端的文章就介紹到這了,更多相關(guān)docker compose部署eureka內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
總結(jié)Docker不適合部署數(shù)據(jù)庫(kù)的7大原因
在本篇文章里小編給大家整理一篇關(guān)于Docker不適合部署數(shù)據(jù)庫(kù)的7大原因,有興趣的朋友們可以參考學(xué)習(xí)下。2021-01-01
docker 如何搭建私有倉(cāng)庫(kù)(ubuntu 14.04,Docker版本1.6.4)詳細(xì)介紹
這篇文章主要介紹了docker 如何搭建私有倉(cāng)庫(kù)(ubuntu 14.04,Docker版本1.6.4)詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2017-01-01
Docker部署SQL Server 2019 Always On集群的實(shí)現(xiàn)
這篇文章主要介紹了Docker部署SQL Server 2019 Always On集群的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
docker使用Dockerfile構(gòu)建鏡像的方法
這篇文章主要介紹了docker使用Dockerfile構(gòu)建鏡像的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
Docker一行命令完成FTP服務(wù)搭建的實(shí)現(xiàn)
這篇文章主要介紹了Docker一行命令完成FTP服務(wù)搭建的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
Jenkins簡(jiǎn)介與Docker部署Jenkins的方法
今天小編就為大家分享一篇關(guān)于Jenkins簡(jiǎn)介與Docker部署Jenkins的方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10
Docker提示permission?denied錯(cuò)誤的解決方案
這篇文章主要給大家介紹了關(guān)于Docker提示permission?denied錯(cuò)誤的解決方案,出現(xiàn)這個(gè)問(wèn)題是因?yàn)樗拗鳈C(jī)的當(dāng)前運(yùn)行用戶(hù)和docker容器里面的運(yùn)行用戶(hù)不一致導(dǎo)致訪(fǎng)問(wèn)權(quán)限問(wèn)題,需要的朋友可以參考下2023-08-08
docker?build運(yùn)行報(bào)錯(cuò)source:?not?found解決分析
這篇文章主要為大家介紹了docker?build運(yùn)行報(bào)錯(cuò)source:?not?found解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09

