Skip to main content
This guide walks you through installing and building StreamLine Logistics from source.

Clone the Repository

1

Clone the repository

Clone the StreamLine Logistics repository to your local machine:
git clone <repository-url>
cd StreamLine-Logistics
Replace <repository-url> with your actual repository URL.
2

Verify project structure

Ensure the project structure is correct:
ls -la
You should see the following microservice directories:
StreamLine-Logistics/
├── microservice-config/
├── microservice-eureka/
├── microservice-gateway/
├── microservice-inventory/
├── microservice-order/
├── microservice-tracking/
├── docker-compose.yml
└── pom.xml

Build the Project

The project uses Spring Boot 4.0.2, Spring Cloud 2025.1.0, and Java 17.
1

Clean and install dependencies

Build all microservices using Maven:
mvn clean install
This command will:
  • Download all dependencies
  • Compile all microservices
  • Run tests (if configured)
  • Create JAR files for each service
  • Install artifacts to local Maven repository
The initial build may take 5-10 minutes depending on your internet connection and system performance.
2

Verify the build

Check that all microservices built successfully:
ls -la */target/*.jar
You should see JAR files for each microservice:
microservice-config/target/microservice-config-0.0.1-SNAPSHOT.jar
microservice-eureka/target/microservice-eureka-0.0.1-SNAPSHOT.jar
microservice-gateway/target/microservice-gateway-0.0.1-SNAPSHOT.jar
microservice-inventory/target/microservice-inventory-0.0.1-SNAPSHOT.jar
microservice-order/target/microservice-order-0.0.1-SNAPSHOT.jar
microservice-tracking/target/microservice-tracking-0.0.1-SNAPSHOT.jar

Build Docker Images

1

Review Dockerfiles

Each microservice has its own Dockerfile. The docker-compose.yml file references these Dockerfiles to build images.Verify Dockerfiles exist:
ls -la microservice-*/Dockerfile
2

Build all Docker images

Build Docker images for all services using docker-compose:
docker compose build
This process will:
  • Build Docker images for each microservice
  • Tag images appropriately
  • Pull required base images
  • Pull database images (PostgreSQL, MySQL, MongoDB)
Building all images may take 10-15 minutes on the first run.
3

Verify Docker images

List all built images:
docker images | grep -E '(eureka|order|inventory|tracking)'
You should see:
eureka-service     latest    <image-id>    <time>    <size>
order-service      latest    <image-id>    <time>    <size>
inventory-service  latest    <image-id>    <time>    <size>
tracking-service   latest    <image-id>    <time>    <size>
And database images:
docker images | grep -E '(postgres|mysql|mongo)'
postgres    15        <image-id>    <time>    <size>
mysql       8         <image-id>    <time>    <size>
mongo       latest    <image-id>    <time>    <size>

Start Services

1

Start all services

Launch all microservices and databases:
docker compose up -d
The -d flag runs containers in detached mode.
2

Monitor service startup

Watch the logs to ensure services start correctly:
docker compose logs -f
Press Ctrl+C to stop following logs.
Services will start in dependency order. Eureka Server starts first, followed by other services.
3

Check service health

Verify all containers are running:
docker compose ps
All services should show Up status:
NAME                STATUS
eureka-server       Up
order-service       Up
inventory-service   Up
tracking-service    Up
order_db            Up
inventory_db        Up
tracking_db         Up
4

Wait for Eureka registration

Allow 30-60 seconds for all services to register with Eureka Server.Check Eureka dashboard:
open http://localhost:8761
You should see all microservices registered:
  • MSVC-ORDER
  • MSVC-INVENTORY
  • MSVC-TRACKING

Verify Installation

1

Check Eureka Server

Access the Eureka dashboard:
curl http://localhost:8761/eureka/apps
Or open in browser: http://localhost:8761
2

Check Order Service

Verify the Order Service is accessible:
curl http://localhost:8090/actuator/health
Expected response:
{
  "status": "UP"
}
3

Check Inventory Service

Verify the Inventory Service is accessible:
curl http://localhost:9090/actuator/health
Expected response:
{
  "status": "UP"
}
4

Check Tracking Service

Verify the Tracking Service is accessible:
curl http://localhost:8091/actuator/health
Expected response:
{
  "status": "UP"
}
5

Verify database connections

Check that databases are accessible:
docker exec -it order_db psql -U postgres -d orderdb -c "SELECT 1;"

Troubleshooting

Build Failures

If Maven build fails:
# Clear Maven cache and rebuild
rm -rf ~/.m2/repository
mvn clean install -U

Docker Build Issues

If Docker image build fails:
# Clean Docker build cache
docker builder prune -af

# Rebuild without cache
docker compose build --no-cache

Service Won’t Start

If a service fails to start:
# Check logs for specific service
docker compose logs <service-name>

# Example
docker compose logs order-service

Port Conflicts

If ports are already in use:
# Find process using port
sudo lsof -i :<port-number>

# Kill the process
kill -9 <PID>

Database Connection Issues

If services can’t connect to databases:
# Restart databases
docker compose restart order_db inventory_db tracking_db

# Wait 10 seconds, then restart services
sleep 10
docker compose restart order-service inventory-service tracking-service

Stopping Services

To stop all services:
# Stop containers but keep data
docker compose stop

# Stop and remove containers (keeps volumes)
docker compose down

# Stop and remove everything including volumes
docker compose down -v
Using docker compose down -v will delete all database data!

Development Mode

For development, you can run services individually:
# Start only databases
docker compose up -d order_db inventory_db tracking_db eureka-server

# Run a service locally
cd microservice-order
mvn spring-boot:run
When running locally, update application.yml to point to localhost instead of container names.

Next Steps

  • Learn about Docker Setup for detailed Docker configuration
  • Review Configuration for customizing services
  • Explore the API documentation for each service

Build docs developers (and LLMs) love