diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 09774e92..926871a5 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -26,8 +26,6 @@ jobs: steps: - name: Checkout uses: actions/checkout@v3 - with: - ref: prod #Setting JDK - name: Set up JDK 17 @@ -47,13 +45,13 @@ jobs: chmod +x ./weather-service/gradlew #Setting yml - - name: Settings for config service - run: | - cd ./config-service/src/main/resources - touch ./bootstrap.yml - echo "${{ secrets.CONFIG_APPLICATION_YML }}" > ./bootstrap.yml - cd - +# - name: Settings for config service +# run: | +# cd ./config-service/src/main/resources +# touch ./bootstrap.yml +# echo "${{ secrets.CONFIG_APPLICATION_YML }}" > ./bootstrap.yml +# cat bootstrap.yml + # DockerHub Login - name: Docker Hub Login uses: docker/login-action@v2 @@ -87,7 +85,7 @@ jobs: run: | cd apiGateway-service ./gradlew clean build -x test - docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/waither-gateway . + docker build --no-cache -t ${{ secrets.DOCKERHUB_USERNAME }}/waither-gateway . docker push ${{ secrets.DOCKERHUB_USERNAME }}/waither-gateway cd .. @@ -104,8 +102,9 @@ jobs: - name: Build with Gradle - noti-service run: | cd noti-service + cat src/main/resources/bootstrap.yml ./gradlew clean build -x test - docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/waither-noti . + docker build --no-cache -t ${{ secrets.DOCKERHUB_USERNAME }}/waither-noti . docker push ${{ secrets.DOCKERHUB_USERNAME }}/waither-noti cd .. @@ -114,7 +113,7 @@ jobs: run: | cd user-service ./gradlew clean build -x test - docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/waither-user . + docker build --no-cache -t ${{ secrets.DOCKERHUB_USERNAME }}/waither-user . docker push ${{ secrets.DOCKERHUB_USERNAME }}/waither-user cd .. @@ -123,7 +122,7 @@ jobs: run: | cd weather-service ./gradlew clean build -x test - docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/waither-weather . + docker build --no-cache -t ${{ secrets.DOCKERHUB_USERNAME }}/waither-weather . docker push ${{ secrets.DOCKERHUB_USERNAME }}/waither-weather cd .. @@ -147,8 +146,17 @@ jobs: export CONFIG_PASSPHRASE=${{ secrets.CONFIG_PASSPHRASE }} export DOCKERHUB_USERNAME=${{ secrets.DOCKERHUB_USERNAME }} - bash /home/docker_init.sh - bash /home/common.sh - bash /home/deploy.sh + cd /home + + docker-compose pull + docker pull ${{ secrets.DOCKERHUB_USERNAME }}/waither-config + docker pull ${{ secrets.DOCKERHUB_USERNAME }}/waither-gateway + docker pull ${{ secrets.DOCKERHUB_USERNAME }}/waither-noti + docker pull ${{ secrets.DOCKERHUB_USERNAME }}/waither-user + docker pull ${{ secrets.DOCKERHUB_USERNAME }}/waither-weather + + bash ./docker_init.sh + bash ./common.sh + bash ./deploy.sh docker image prune -f diff --git a/apiGateway-service/src/main/resources/bootstrap.yml b/apiGateway-service/src/main/resources/bootstrap.yml index f0febf9d..356fa5db 100644 --- a/apiGateway-service/src/main/resources/bootstrap.yml +++ b/apiGateway-service/src/main/resources/bootstrap.yml @@ -11,7 +11,7 @@ spring: uri: http://localhost:8888 name: database-apiGateway, redis, jwt kafka: - bootstrap-servers: "localhost:9092" + bootstrap-servers: "http://localhost:9092" consumer: group-id: "GroupId" diff --git a/config-service/src/main/resources/bootstrap.yml b/config-service/src/main/resources/bootstrap.yml index f312c907..785bba95 100644 --- a/config-service/src/main/resources/bootstrap.yml +++ b/config-service/src/main/resources/bootstrap.yml @@ -3,9 +3,9 @@ server: spring: profiles: - active: dev + active: prod application: - name: config-service + name: config-services cloud: config: server: @@ -13,4 +13,58 @@ spring: uri: ${CONFIG_GIT_URI} ignore-local-ssh-settings: true passphrase: ${CONFIG_PASSPHRASE} - private-key: ${CONFIG_PRIVATE_KEY} + private-key: | + -----BEGIN RSA PRIVATE KEY----- + Proc-Type: 4,ENCRYPTED + DEK-Info: AES-128-CBC,58151ECC53694263F35EEA88FBFA6406 + + 2cstlc5/bYHUAJWg0PL7UbGksDp1okrJXqgBWcTqrH5qQm/iSk/LhYxF1JxGqPwt + fEWmuoGJgcJzaW80ivkBUbWUPdO5V9WHebynjFO5xUWJssGvmV4TEPGmLEKGpDSr + t1ae00AO/2YsyqTrCffDzu3S8R6A4IOSYE17Yx6P4z9xnnBJ4IG6d5Q6MVaQllMO + 7wx03NCMWLc41tQA8zWlOAC1KgIvxV7XcrbhWVQpwwQ5MD10XW6lk9UDH7Zo46Dx + na3+6mAmqZ/kIKxGF2J2TImfCWyehvo+Epw9s87snXu+XDlNMrsXLW+NJ0IQ76OS + lZPpMjJVOnB0BctF4VZuzKDYkN2/+V7BgJT/Ybc2PwhYqs9aSo083ByxcsRSY0Mh + uwW6Sxbkeo8gTzWrBvbf2XLVjhuG9fLLYR2wq5+JeEk8s1akQoYb596F3vvkzdqA + FskMhJcWi0XuE8iGn7yKj9Dh3Dhfpgp7MYvv1Ki8IZAolzOTYbXVzq4quB3RzU5t + X66bDN9Y5AKT1GBS4kkdJosefj1smXcf+4RQ8EJFQh8jHycA7hYspHzb57+vLw7+ + 3rqm7c50dlrqwjBV+GOenoIC5BT1joXeeqiBf3tQNddbxFvyMv3ZLwHvI5OdVqQ6 + cEN9nVbRG9znrYANOkl/KfdJOVTACXjSaI1N7BB4AXSL5D/eAJLcDpb5M13VlfoE + /eJspVdmJgYKqQ6t7fzt1il+YMDhgnY7JXKsNEWM/PkeDAVhf14LVT7NSYMnLMHT + hFtR6EOcwBEW8ljJxIfvScHgtPVPgVqU0r/u754KypXOCFffmfbranHAt8kbW656 + u7RByFnTVSjJ9P9NP1EBSCjk+GAL29cC/7nJ2eA//i7vlnMo9CJJnqXv9SekX+oJ + 1+zHuq5e2+zyLsDFvBvtfBLDavfgo7lov6NbeST2Fp66pRpMFeoyF6HrRQz82yQG + AYFJzlPY7oFPA54IHX/oSLn59PcddGE9Qi/eTM+r73hC9U9zDL9wmZ4zDOCF/0xf + 3xwJUyc2m3IV1WIpJYmixiBvu46h5ah9kTAjjpeCWNUymnVeYf4d2w5vg+rQKqVV + X38EeAiFFSiaBTFq++elUSf8zA5ohsCm96d1dR9tkVWivef7wLIXD29vxAaNuSlc + yiVMlXvhWSSPXYxM9LmLOWuc/4mRfwcQbEY9hTw3hT6DmOZAbmgPsuLalC7jLcOz + EU4G8NO5kvxZ35fkyvffUrIr4yQSvyC+oj0iAlo6mZNgvtF7q4P/Jkr8mmVitVZv + DWHuuYjrrpk/RCBNw8urKZo4SII8vQy/Cc61s32ad99OUZFnm8My4fcnvAApFCE6 + RbHn9/+fZ6OBCisFO2C7RpdWxGVvlolcpkFwlaG+5s9/g2tsSIm7ftuY0M46oELs + c5pSDicDv89+MuUMkX5JxkhahPS4V+y9eZKqpNyiCBma8fJByV3MIcybVZ7bawrJ + xXW7q+szQUJtYdgZVKykBH51A1Wglyl2UIOOCBVq2e/UABJEKXTLXkncOTBi6DZs + u4NaW8iNC90A62ciB7IAksAQ4c75B7/UWLJtU0XpK6clVKgw57Osn14B7gg+So4Q + zJH0xFYNKSs2wU1AjGhLlFNTEcQx+g5PsyyBEqaerKRLMqzpHQkjSW5xBmsG5Y6O + qCvTXOd9fxt9Sy5IBzzw1w3cttxV03vDqDCb7OaZ00ZIlKmXdfhVI4kYJsFor2UL + PlE3YJ3i2K8G3cw21ZHn7p82txGcR5Htsoe0LGwCGap8sFWhm/RRE9+HIC81DWyv + vkcFVaI2TYJ9z4f1hdZYVIwE/HU5Ztmjf+OYx6ozfjIMyas9xQd/V4DRoPahur3z + mzQsnfwFCFEE9dJ63v9akPnf86Uw1oD3AQiqJzRPsk8VO1YqXvlaAAP9kSWJGuE4 + FHAyoEokdRENeRfK1MjGYBa7zD794istbF0+im8q6Ir7d8Hm2OIuAcvFWsY7Op3b + c8gJEd/hW5zb4kn+Ws4UxLNcaDhm5rg3oOGkNEyj0iIs07zb6Vh4vgOYv5aYBUa1 + HzfAP4XdnOKrqEq/7ZR81W7+9DcK9quPtHilROlxsh0IAhJ6a00UDtqEKz8fC0XS + 7oqI8jR/+8rM2ymFG9WUDieRPmOJoU4MP58P8UQG2OrjiVfvUNlx/g4xgB92rYfV + jns/HON1U1pmMRaTS9gjnujo1Lx7PggY1uCgDt4iGtuq8PwWmZYjKDoUw3gE/Sma + qKy8ZJirRYLAN4BDuTSnb6cahtt7nB1ZiSMKy1WBSMcI1zMYGF1jpTh8Y1mnIH6r + bLa2wnmWeolxtm4D/TSTxOEedvlKqubADxgOs1lfBwuPXMHJBQurRgiYiTEtBOFK + j0pHK85nXHTuPAYyGjZTf5q4+XHLeInqOgvFJBkfzj+7aQ5NnFzA4KDHJWp+Cjsi + 45get7THkze1+8oEDI1i9CFR4lAl9aTnsoPJLG4ufKE6HZ/gM8jwbOgxUM9fzv1O + 3Jrr6Fjz7QSKajZGgJg4gzBVfhI7qMLuCYpIYb/tJ3Piwe9SjTMfJxQ02n1w9vu6 + FvWasxcPAfhf5lKRc1cojg9w+E37G9qdwWYRAKWXiL4Fctfd05uLorXDLed16Cji + bK6/6X1xyH8o7uzxQigzct1TGk/rgaONMSv3fO+8vWJ0bj+TZOMwl4IAMD/QnR6a + Hkr5T8KjSeytETyoCRHcn3rUSX7SW9EPKxfI805SvkmETl5gtCWh1Ebj8KlO8KG/ + riReQi9WCOII3v4d8+m3PgDODG7uu49zKYUnnbABqER2ONp3W4IkQXUfJbY1vmZW + XvyYMOEW42ZXs58groe299LNdUG02etMPyU6vfRaFJbAWx6cv9cUuw90A2I1I9RD + CEmp0e4aLr2JHZxuCp2sR8F2he5JEMawWgwrdp+YNkeJMLq1UEgzX7pqkpvxa06a + JS3AF8O2A++BkxE8toSQb95arbaAWC0G+ZR26FwSuMVSR2SYsyPv/72CRmuLROyG + wFwfI0YMgWCHWGli8L7Nzae/aVnPpM8rxj2QXGjcN/sdUWdGDfps63/ZDLRUuUD5 + nfTYJLdW2wN67cExKjVOEJRJ01l75sCoqlZWtjuzTdoS7uFEgw9avZYtu8dqE7+R + -----END RSA PRIVATE KEY----- diff --git a/docker-compose.yml b/docker-compose.yml index 68baabe3..aeb998bb 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,36 +2,31 @@ version: '3' services: -# nginx: -# container_name: nginx -# image: nginx:latest -# ports: -# - "80:80" -# volumes: -# - /home/ec2-user/nginx.conf:/etc/nginx/nginx.conf -# depends_on: -# - "db" -# restart: always #항상 재실행 - api-gateway: container_name: api-gateway - image: ${DOCKERHUB_USERNAME}/waither-gateway - expose: - - "8000" + image: ${DOCKERHUB_USERNAME}/waither-gateway:latest + network_mode: host + depends_on: + - config + ports: + - "8000:8000" # restart: always restart: no volumes: - /home/ec2-user/logs/api-gateway:/logs + config: container_name: config - image: ${DOCKERHUB_USERNAME}/waither-config - expose: - - "8888" + image: ${DOCKERHUB_USERNAME}/waither-config:latest + network_mode: host + ports: + - "8888:8888" + depends_on: + - eureka environment: CONFIG_GIT_URI : ${CONFIG_GIT_URI} CONFIG_PASSPHRASE : ${CONFIG_PASSPHRASE} -# CONFIG_PRIVATE_KEY_DIR : ${CONFIG_PRIVATE_KEY_DIR} # restart: always restart: no volumes: @@ -39,9 +34,10 @@ services: eureka: container_name: eureka - image: ${DOCKERHUB_USERNAME}/waither-eureka - expose: - - "8761" + image: ${DOCKERHUB_USERNAME}/waither-eureka:latest + network_mode: host + ports: + - "8761:8761" # restart: always restart: no volumes: @@ -49,9 +45,12 @@ services: user-service: container_name: user-service - image: ${DOCKERHUB_USERNAME}/waither-user - expose: - - "8080" + image: ${DOCKERHUB_USERNAME}/waither-user:latest + network_mode: host + depends_on: + - config + ports: + - "8080:8080" # restart: unless-stopped #수동으로 중지되지 않는 이상 항상 재실행 restart: no volumes: @@ -59,19 +58,25 @@ services: weather-service: container_name: weather-service - image: ${DOCKERHUB_USERNAME}/waither-weather - expose: - - "8081" + image: ${DOCKERHUB_USERNAME}/waither-weather:latest + network_mode: host + depends_on: + - config + ports: + - "8081:8081" # restart: unless-stopped restart: no volumes: - - /home/ec2-user/logs/weather-service:/logs + - /home/ec2-user/logs/weather-service:/logs:latest noti-service: container_name: noti-service - image: ${DOCKERHUB_USERNAME}/waither-noti - expose: - - "8082" + image: ${DOCKERHUB_USERNAME}/waither-noti:latest + network_mode: host + depends_on: + - config + ports: + - "8082:8082" # restart: unless-stopped restart: no volumes: @@ -93,3 +98,9 @@ services: KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 volumes: - /var/run/docker.sock:/var/run/docker.sock + + redis: + image: redis + container_name: redis + ports: + - "6379:6379" diff --git a/noti-service/src/main/resources/bootstrap.yml b/noti-service/src/main/resources/bootstrap.yml index 06c6289f..92e343bd 100644 --- a/noti-service/src/main/resources/bootstrap.yml +++ b/noti-service/src/main/resources/bootstrap.yml @@ -29,3 +29,4 @@ springdoc: default-consumes-media-type: application/json default-produces-media-type: application/json enable-spring-security: true + diff --git a/script/common.sh b/script/common.sh index 25f2e6ac..c4825a3d 100644 --- a/script/common.sh +++ b/script/common.sh @@ -3,6 +3,7 @@ RUNNING_EUREKA=$(docker ps | grep eureka) RUNNING_CONFIG=$(docker ps | grep config) RUNNING_ZOOKEEPER=$(docker ps | grep zookeeper) RUNNING_KAFKA=$(docker ps | grep kafka) +RUNNING_REDIS=$(docker ps | grep redis) # Eureka 검색 if [ -z "$RUNNING_EUREKA" ]; then @@ -22,6 +23,14 @@ else echo "Config Service is already running" fi +# Redis 검색 +if [ -z "$RUNNING_REDIS" ]; then + echo "Starting Redis ..." + docker-compose -f /home/docker-compose.yml up -d redis +else + echo "Redis is already running" +fi + # Zookeeper 검색 if [ -z "$RUNNING_ZOOKEEPER" ]; then echo "Starting Zookeeper ..." diff --git a/script/deploy.sh b/script/deploy.sh index 188626f8..76bc3064 100644 --- a/script/deploy.sh +++ b/script/deploy.sh @@ -10,10 +10,10 @@ # -d : detached 모드. 컨테이너를 백그라운드에서 실행 echo "api-gateway server start..." -docker-compose -f /home/docker-compose.yml up -d api-gateway +docker-compose -f /home/docker-compose.yml up -d api-gateway --build echo "noti-service server start..." -docker-compose -f /home/docker-compose.yml up -d noti-service +docker-compose -f /home/docker-compose.yml up -d noti-service --build echo "user-service server start..." -docker-compose -f /home/docker-compose.yml up -d user-service +docker-compose -f /home/docker-compose.yml up -d user-service --build echo "weather-service server start..." -docker-compose -f /home/docker-compose.yml up -d weather-service +docker-compose -f /home/docker-compose.yml up -d weather-service --build diff --git a/user-service/src/main/resources/bootstrap.yml b/user-service/src/main/resources/bootstrap.yml index 42f104cc..c0c40700 100644 --- a/user-service/src/main/resources/bootstrap.yml +++ b/user-service/src/main/resources/bootstrap.yml @@ -21,7 +21,7 @@ eureka: register-with-eureka: true # register to eureka server fetch-registry: true # Getting instances' information from eureka server service-url: - defaultZone : http://127.0.0.1:8761/eureka #Eureka Server's address + defaultZone : http://localhost:8761/eureka #Eureka Server's address #management: # Actuator # endpoints: diff --git a/weather-service/.gitignore b/weather-service/.gitignore index 61a981b4..758b62e7 100644 --- a/weather-service/.gitignore +++ b/weather-service/.gitignore @@ -1,4 +1,6 @@ *-secret.yml +*.Ds_Store +**/data/mysql/ HELP.md .gradle diff --git a/weather-service/build.gradle b/weather-service/build.gradle index 37100a13..014668a2 100644 --- a/weather-service/build.gradle +++ b/weather-service/build.gradle @@ -26,11 +26,14 @@ ext { dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' + annotationProcessor "org.springframework.boot:spring-boot-configuration-processor" - testImplementation 'org.springframework.boot:spring-boot-starter-test' + // DB + runtimeOnly 'com.mysql:mysql-connector-j' //Webflux implementation 'org.springframework.boot:spring-boot-starter-webflux' diff --git a/weather-service/docker-compose.yml b/weather-service/docker-compose.yml index d178146d..653f0456 100644 --- a/weather-service/docker-compose.yml +++ b/weather-service/docker-compose.yml @@ -1,6 +1,17 @@ version: '3' services: + mysql: + image: mysql:latest + container_name: waither + environment: + MYSQL_ROOT_USER: root + MYSQL_ROOT_PASSWORD: root1234! + MYSQL_DATABASE: waither + ports: + - "3306:3306" + volumes: + - ./data/mysql:/var/lib/mysql redis: image: redis:latest ports: diff --git a/weather-service/src/main/java/com/waither/weatherservice/WeatherServiceApplication.java b/weather-service/src/main/java/com/waither/weatherservice/WeatherServiceApplication.java index d49d48ef..16fef5c2 100644 --- a/weather-service/src/main/java/com/waither/weatherservice/WeatherServiceApplication.java +++ b/weather-service/src/main/java/com/waither/weatherservice/WeatherServiceApplication.java @@ -3,7 +3,9 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.data.redis.repository.configuration.EnableRedisRepositories; +import org.springframework.scheduling.annotation.EnableScheduling; +@EnableScheduling @SpringBootApplication @EnableRedisRepositories public class WeatherServiceApplication { diff --git a/weather-service/src/main/java/com/waither/weatherservice/entity/Region.java b/weather-service/src/main/java/com/waither/weatherservice/entity/Region.java new file mode 100644 index 00000000..4c16386d --- /dev/null +++ b/weather-service/src/main/java/com/waither/weatherservice/entity/Region.java @@ -0,0 +1,34 @@ +package com.waither.weatherservice.entity; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Builder +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor(access = AccessLevel.PRIVATE) +@Getter +@Entity +@Table(name = "region") +public class Region { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String stnID; + private String stnKo; + private String stnSp; + private double longitude; + private double latitude; + private String fctId; + private String wrnId; + private String wrnKo; + private String sfcStn; +} diff --git a/weather-service/src/main/java/com/waither/weatherservice/scheduler/SchedulerConfig.java b/weather-service/src/main/java/com/waither/weatherservice/scheduler/SchedulerConfig.java new file mode 100644 index 00000000..1a95564e --- /dev/null +++ b/weather-service/src/main/java/com/waither/weatherservice/scheduler/SchedulerConfig.java @@ -0,0 +1,28 @@ +package com.waither.weatherservice.scheduler; + +import java.net.URISyntaxException; +import java.time.LocalDateTime; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.scheduling.annotation.Scheduled; + +import com.waither.weatherservice.service.WeatherService; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RequiredArgsConstructor +@ConfigurationProperties +public class SchedulerConfig { + + private final WeatherService weatherService; + @Scheduled(cron = "0 0 14,17,20 * * *") + public void createDailyWeather() throws URISyntaxException { + + LocalDateTime now = LocalDateTime.now(); + String[] dateTime = weatherService.convertLocalDateTimeToString(now).split("_"); + // TODO 지역 DB 정리 후 변경 예정 + weatherService.createDailyWeather(55, 127, dateTime[0], dateTime[1]); + } +} diff --git a/weather-service/src/main/java/com/waither/weatherservice/service/WeatherService.java b/weather-service/src/main/java/com/waither/weatherservice/service/WeatherService.java index 317010a1..d2bbe5d6 100644 --- a/weather-service/src/main/java/com/waither/weatherservice/service/WeatherService.java +++ b/weather-service/src/main/java/com/waither/weatherservice/service/WeatherService.java @@ -77,7 +77,7 @@ public void createExpectedWeather( public void createDailyWeather(int nx, int ny, String baseDate, - String baseTime) throws URISyntaxException, JsonProcessingException { + String baseTime) throws URISyntaxException { // Base_time : 0200, 0500, 0800, 1100, 1400, 1700, 2000, 2300 업데이트 (1일 8회) List items = openApiUtil.callForeCastApi(nx, ny, baseDate, baseTime, 350, diff --git a/weather-service/src/main/resources/api/Region.xlsx b/weather-service/src/main/resources/api/Region.xlsx index 6f2a44ee..092398d0 100644 Binary files a/weather-service/src/main/resources/api/Region.xlsx and b/weather-service/src/main/resources/api/Region.xlsx differ diff --git a/weather-service/src/main/resources/bootstrap.yml b/weather-service/src/main/resources/bootstrap.yml index e748072c..a39d8107 100644 --- a/weather-service/src/main/resources/bootstrap.yml +++ b/weather-service/src/main/resources/bootstrap.yml @@ -21,7 +21,7 @@ eureka: register-with-eureka: true # register to eureka server fetch-registry: true # Getting instances' information from eureka server service-url: - defaultZone : http://127.0.0.1:8761/eureka #Eureka Server's address + defaultZone : http://localhost:8761/eureka #Eureka Server's address #management: # Actuator # endpoints: