[E-commerce App] Docker Container를 이용한 애플리케이션 배포 - 8. Catalog Microservice
이전 글에 이어서 진행해보자.
Docker Container
12. catalog-service
변경
1) KafkaConsumerConfig.java
이전의 order-service
에서 KafkaProducerConfig.java
코드를 변경했을 때와 마찬가지로
catalog-service
에서도, kafka broker의 IP Address를 kafka broker container의 IP Address로 변경하자.
변경 전
변경 후
2) Dockerfile을 통해 이미지 만들기
FROM openjdk:17-ea-11-jdk-slim
VOLUME /tmp
COPY target/catalog-service-0.0.1-SNAPSHOT.jar CatalogService.jar
ENTRYPOINT ["java","-jar","CatalogService.jar"]
3) 이미지 빌드 및 도커 허브에 업로드
# 최신 버전으로 컴파일
$ mvn clean compile package -DskipTests=true
# clean은 기존 파일을 지운다.
# package 옵션으로 jar 파일까지 생성할 수 있다.
# 테스트 코드는 skip
# 이미지 파일 빌드
$ docker build -t ln8847/catalog-service:1.0 .
# 생성된 이미지 확인
$ docker images | grep catalog-service
# 도커 허브에 업로드
$ docker push ln8847/catalog-service:1.0
4) 도커 컨테이너 실행
기존의 application.yml
에서 127.0.0.1
혹은 localhost
를 사용하고 있는 부분을 -e
옵션을 통해 도커 컨테이너의 이름으로 바꿔서 실행하자.
$ docker run -d --network ecommerce-network \
-e "eureka.client.serviceUrl.defaultZone=http://service-discovery:8761/eureka/" \
-e "logging.file=/api-logs/catalogs-ws.log" \
--name catalog-service \
ln8847/catalog-service:1.0
네트워크를 확인해보자.
$ docker network inspect ecommerce-network
로그를 확인해보자.
$ docker logs catalog-service
별다른 오류 없이 정상적으로 기동되었다.
http://127.0.0.1:8761
에 접속해 catalog-service가 잘 등록되었는지 확인해보자.
참고
지금은 configuration 서버와 rabbitmq는 사용하지 않기 때문에 추가하지 않았지만,
나중에 사용하게 된다면 아래와 같이-e
옵션을 이용해 추가하면 된다.$ docker run -d --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/" \ -e "logging.file=/api-logs/catalogs-ws.log" \ --name catalog-service \ ln8847/catalog-service:1.0
💛 개인 공부 기록용 블로그입니다. 👻