Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
105 changes: 99 additions & 6 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,20 +1,113 @@
version: "3.9"

services:
# --------------------------
# PostgreSQL for all services
# --------------------------
postgres:
image: postgres:15
container_name: postgres
environment:
POSTGRES_DB: users
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: platformops
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data
networks:
- platformops-net

# --------------------------
# Kafka + Zookeeper
# --------------------------
zookeeper:
image: wurstmeister/zookeeper:3.4.6
container_name: zookeeper
ports:
- "2181:2181"
networks:
- platformops-net

kafka:
image: wurstmeister/kafka:2.13-2.8.1
container_name: kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_CREATE_TOPICS: "orders:1:1"
depends_on:
- zookeeper
networks:
- platformops-net

# --------------------------
# User Service
# --------------------------
user-service:
build: ./services/user-service
build:
context: ./services/user-service
container_name: user-service
ports:
- "8080:8080"
- "8081:8080"
environment:
SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/platformops
SPRING_DATASOURCE_USERNAME: postgres
SPRING_DATASOURCE_PASSWORD: postgres
SPRING_JPA_HIBERNATE_DDL_AUTO: update
KAFKA_BOOTSTRAP_SERVERS: kafka:9092
depends_on:
- postgres
- kafka
networks:
- platformops-net

# --------------------------
# Order Service
# --------------------------
order-service:
build:
context: ./services/order-service
container_name: order-service
ports:
- "8082:8082"
environment:
SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/users
SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/platformops
SPRING_DATASOURCE_USERNAME: postgres
SPRING_DATASOURCE_PASSWORD: postgres
SPRING_JPA_HIBERNATE_DDL_AUTO: update
KAFKA_BOOTSTRAP_SERVERS: kafka:9092
depends_on:
- postgres
- kafka
networks:
- platformops-net

# --------------------------
# API Gateway
# --------------------------
api-gateway:
build:
context: ./services/api-gateway
container_name: api-gateway
ports:
- "8080:8080"
environment:
USER_SERVICE_URL: http://user-service:8080
ORDER_SERVICE_URL: http://order-service:8080
AI_SERVICE_URL: http://ai-service:8000
USER_SERVICE_JWT_URL: http://user-service:8080
depends_on:
- user-service
- order-service
networks:
- platformops-net

volumes:
pgdata:

networks:
platformops-net:
driver: bridge
2 changes: 2 additions & 0 deletions services/api-gateway/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/mvnw text eol=lf
*.cmd text eol=crlf
33 changes: 33 additions & 0 deletions services/api-gateway/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
HELP.md
target/
.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/

### VS Code ###
.vscode/
3 changes: 3 additions & 0 deletions services/api-gateway/.mvn/wrapper/maven-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
wrapperVersion=3.3.4
distributionType=only-script
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.12/apache-maven-3.9.12-bin.zip
29 changes: 29 additions & 0 deletions services/api-gateway/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Build stage
FROM eclipse-temurin:21-jdk AS build
WORKDIR /app

# Copy Maven wrapper and pom.xml
COPY mvnw .
COPY .mvn .mvn
COPY pom.xml .

# Download dependencies (cached layer)
RUN ./mvnw dependency:go-offline

# Copy source code
COPY src src

# Build the application
RUN ./mvnw clean package -DskipTests

# Runtime stage
FROM eclipse-temurin:21-jre
WORKDIR /app

# Copy the built JAR from build stage
COPY --from=build /app/target/*.jar app.jar

# Expose port
EXPOSE 8080

ENTRYPOINT ["java", "-jar", "app.jar"]
Loading