Sign inSign up

eloydsdlh/apartments-compose:fix-adjustment-report-BDFP-20260404-082455-2c139b4

Manifest digest

sha256:759dd4a0fc95d633b9e24c0898028d96c5b904f2b7cf2e70b854429a8619accd

Last pushed

5 months by eloydsdlh

Type

Compose

Manifest digest

sha256:759dd4a0fc95d633b9e24c0898028d96c5b904f2b7cf2e70b854429a8619accd

Compose file content

services:
  # Single MySQL instance with 4 independent schemas (one per microservice)
  mysql:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-password}
      MYSQL_USER: ${MYSQL_USER:-user}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD:-password}
    volumes:
      - mysql_data:/var/lib/mysql
      - ./init-db.sql:/docker-entrypoint-initdb.d/init-db.sql:ro
    networks:
      - app-network
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u${MYSQL_USER:-user}", "-p${MYSQL_PASSWORD:-password}"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 30s

  # MinIO for file storage
  minio:
    container_name: minio
    image: minio/minio:latest
    command: server /data --console-address ":9001"
    restart: always
    environment:
      MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin}
      MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-minioadmin}
    ports:
      - "9000:9000"
      - "9001:9001"  # MinIO Console
    volumes:
      - minio_data:/data
    networks:
      - app-network
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 10s
      retries: 5
      start_period: 20s

  # MinIO config
  mc:
    image: minio/mc:latest
    depends_on:
      minio:
        condition: service_healthy
    entrypoint: >
      /bin/sh -c "
        sleep 5 &&
        mc alias set local http://minio:9000 ${MINIO_ROOT_USER:-minioadmin} ${MINIO_ROOT_PASSWORD:-minioadmin} &&
        mc mb -p local/${MINIO_BUCKET:-apartments-images} || true &&
        mc anonymous set public local/${MINIO_BUCKET:-apartments-images}
        exit 0
      "
    networks:
      - app-network

  # Jaeger for distributed traceability
  jaeger:
    image: jaegertracing/all-in-one:latest
    restart: always
    ports:
      - "16686:16686"  # Jaeger UI
      - "4318:4318"    # OTLP HTTP
    environment:
      COLLECTOR_OTLP_ENABLED: "true"
    networks:
      - app-network

  # Main application (Backend + Frontend)
  app:
    image: eloydsdlh/apartments-app:fix-adjustment-report-BDFP-20260404-082455-2c139b4
    pull_policy: always
    restart: always
    ports:
      - "443:443"
      - "8761:8761"  # Eureka Server
    environment:
      # General config
      JAVA_OPTS: "-Xmx1024m -Xms512m"
      SPRING_PROFILES_ACTIVE: ${SPRING_PROFILE:-prod}

      # DB - Users
      USER_DB_URL: jdbc:mysql://mysql:3306/${MYSQL_USERS_DB:-usersdb}
      USER_DB_USERNAME: ${MYSQL_USER:-user}
      USER_DB_PASSWORD: ${MYSQL_PASSWORD:-password}
      MYSQL_USERS_DB: ${MYSQL_USERS_DB:-usersdb}
      MYSQL_USER: ${MYSQL_USER:-user}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD:-password}

      # DB - Apartments
      APARTMENT_DB_URL: jdbc:mysql://mysql:3306/${MYSQL_APARTMENTS_DB:-apartmentsdb}
      APARTMENT_DB_USERNAME: ${MYSQL_USER:-user}
      APARTMENT_DB_PASSWORD: ${MYSQL_PASSWORD:-password}
      MYSQL_APARTMENTS_DB: ${MYSQL_APARTMENTS_DB:-apartmentsdb}

      # DB - Bookings
      BOOKING_DB_URL: jdbc:mysql://mysql:3306/${MYSQL_BOOKINGS_DB:-bookingsdb}
      BOOKING_DB_USERNAME: ${MYSQL_USER:-user}
      BOOKING_DB_PASSWORD: ${MYSQL_PASSWORD:-password}
      MYSQL_BOOKINGS_DB: ${MYSQL_BOOKINGS_DB:-bookingsdb}

      # DB - Reviews
      REVIEW_DB_URL: jdbc:mysql://mysql:3306/${MYSQL_REVIEWS_DB:-reviewsdb}
      REVIEW_DB_USERNAME: ${MYSQL_USER:-user}
      REVIEW_DB_PASSWORD: ${MYSQL_PASSWORD:-password}
      MYSQL_REVIEWS_DB: ${MYSQL_REVIEWS_DB:-reviewsdb}

      # MinIO
      MINIO_URL: http://minio:9000
      MINIO_EXTERNAL_URL: ${MINIO_EXTERNAL_URL:-https://localhost:443/minio}
      MINIO_ACCESS_KEY: ${MINIO_ROOT_USER:-minioadmin}
      MINIO_SECRET_KEY: ${MINIO_ROOT_PASSWORD:-minioadmin}
      MINIO_BUCKET: ${MINIO_BUCKET:-apartments-images}

      # JWT
      JWT_SECRET: ${JWT_SECRET:-Xv5s7JxGg9YhQwD8M1lA0VhG7yJrL6hE9F1N8KxV2bW3ZpQxUsyR7Cj4KsE8YfHd}

      # SSL/HTTPS
      SERVER_SSL_KEY_STORE: ${SSL_KEY_STORE:-classpath:keystore.p12}
      SERVER_SSL_KEY_STORE_PASSWORD: ${SSL_KEY_STORE_PASSWORD:-changeit}
      SERVER_SSL_KEY_STORE_TYPE: ${SSL_KEY_STORE_TYPE:-PKCS12}
      SERVER_SSL_KEY_ALIAS: ${SSL_KEY_ALIAS:-apartments}

      # Jaeger/OTLP
      OTLP_ENDPOINT: http://jaeger:4318

      # Email
      MAIL_USERNAME: ${MAIL_USERNAME}
      MAIL_PASSWORD: ${MAIL_PASSWORD}

    depends_on:
      mysql:
        condition: service_healthy
      minio:
        condition: service_healthy
      jaeger:
        condition: service_started
    networks:
      - app-network
    healthcheck:
      test: ["CMD", "curl", "-fk", "https://localhost:443/actuator/health"]
      interval: 30s
      timeout: 10s
      retries: 5
      start_period: 90s

volumes:
  mysql_data:
    driver: local
  minio_data:
    driver: local

networks:
  app-network:
    driver: bridge

Docker commands

docker compose -f oci://eloydsdlh/apartments-compose:fix-adjustment-report-BDFP-20260404-082455-2c139b4 up

Use the above command to pull and run the Compose file. Learn more.

Images used

Image + 1 more

MySQL is a widely used, open-source relational database management system (RDBMS).


Pulls

1B+

Stars

16185

Last Updated

4 days

Image

Single image that runs all of Jaeger backend components and UI in one container


Pulls

500M+

Stars

185

Last Updated

10 months

Image + 1 more


Pulls

2.7K

Stars

0

Last Updated

4 months