services: postgres: image: postgres:15 container_name: gemold_postgres environment: POSTGRES_DB: ${DB_NAME:-moldinsight} POSTGRES_USER: ${DB_USER:-moldinsight_user} POSTGRES_PASSWORD: ${DB_PASSWORD:-moldinsight_password} ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-moldinsight_user} -d ${DB_NAME:-moldinsight}"] interval: 10s timeout: 5s retries: 5 restart: unless-stopped networks: - gemold_network redis: image: redis:7-alpine container_name: gemold_redis ports: - "6379:6379" healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 restart: unless-stopped networks: - gemold_network minio: image: minio/minio:latest container_name: gemold_minio command: server /data --console-address ":9001" environment: MINIO_ROOT_USER: ${MINIO_ACCESS_KEY:-minioadmin} MINIO_ROOT_PASSWORD: ${MINIO_SECRET_KEY:-minioadmin} ports: - "9000:9000" - "9001:9001" volumes: - minio_data:/data healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 30s timeout: 20s retries: 3 restart: unless-stopped networks: - gemold_network moldinsight: build: context: .. dockerfile: deploy/Dockerfile.moldinsight image: gemold-moldinsight:latest container_name: gemold_moldinsight ports: - "${MOLDINSIGHT_PORT:-8000}:8000" environment: HOST: 0.0.0.0 PORT: "8000" DB_HOST: postgres DB_PORT: "5432" DB_NAME: ${DB_NAME:-moldinsight} DB_USER: ${DB_USER:-moldinsight_user} DB_PASSWORD: ${DB_PASSWORD:-moldinsight_password} REDIS_HOST: redis REDIS_PORT: "6379" REDIS_PASSWORD: ${REDIS_PASSWORD:-} RUSTFS_ENDPOINT: http://minio:9000 RUSTFS_ACCESS_KEY: ${MINIO_ACCESS_KEY:-minioadmin} RUSTFS_SECRET_KEY: ${MINIO_SECRET_KEY:-minioadmin} SECRET_KEY: ${SECRET_KEY:-change-me-in-production} ADMIN_USERNAME: ${ADMIN_USERNAME:-admin} ADMIN_PASSWORD: ${ADMIN_PASSWORD:-admin123} depends_on: postgres: condition: service_healthy redis: condition: service_healthy minio: condition: service_healthy restart: unless-stopped profiles: - full - moldinsight networks: - gemold_network moldinsight-celery: build: context: .. dockerfile: deploy/Dockerfile.celery container_name: gemold_celery environment: DB_HOST: postgres DB_PORT: "5432" DB_NAME: ${DB_NAME:-moldinsight} DB_USER: ${DB_USER:-moldinsight_user} DB_PASSWORD: ${DB_PASSWORD:-moldinsight_password} REDIS_HOST: redis REDIS_PORT: "6379" RUSTFS_ENDPOINT: http://minio:9000 RUSTFS_ACCESS_KEY: ${MINIO_ACCESS_KEY:-minioadmin} RUSTFS_SECRET_KEY: ${MINIO_SECRET_KEY:-minioadmin} depends_on: - moldinsight restart: unless-stopped profiles: - full - moldinsight networks: - gemold_network inventory: build: context: .. dockerfile: deploy/Dockerfile.inventory image: gemold-inventory:latest container_name: gemold_inventory ports: - "${INVENTORY_PORT:-8001}:8001" environment: HOST: 0.0.0.0 PORT: "8001" DB_HOST: postgres DB_PORT: "5432" DB_NAME: ${DB_NAME:-moldinsight} DB_USER: ${DB_USER:-moldinsight_user} DB_PASSWORD: ${DB_PASSWORD:-moldinsight_password} REDIS_HOST: redis REDIS_PORT: "6379" REDIS_PASSWORD: ${REDIS_PASSWORD:-} SECRET_KEY: ${SECRET_KEY:-change-me-in-production} ADMIN_USERNAME: ${ADMIN_USERNAME:-admin} ADMIN_PASSWORD: ${ADMIN_PASSWORD:-admin123} depends_on: postgres: condition: service_healthy redis: condition: service_healthy restart: unless-stopped profiles: - full - inventory networks: - gemold_network volumes: postgres_data: driver: local minio_data: driver: local networks: gemold_network: driver: bridge