Skip to main content

Overview

Argos Mesh uses environment variables to configure all microservices. This approach provides flexibility for different deployment environments (development, staging, production) without modifying application code.

Orders Service

The Orders service is the main application that handles product management and sales transactions.

Database Configuration

SPRING_DATASOURCE_URL
string
required
PostgreSQL database connection URLDefault: jdbc:postgresql://db:5432/shop_dbExample:
SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/shop_db
SPRING_DATASOURCE_USERNAME
string
required
Database authentication usernameDefault: user_shop
SPRING_DATASOURCE_PASSWORD
string
required
Database authentication passwordDefault: secretPassword
Change this default password in production environments!

RabbitMQ Configuration

SPRING_RABBITMQ_HOST
string
required
RabbitMQ message broker hostnameDefault: message_brokerExample:
SPRING_RABBITMQ_HOST=localhost
SPRING_RABBITMQ_PORT
number
required
RabbitMQ AMQP portDefault: 5672
SPRING_RABBITMQ_USERNAME
string
required
RabbitMQ authentication usernameDefault: admin
SPRING_RABBITMQ_PASSWORD
string
required
RabbitMQ authentication passwordDefault: admin123
Change this default password in production environments!

Redis Configuration

SPRING_DATA_REDIS_HOST
string
required
Redis server hostnameDefault: redis_db
SPRING_DATA_REDIS_PORT
number
required
Redis server portDefault: 6379

Sentinel Service

The Sentinel service monitors traffic, detects suspicious patterns, and manages IP blacklisting.

RabbitMQ Configuration

SPRING_RABBITMQ_HOST
string
required
RabbitMQ message broker hostnameDefault: message_broker
SPRING_RABBITMQ_PORT
number
required
RabbitMQ AMQP portDefault: 5672
SPRING_RABBITMQ_USERNAME
string
required
RabbitMQ authentication usernameDefault: admin
SPRING_RABBITMQ_PASSWORD
string
required
RabbitMQ authentication passwordDefault: admin123

Redis Configuration

SPRING_DATA_REDIS_HOST
string
required
Redis server hostname for IP blacklisting and rate limitingDefault: redis_db
SPRING_DATA_REDIS_PORT
number
required
Redis server portDefault: 6379

Virtual Threads

SPRING_THREADS_VIRTUAL_ENABLED
boolean
Enable Java virtual threads for improved concurrencyDefault: true
Virtual threads improve performance when handling many concurrent connections. Requires Java 21+.

Notify Service

The Notify service handles alert notifications sent through RabbitMQ.

RabbitMQ Configuration

SPRING_RABBITMQ_HOST
string
required
RabbitMQ message broker hostnameDefault: message_broker
SPRING_RABBITMQ_PORT
number
required
RabbitMQ AMQP portDefault: 5672
SPRING_RABBITMQ_USERNAME
string
required
RabbitMQ authentication usernameDefault: admin
SPRING_RABBITMQ_PASSWORD
string
required
RabbitMQ authentication passwordDefault: admin123

Docker Compose Configuration

When running Argos Mesh with Docker Compose, environment variables are defined in the docker-compose.yml file:
services:
  app:
    build:
      context: ../orders
      dockerfile: Dockerfile
    container_name: shop_app
    depends_on:
      db:
        condition: service_healthy
    ports:
      - "8080:8080"
    environment:
      SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/shop_db
      SPRING_DATASOURCE_USERNAME: user_shop
      SPRING_DATASOURCE_PASSWORD: secretPassword
      SPRING_RABBITMQ_HOST: message_broker
      SPRING_RABBITMQ_PORT: 5672
      SPRING_RABBITMQ_USERNAME: admin
      SPRING_RABBITMQ_PASSWORD: admin123
      SPRING_DATA_REDIS_HOST: redis_db
      SPRING_DATA_REDIS_PORT: 6379
    restart: on-failure
    networks:
      - argos-network

  sentinel:
    build:
      context: ../sentinel
      dockerfile: Dockerfile
    container_name: sentinel_app
    depends_on:
      redis_db:
        condition: service_healthy
      rabbitmq:
        condition: service_healthy
    environment:
      - SPRING_RABBITMQ_HOST=message_broker
      - SPRING_RABBITMQ_PORT=5672
      - SPRING_RABBITMQ_USERNAME=admin
      - SPRING_RABBITMQ_PASSWORD=admin123
      - SPRING_DATA_REDIS_HOST=redis_db
      - SPRING_DATA_REDIS_PORT=6379
      - SPRING_THREADS_VIRTUAL_ENABLED=true
    restart: on-failure
    networks:
      - argos-network

Configuration Best Practices

  • Never commit credentials to version control
  • Use environment-specific .env files
  • Change all default passwords in production
  • Use secrets management tools (AWS Secrets Manager, HashiCorp Vault, etc.)
  • Rotate credentials regularly
  • Ensure database is healthy before starting the Orders service
  • Sentinel requires both Redis and RabbitMQ to be available
  • Use Docker health checks to manage startup order
  • Configure appropriate restart policies (on-failure, always)
  • Use localhost hostnames for local development
  • Use service names for Docker Compose (e.g., message_broker, redis_db)
  • Use fully qualified domain names in production
  • Consider using external managed services (Amazon RDS, Amazon MQ, Amazon ElastiCache)

Environment File Example

Create a .env file for local development:
.env
# Database
SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/shop_db
SPRING_DATASOURCE_USERNAME=user_shop
SPRING_DATASOURCE_PASSWORD=your_secure_password

# RabbitMQ
SPRING_RABBITMQ_HOST=localhost
SPRING_RABBITMQ_PORT=5672
SPRING_RABBITMQ_USERNAME=admin
SPRING_RABBITMQ_PASSWORD=your_secure_password

# Redis
SPRING_DATA_REDIS_HOST=localhost
SPRING_DATA_REDIS_PORT=6379

# Performance
SPRING_THREADS_VIRTUAL_ENABLED=true
Reference this file in your Docker Compose with env_file: .env or load it in your IDE configuration.

Build docs developers (and LLMs) love