1 분 소요

이전 글에 이어서 진행해보자.

Docker Container

3. Discovery Service

1) application.yml 수정

유레카 서버에서 configuration 서버에 있는 구성 정보를 사용할 수도 있으니 configuration 서버의 정보를 명시해놓자.
이따가 docker run 할 때에는, 이전과 마찬가지로 도커 IP Address를 옵션으로 부여할 것이다.

server:
  port: 8761

spring:
  application:
    name: discoveryservice
  cloud:
    config:
      uri: http://127.0.0.1:8888 # 🌟 추가
      name: ecommerce # 🌟 추가

eureka:
  client:
    register-with-eureka: false
    fetch-registry: false

2) Dockerfile을 통해 이미지 만들기

이번에는 service-discovery를 Dockerfile을 통해 이미지화 해보자. Dockerfile

FROM openjdk:17-ea-11-jdk-slim

VOLUME /tmp

COPY target/service-discovery-0.0.1-SNAPSHOT.jar ServiceDiscovery.jar

ENTRYPOINT ["java","-jar","ServiceDiscovery.jar"]

3) 이미지 빌드 및 도커 허브에 업로드

인텔리제이 터미널을 사용해도 되고, iTerm을 사용해도 된다.

# 최신 버전으로 컴파일
$ mvn clean compile package -DskipTests=true 
# clean은 기존 파일을 지운다.
# package 옵션으로 jar 파일까지 생성할 수 있다.
# 테스트 코드는 skip

# 이미지 파일 빌드
$ docker build -t ln8847/service-discovery:1.0  .

# 생성된 이미지 확인
$ docker images | grep service-discovery

# 도커 허브에 업로드
$ docker push ln8847/service-discovery:1.0

4) 도커 컨테이너 실행

# 컨테이너 실행
$ docker run -d -p 8761:8761 --network ecommerce-network \
-e "spring.cloud.config.uri=http://config-service:8888" \
--name service-discovery \
ln8847/service-discovery:1.0

# 로그 확인
$ docker logs service-discovery

이전과 마찬가지로 네트워크를 확인해보자.

$ docker network inspect ecommerce-network

스크린샷 2022-10-17 오후 9 37 53

웹 브라우저에서도 확인해보면, 도커로 잘 실행되고 있음을 확인할 수 있다.
스크린샷 2022-10-17 오후 9 39 20

4. Gateway Service

1) Dockerfile을 통해 이미지 만들기

Dockerfile

FROM openjdk:17-ea-11-jdk-slim

VOLUME /tmp

COPY target/gateway-service-0.0.1-SNAPSHOT.jar GatewayService.jar

ENTRYPOINT ["java","-jar","GatewayService.jar"]

2) 이미지 빌드 및 도커 허브에 업로드

인텔리제이 터미널을 사용해도 되고, iTerm을 사용해도 된다.

# 최신 버전으로 컴파일
$ mvn clean compile package -DskipTests=true
# clean은 기존 파일을 지운다.
# package 옵션으로 jar 파일까지 생성할 수 있다.
# 테스트 코드는 skip

# 이미지 파일 빌드
$ docker build -t ln8847/gateway-service:1.0  .

# 생성된 이미지 확인
$ docker images | grep gateway-service

# 도커 허브에 업로드
$ docker push ln8847/gateway-service:1.0

3) 도커 컨테이너 실행

# 컨테이너 실행
$ docker run -d -p 8000:8000 --network ecommerce-network \
-e "spring.cloud.config.uri=http://config-service:8888" \
-e "spring.rabbitmq.host=rabbitmq" \
-e "eureka.client.serviceUrl.defaultZone=http://service-discovery:8761/eureka/" \
--name gateway-service \
ln8847/gateway-service:1.0

# 로그 확인
$ docker logs gateway-service

application.yml 혹은 bootstrap.yml 파일을 확인해보면,
게이트웨이 서비스는 두 가지 다른 서비스를 사용하는 것을 볼 수 있다.

하나는 configuration service의 정보를 사용하는 부분이고,
다른 하나는 유레카 서버에 자기 자신을 등록하기 위해 유레카 서비스의 url을 지정하는 부분이다.

각각의 정보를 docker run 명령을 실행할 때 옵션으로 부여한다.

도커 컨테이너 기동 후, 네트워크를 확인해보자.

$ docker network inspect ecommerce-network

스크린샷 2022-10-17 오후 9 54 34

그리고 유레카 대시보드에서 새로고침을 해보자.
스크린샷 2022-10-17 오후 9 55 58
게이트웨이 서비스까지 잘 등록되었다.



💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기