앞으로 user-service , order-serivce , catalog-service 를 배포할 것인데 해당 service 들은 Ip Address 는 크게 상관하지 않아도 된다.
Dockerfile 만들고 Image 만들고 Container 만들기
현재 git 에 올린 user-service.application.yml 에서는 gateway:ip 부분에 실제 apigateway-service 의 ip 주소를 넣어줘야 한다.
FROM openjdk:21-ea-11-slim
VOLUME /tmp
COPY target/user-service-1.0.jar UserService.jar
ENTRYPOINT ["java","-jar","UserService.jar"]
mvn comile -> docker build -> docker run
유레카 서버에 들어가보면 user-service 가 정상적으로 등록된 것을 확인할 수 있다.
Dockerfile 만들고 Image 만들고 Container 만들기
@EnableKafka
@Configuration
public class KafkaProducerConfig {
@Bean
public ProducerFactory<String,String> producerFactory() {
// 서버 주소 변경
Map<String,Object> properties = new HashMap<>();
properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "172.18.0.101:9092");
}
}
FROM openjdk:21-ea-11-slim
VOLUME /tmp
COPY target/order-service-1.0.jar OrderService.jar
ENTRYPOINT ["java","-jar","OrderService.jar"]
mvn compile -> docker build -> docker run
docker run -d --network ecommerce-network
--name order-service
-e "spring.cloud.config.uri=http://http://config-service:8888"
-e "spring.rabbitmq.host=rabbitmq"
-e "spring.zipkin.base-url=http://zipkin:9411"
-e "eureka.client.service-url.defaultZone=http://discovery-service:8761/eureka/
-e "logging.file=/api-logs/orders-ws.log"
-e "spring.datasource.url=jdbc:mariadb://mariadb:3306/mydb"
supportkim/order-service:1.0
Dockerfile 만들고 Image 만들고 Container 만들기
@EnableKafka
@Configuration
public class KafkaConsumerConfig {
@Bean
public ConsumerFactory<String,String> consumerFactory() {
Map<String,Object> properties = new HashMap<>();
properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "172.18.0.101:9092");
}
mvn clean compile -> docker build -> docker run
docker run -d --network ecommerce-network
--name catalogs-service
-e "spring.cloud.config.uri=http://http://config-service:8888"
-e "spring.rabbitmq.host=rabbitmq"
-e "eureka.client.service-url.defaultZone=http://discovery-service:8761/eureka/
-e "logging.file=/api-logs/orders-ws.log"
supportkim/catalog-service:1.0
그동안 테스트 했던 것 처럼 POSTMAN 으로 회원가입 , 로그인 , /health , 조회 , 주문등등 다양한 요청이 정상적으로 호출된다.
local 에서 직접 서버를 하나하나씩 띄우지 않고 같은 네트워크안에 컨테이너를 올려서 사용한 것이다!
개발 환경은 Local IP 로 , 상용 환경은 AWS EC2 로 개발하려고 한다고 가정해보자.
@Component
@Profile("dev")
public class RedisConnector {
}
@Component
@Profile("prod")
public class MysqlConnector {
}