diff --git a/application.yml b/application.yml index 13220e1..a53df26 100644 --- a/application.yml +++ b/application.yml @@ -27,7 +27,7 @@ spring: properties: spring.json.trusted.packages: com.whalewatch.dto,com.whalewatch.domain redis: - host: localhost + host: redis port: 6379 jwt: diff --git a/build.gradle b/build.gradle index 793d4b9..a5b6726 100644 --- a/build.gradle +++ b/build.gradle @@ -4,6 +4,13 @@ plugins { id 'io.spring.dependency-management' version '1.1.6' } +bootJar { + enabled = false +} +jar { + enabled = true +} + group 'com.whalewatch' version '0.0.1-SNAPSHOT' diff --git a/collector/Dockerfile b/collector/Dockerfile index 62ea130..bfc986d 100644 --- a/collector/Dockerfile +++ b/collector/Dockerfile @@ -1,8 +1,8 @@ -# collector/Dockerfile FROM openjdk:17-slim -COPY build/libs/whalewatch-collector.jar /app/collector.jar +WORKDIR /app +COPY build/libs/collector.jar /app/collector.jar -EXPOSE 8080 +EXPOSE 8081 ENTRYPOINT ["java", "-jar", "/app/collector.jar"] diff --git a/collector/build.gradle b/collector/build.gradle index e53c610..d7d5f11 100644 --- a/collector/build.gradle +++ b/collector/build.gradle @@ -25,5 +25,5 @@ dependencies { } bootJar { - archiveFileName = 'whalewatch-collector.jar' + mainClass.set('com.whalewatch.CollectorApplication') } diff --git a/common/build.gradle b/common/build.gradle index e14af54..624e004 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -13,4 +13,11 @@ dependencies { // Redis (Spring Data Redis) implementation 'org.springframework.boot:spring-boot-starter-data-redis' +} + +bootJar { + enabled = false +} +jar { + enabled = true } \ No newline at end of file diff --git a/common/src/main/java/com/whalewatch/config/KafkaConsumerConfig.java b/common/src/main/java/com/whalewatch/config/KafkaConsumerConfig.java index c24450a..f10a892 100644 --- a/common/src/main/java/com/whalewatch/config/KafkaConsumerConfig.java +++ b/common/src/main/java/com/whalewatch/config/KafkaConsumerConfig.java @@ -18,10 +18,16 @@ @Configuration public class KafkaConsumerConfig { + private final KafkaProducerProperties kafkaProducerProperties; + + public KafkaConsumerConfig(KafkaProducerProperties kafkaProducerProperties) { + this.kafkaProducerProperties = kafkaProducerProperties; + } + @Bean public ConsumerFactory consumerFactory() { Map props = new HashMap<>(); - props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9093"); + props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, kafkaProducerProperties.getBootstrapServers()); props.put(ConsumerConfig.GROUP_ID_CONFIG, "whalewatch_group"); props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, JsonDeserializer.class); diff --git a/docker-compose.yml b/docker-compose.yml index 1bfcbfb..793afeb 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -35,21 +35,135 @@ services: environment: KAFKA_BROKER_ID: 1 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 - # 멀티 리스너 설정 - KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,EXTERNAL://localhost:9093 - KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092,EXTERNAL://0.0.0.0:9093 - KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,EXTERNAL:PLAINTEXT + KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092 + KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092 + KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 ports: - - "9092:9092" # 도커 내부 통신용 - - "9093:9093" # 호스트(로컬)용 + - "9092:9092" + networks: + - whale-net + + redis: + image: redis:7.0 + restart: unless-stopped + ports: + - "6379:6379" + volumes: + - redis_data:/data + networks: + - whale-net + + collector: + image: whalewatch/collector:latest + container_name: collector + ports: + - "8081:8081" + environment: + SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/${MYSQL_DATABASE} + SPRING_DATASOURCE_USERNAME: ${MYSQL_USER} + SPRING_DATASOURCE_PASSWORD: ${MYSQL_PASSWORD} + SPRING_KAFKA_BOOTSTRAP_SERVERS: kafka:9092 + TELEGRAM_TOKEN: ${TELEGRAM_TOKEN} + TELEGRAM_USERNAME: ${TELEGRAM_USERNAME} + TELEGRAM_WEBHOOKURL: ${TELEGRAM_WEBHOOKURL} + SPRING_REDIS_HOST: redis + SPRING_REDIS_PORT: 6379 + depends_on: + - mysql + - kafka + - zookeeper + - redis + networks: + - whale-net + + user-service: + image: whalewatch/user-service:latest + container_name: user-service + ports: + - "8082:8082" + environment: + SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/${MYSQL_DATABASE} + SPRING_DATASOURCE_USERNAME: ${MYSQL_USER} + SPRING_DATASOURCE_PASSWORD: ${MYSQL_PASSWORD} + SPRING_KAFKA_BOOTSTRAP_SERVERS: kafka:9092 + SPRING_REDIS_HOST: redis + SPRING_REDIS_PORT: 6379 + depends_on: + - mysql + - kafka + - zookeeper + - redis + networks: + - whale-net + + transaction-service: + image: whalewatch/transaction-service:latest + ports: + - "8083:8083" + environment: + SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/${MYSQL_DATABASE} + SPRING_DATASOURCE_USERNAME: ${MYSQL_USER} + SPRING_DATASOURCE_PASSWORD: ${MYSQL_PASSWORD} + SPRING_KAFKA_BOOTSTRAP_SERVERS: kafka:9092 + SPRING_REDIS_HOST: redis + SPRING_REDIS_PORT: 6379 + depends_on: + - mysql + - kafka + - zookeeper + - redis + networks: + - whale-net + + notification-service: + image: whalewatch/notification-service:latest + ports: + - "8084:8084" + environment: + SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/${MYSQL_DATABASE} + SPRING_DATASOURCE_USERNAME: ${MYSQL_USER} + SPRING_DATASOURCE_PASSWORD: ${MYSQL_PASSWORD} + SPRING_KAFKA_BOOTSTRAP_SERVERS: kafka:9092 + TELEGRAM_TOKEN: ${TELEGRAM_TOKEN} + TELEGRAM_USERNAME: ${TELEGRAM_USERNAME} + TELEGRAM_WEBHOOKURL: ${TELEGRAM_WEBHOOKURL} + SPRING_REDIS_HOST: redis + SPRING_REDIS_PORT: 6379 + depends_on: + - mysql + - kafka + - zookeeper + - redis + networks: + - whale-net + + post-service: + image: whalewatch/post-service:latest + container_name: post-service + ports: + - "8085:8085" + environment: + SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/${MYSQL_DATABASE} + SPRING_DATASOURCE_USERNAME: ${MYSQL_USER} + SPRING_DATASOURCE_PASSWORD: ${MYSQL_PASSWORD} + SPRING_KAFKA_BOOTSTRAP_SERVERS: kafka:9092 + SPRING_REDIS_HOST: redis + SPRING_REDIS_PORT: 6379 + depends_on: + - mysql + - kafka + - zookeeper + - redis networks: - whale-net volumes: mysql_data: + redis_data: networks: whale-net: driver: bridge + diff --git a/notification-service/Dockerfile b/notification-service/Dockerfile new file mode 100644 index 0000000..ce9b62f --- /dev/null +++ b/notification-service/Dockerfile @@ -0,0 +1,8 @@ +FROM openjdk:17-slim + +WORKDIR /app +COPY build/libs/notification-service.jar /app/notification-service.jar + +EXPOSE 8084 + +ENTRYPOINT ["java", "-jar", "/app/notification-service.jar"] diff --git a/notification-service/build.gradle b/notification-service/build.gradle index 06152c5..2a50d63 100644 --- a/notification-service/build.gradle +++ b/notification-service/build.gradle @@ -31,4 +31,9 @@ dependencies { test { useJUnitPlatform() -} \ No newline at end of file +} + +bootJar { + mainClass.set('com.whalewatch.NotificationServiceApplication') +} + diff --git a/post-service/Dockerfile b/post-service/Dockerfile new file mode 100644 index 0000000..acd9f9e --- /dev/null +++ b/post-service/Dockerfile @@ -0,0 +1,8 @@ +FROM openjdk:17-slim + +WORKDIR /app +COPY build/libs/post-service.jar /app/post-service.jar + +EXPOSE 8085 + +ENTRYPOINT ["java", "-jar", "/app/post-service.jar"] diff --git a/post-service/build.gradle b/post-service/build.gradle index c5c8c1c..dae77f6 100644 --- a/post-service/build.gradle +++ b/post-service/build.gradle @@ -25,4 +25,8 @@ dependencies { test { useJUnitPlatform() -} \ No newline at end of file +} + +bootJar { + mainClass.set('com.whalewatch.PostServiceApplication') +} diff --git a/transaction-service/Dockerfile b/transaction-service/Dockerfile new file mode 100644 index 0000000..69ebfa3 --- /dev/null +++ b/transaction-service/Dockerfile @@ -0,0 +1,8 @@ +FROM openjdk:17-slim + +WORKDIR /app +COPY build/libs/transaction-service.jar /app/transaction-service.jar + +EXPOSE 8083 + +ENTRYPOINT ["java", "-jar", "/app/transaction-service.jar"] diff --git a/transaction-service/build.gradle b/transaction-service/build.gradle index 4f36ab1..d0d697b 100644 --- a/transaction-service/build.gradle +++ b/transaction-service/build.gradle @@ -24,4 +24,8 @@ dependencies { test { useJUnitPlatform() -} \ No newline at end of file +} + +bootJar { + mainClass.set('com.whalewatch.TransactionServiceApplication') +} diff --git a/user-service/Dockerfile b/user-service/Dockerfile new file mode 100644 index 0000000..cc4ed0d --- /dev/null +++ b/user-service/Dockerfile @@ -0,0 +1,8 @@ +FROM openjdk:17-slim + +WORKDIR /app +COPY build/libs/user-service.jar /app/user-service.jar + +EXPOSE 8082 + +ENTRYPOINT ["java", "-jar", "/app/user-service.jar"] diff --git a/user-service/build.gradle b/user-service/build.gradle index 878be58..8e691c1 100644 --- a/user-service/build.gradle +++ b/user-service/build.gradle @@ -34,4 +34,8 @@ dependencies { test { useJUnitPlatform() +} + +bootJar { + mainClass.set('com.whalewatch.UserServiceApplication') } \ No newline at end of file