@EnableEurekaClient
어노테이션의 등록만으로 서비스를 Eureka 서버에 자동 등록할 수 있다. yml이나 properites 파일에 Eureka 서버의 주소를 명시해주면 된다server-port=0
즉 랜덤 포트 할당을 통해 포트 번호를 동적으로 할당 받을 수도 있다- SpringBoot 3.2.2
- Java 17
- Spring cloud 2023.0.0
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
@SpringBootApplication
@EnableEurekaServer
public class DiscoveryServiceApplication {
public static void main(String[] args) {
SpringApplication.run(DiscoveryServiceApplication.class, args);
}
}
vscode를 기준으로 작성되었습니다
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
@SpringBootApplication
@EnableDiscoveryClient
public class UserServiceApplication {
public static void main(String[] args) {
SpringApplication.run(UserServiceApplication.class, args);
}
}
{
"type": "java",
"name": "Spring Boot-UserServiceApplication<user-service>",
"request": "launch",
"cwd": "${workspaceFolder}",
"mainClass": "com.example.userservice.UserServiceApplication",
"projectName": "user-service",
"args": "--server.port=9001",
"envFile": "${workspaceFolder}/.env",
"console": "internalConsole"
},
{
"type": "java",
"name": "Spring Boot-UserServiceApplication2<user-service>", // 새로운 인스턴스
"request": "launch",
"cwd": "${workspaceFolder}",
"mainClass": "com.example.userservice.UserServiceApplication",
"projectName": "user-service",
"args": "--server.port=9002", // 원하는 포트 번호 설정
"envFile": "${workspaceFolder}/.env",
"console": "internalConsole"
}
./mvnw spring-boot:run -Dspring-boot.run.jvmArguments='-Dserver.port=9003'
./mvnw clean # remove target dir
./mvnw compile package # generate jar file
java -jar -Dserver.port=9004 ./target/user-service-0.0.1-SNAPSHOT.jar
이전의 9001~9004 포트를 사용하는 인스턴스들을 먼저 종료하였다
application.properties
server.port=0 # 랜덤 포트의 사용
eureka.instance.instance-id=${spring.cloud.client.hostname}:${spring.application.instance_id:${random.value}}
./mvnw spring-boot:run
./mvnw spring-boot:run
...