4つのマイクロサービスにDiscoveryFirst Bootstrapの方法を実装しようとしています。1つ目はgitから構成を取得する構成サーバーで、2つ目はEurekaサーバーです。dockerを実行している場合-構成サーバーがeurekaに登録できないように構成します。次の情報があります。
リクエスト実行エラー。 endpoint = DefaultEndpoint {serviceUrl = ' http:// localhost:8761 / }接続が拒否されました
私の設定サーバー
@EnableConfigServer
@EnableEurekaClient
@SpringBootApplication
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
application.yml
server:
port: 8888
spring:
cloud:
config:
server:
encrypt.enabled: false
git:
uri: https://github.com/Artuwok/artbook-config-repo/
searchPaths: userservice
username: Artuwok
password: Civilization1986
timeout: 10
force-pull: true
bootstrap.yml
spring:
application:
name: configserver
cloud:
config:
fail-fast: true
discovery.enabled: true
eureka:
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl.defaultZone: http://localhost:8761/eureka/
ユーレカクラス
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
Eureka bootstrap.yml
server:
port: 8761
eureka:
client:
registerWithEureka: false
fetchRegistry: false
完全な構成のdocker-compose.yml
version: '3'
services:
configserver:
image: configserver:1.0
ports:
- "8888:8888"
depends_on:
- eurekaserver
restart: on-failure
eurekaserver:
image: eurekasvr:1.0
ports:
- "8761:8761"
users_db:
image: mysql:5.7
container_name: users_db
restart: always
environment:
- MYSQL_DATABASE=artbook
- MYSQL_ROOT_PASSWORD=password
- MYSQL_USER=user
- MYSQL_PASSWORD=password
volumes:
- users_db:/var/lib/mysql
ports:
- "3306:3306"
depends_on:
- eurekaserver
user-service:
image: userservice:1.0
ports:
- "8080:8080"
depends_on:
- eurekaserver
- configserver
restart: on-failure
volumes:
users_db:
結局、私はサービスを開始することができました。サービスを見つけているURLに細心の注意を払ってください。 Dockerイメージを使用している場合は、URIおよびURLのローカルホストではなくサービス名を使用する必要があります。私の作業構成
spring:
application:
name: configserver
cloud:
config:
fail-fast: false
discovery.enabled: false
uri: http://configserver:8888
eureka:
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl.defaultZone: http://eurekaserver:8761/eureka
構成サーバーとEurekaサーバーはどちらもDockerで実行します。したがって、localhost
ではなく、Dockerでの名前を使用して相互に接続できます。
したがって、EurekaサービスのURLはhttp://eurekaserver:8761/
になります。
そして、以下のコードをdocker-compose.yml
のconfigserver
構成に追加する必要があります。
links:
- eurekaserver