diff --git a/consumer/Dockerfile b/consumer/Dockerfile new file mode 100644 index 0000000..e696046 --- /dev/null +++ b/consumer/Dockerfile @@ -0,0 +1,18 @@ +# Stage 1: Build shared-dto +FROM maven:3.9.6-eclipse-temurin-21 AS build +WORKDIR /app + +# Copy and build shared-dto +COPY shared-dto ./shared-dto +RUN mvn install -f shared-dto/pom.xml -DskipTests + +# Copy and build consumer (flat, to avoid nesting) +COPY consumer ./consumer +RUN mvn clean package -f consumer/pom.xml -DskipTests + +# Stage 2: Run the application +FROM eclipse-temurin:21-jre +WORKDIR /app +COPY --from=build /app/consumer/target/consumer-0.0.1-SNAPSHOT.jar app.jar +EXPOSE 9220 +ENTRYPOINT ["java", "-jar", "app.jar"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..735670a --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,43 @@ +version: "3.8" + +services: + zookeeper: + image: confluentinc/cp-zookeeper:7.5.0 + environment: + ZOOKEEPER_CLIENT_PORT: 2181 + ZOOKEEPER_TICK_TIME: 2000 + ports: + - "2181:2181" + + kafka: + image: confluentinc/cp-kafka:7.5.0 + depends_on: + - zookeeper + ports: + - "9092:9092" + environment: + KAFKA_BROKER_ID: 1 + KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 + KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:9092 + KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092,PLAINTEXT_HOST://0.0.0.0:9093 + KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT + KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT + KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 + + publisher: + image: janindu1999/publisher-app:latest + depends_on: + - kafka + ports: + - "9219:9219" + environment: + SPRING_KAFKA_BOOTSTRAP_SERVERS: kafka:9092 + + consumer: + image: janindu1999/consumer-app:latest + depends_on: + - kafka + ports: + - "9229:9229" + environment: + SPRING_KAFKA_BOOTSTRAP_SERVERS: kafka:9092 diff --git a/publisher/Dockerfile b/publisher/Dockerfile new file mode 100644 index 0000000..df33fe4 --- /dev/null +++ b/publisher/Dockerfile @@ -0,0 +1,19 @@ +# Stage 1: Build shared-dto +FROM maven:3.9.6-eclipse-temurin-21 AS build +WORKDIR /app + +# Copy and build shared-dto first +COPY shared-dto ./shared-dto +RUN mvn install -f shared-dto/pom.xml -DskipTests + +# Copy the rest and build publisher (including its dependencies) +COPY publisher ./publisher +COPY consumer ./consumer +RUN mvn clean package -f publisher/pom.xml -DskipTests + +# Stage 2: Run the application +FROM eclipse-temurin:21-jre +WORKDIR /app +COPY --from=build /app/publisher/target/publisher-0.0.1-SNAPSHOT.jar app.jar +EXPOSE 9219 +ENTRYPOINT ["java", "-jar", "app.jar"] diff --git a/shared-dto/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/shared-dto/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index 7386fa2..0b37f0b 100644 --- a/shared-dto/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/shared-dto/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -1 +1 @@ -E:\I_Learn_Cloud\Projects\Springboot Kafka\shared-dto\src\main\java\com\shared\dto\Customer.java +C:\Projects\Java\Spring Boot\Kafka\springboot-kafka-pubsub\shared-dto\src\main\java\com\shared\dto\Customer.java diff --git a/shared-dto/target/shared-dto-1.0.0.jar b/shared-dto/target/shared-dto-1.0.0.jar index df49cbc..e1355b0 100644 Binary files a/shared-dto/target/shared-dto-1.0.0.jar and b/shared-dto/target/shared-dto-1.0.0.jar differ