services: ircfa-app: build: context: . dockerfile: Dockerfile container_name: digitaltwin_ircfa working_dir: /app restart: always ports: - "3025:3021" environment: - ENV=development - LOG_LEVEL=INFO - PORT=3021 - HOST=0.0.0.0 - DATABASE_HOSTNAME=192.168.1.85 - DATABASE_PORT=5432 - DATABASE_CREDENTIAL_USER=postgres - DATABASE_CREDENTIAL_PASSWORD=postgres - DATABASE_NAME=digital_twin - COLLECTOR_HOSTNAME=192.168.1.86 - COLLECTOR_PORT=5432 - COLLECTOR_CREDENTIAL_USER=postgres - COLLECTOR_CREDENTIAL_PASSWORD=postgres - COLLECTOR_NAME=digital_twin - PFI_API_URL=http://192.168.1.82:8000/pfi/api/v1 - RP_API_URL=http://192.168.1.82:8000/reliability - PLANT_STATUS_URL=http://192.168.1.82:8000/monitoring/plant-status - WINDOWS_AEROS_BASE_URL=http://192.168.1.87:8800 - MODEL_SERVER_URL="https://dev-new-kong.air.id/dev-poc-its/v1" - OLLAMA_BASE_URL=http://192.168.1.100:11434 - OLLAMA_MODEL_NAME=qwen3:8b - VLLM_BASE_URL=http://192.168.1.100:8020/v1 - VLLM_MODEL_NAME=/models/qwen_6_std command: make run volumes: - ./src/uploads:/app/src/uploads kong: image: kong/kong-gateway:3.7.1.2 container_name: kong-dbless restart: always environment: - KONG_DATABASE=off - KONG_DECLARATIVE_CONFIG=/kong/declarative/kong.yml - KONG_PROXY_ACCESS_LOG=/dev/stdout - KONG_ADMIN_ACCESS_LOG=/dev/stdout - KONG_PROXY_ERROR_LOG=/dev/stderr - KONG_ADMIN_ERROR_LOG=/dev/stderr - KONG_ADMIN_LISTEN=0.0.0.0:8001 - KONG_ADMIN_GUI_URL=http://192.168.1.100:8002 - KONG_LICENSE_DATA - KONG_NGINX_PROXY_PROXY_REQUEST_BUFFERING=off ports: - "8000:8000" - "8443:8443" - "8001:8001" - "8444:8444" - "8010:8002" - "8445:8445" - "8003:8003" - "8004:8004" volumes: - .:/kong/declarative # Volume mount for declarative config # Use the code below to apply the vllm service # --reasoning_parser deepseek-r1 vllm: image: vllm/vllm-openai:latest runtime: nvidia environment: - CUDA_VISIBLE_DEVICES=0,1 - VLLM_LOG_LEVEL=INFO volumes: - /mnt/data_backup/models:/models ports: - "8020:8000" ipc: host command: > --model "Qwen/Qwen3-30B-A3B-Instruct-2507-FP8" --dtype float16 --tensor-parallel-size 2 --max-model-len 16382 --max-num-batched-tokens 3072 --max-num-seqs 64 --enforce-eager --trust-remote-code true --enable_prefix_caching true llama-cpp: image: ghcr.io/ggml-org/llama.cpp:server-cuda container_name: llama-cpp-server restart: unless-stopped mem_limit: 40g memswap_limit: 40g oom_kill_disable: false oom_score_adj: 100 ports: - "8087:8087" volumes: - /mnt/data_backup/model-qwen:/data:ro # Using environment variables for easy model swapping and parameter tuning command: > -m /data/Qwen3-30B-A3B-Q4_K_M.gguf --reasoning off -ngl ${LLAMA_CPP_N_GPU_LAYERS:-99} -c ${LLAMA_CPP_CTX_SIZE:-131072} -t ${LLAMA_CPP_THREADS:-8} -b ${LLAMA_CPP_BATCH_SIZE:-2048} -ub ${LLAMA_CPP_UBATCH_SIZE:-512} --temp 0 --top-k 20 --top-p 0.95 --min-p 0 -fa on -sm row --rope-scaling ${LLAMA_CPP_ROPE_SCALING:-yarn} --rope-scale ${LLAMA_CPP_ROPE_SCALE:-4} --yarn-orig-ctx ${LLAMA_CPP_YARN_ORIG_CTX:-32768} --no-context-shift --host 0.0.0.0 --port 8087 healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8087/health"] interval: 30s timeout: 5s retries: 3 start_period: 10s deploy: resources: reservations: devices: - driver: nvidia capabilities: [gpu] device_ids: ['all'] vllm-gemma: image: vllm/vllm-openai:latest runtime: nvidia container_name: vllm-gemma-4 environment: - CUDA_VISIBLE_DEVICES=0,1 - VLLM_LOG_LEVEL=INFO - HF_TOKEN=${HF_TOKEN} volumes: - /mnt/data_backup/models:/root/.cache/huggingface ports: - "8021:8000" ipc: host command: > --model "unsloth/gemma-4-E2B-it" --tensor-parallel-size 2 --max-model-len 8192 --gpu-memory-utilization 0.90 llamacpp-gemma: image: ghcr.io/ggml-org/llama.cpp:server-cuda container_name: llamacpp-gemma-4 restart: unless-stopped mem_limit: 40g memswap_limit: 40g oom_kill_disable: false oom_score_adj: 100 ports: - "8088:8087" volumes: - /mnt/data_backup/models:/data:ro command: > -m /data/gemma-4-26B-A4B-it-UD-Q4_K_M.gguf --mmproj /data/mmproj-BF16.gguf --reasoning off -ngl ${LLAMA_CPP_N_GPU_LAYERS:-99} -c ${LLAMA_CPP_CTX_SIZE:-196608} -t ${LLAMA_CPP_THREADS:-8} -b ${LLAMA_CPP_BATCH_SIZE:-2048} -ub ${LLAMA_CPP_UBATCH_SIZE:-512} --temp 0 --top-k 20 --top-p 0.95 --min-p 0 -fa on -sm layer --rope-scaling yarn --rope-scale 1.5 --yarn-orig-ctx 131072 --no-context-shift --host 0.0.0.0 --port 8087 healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8087/health"] interval: 30s timeout: 5s retries: 3 start_period: 10s deploy: resources: reservations: devices: - driver: nvidia capabilities: [gpu] device_ids: ['all'] # --- ALTERNATIVE GEMMA 4 MODELS FOR TESTING AND COMPARISON --- # Uncomment the service you wish to test. Ensure you have downloaded the corresponding GGUF file. # 1. Gemma 4 E4B (4B parameters, ~7.6GB Q8_0, highly efficient, runs on GPU 0) # llamacpp-gemma-e4b: # image: ghcr.io/ggml-org/llama.cpp:server-cuda # container_name: llamacpp-gemma-e4b # restart: unless-stopped # ports: # - "8088:8087" # Maps to 8088 (same port as standard gemma service) # volumes: # - /mnt/data_backup/models:/data:ro # environment: # - CUDA_VISIBLE_DEVICES=0 # command: > # -m /data/gemma-4-E4B-it-Q8_0.gguf # --host 0.0.0.0 # --port 8087 # -ngl 99 # -c 8192 # --parallel 1 # --temp 0.15 # --reasoning off # healthcheck: # test: ["CMD", "curl", "-f", "http://localhost:8087/health"] # interval: 30s # timeout: 5s # retries: 3 # start_period: 10s # deploy: # resources: # reservations: # devices: # - driver: nvidia # capabilities: [gpu] # device_ids: ['0'] # 2. Gemma 4 26B (26B parameters, ~15.8GB UD-Q4_K_M, runs on GPU 1 to balance load) # llamacpp-gemma-26b: # image: ghcr.io/ggml-org/llama.cpp:server-cuda # container_name: llamacpp-gemma-26b # restart: unless-stopped # ports: # - "8089:8087" # Runs on port 8089 # volumes: # - /mnt/data_backup/models:/data:ro # environment: # - CUDA_VISIBLE_DEVICES=1 # command: > # -m /data/gemma-4-26B-A4B-it-UD-Q4_K_M.gguf # --host 0.0.0.0 # --port 8087 # -ngl ${LLAMA_CPP_N_GPU_LAYERS:-99} # -c ${LLAMA_CPP_CTX_SIZE:-131072} # -t ${LLAMA_CPP_THREADS:-8} # -b ${LLAMA_CPP_BATCH_SIZE:-2048} # -ub ${LLAMA_CPP_UBATCH_SIZE:-512} # --parallel 1 # --temp 0.15 # -sm layer # --reasoning off # healthcheck: # test: ["CMD", "curl", "-f", "http://localhost:8087/health"] # interval: 30s # timeout: 5s # retries: 3 # start_period: 10s # deploy: # resources: # reservations: # devices: # - driver: nvidia # capabilities: [gpu] # device_ids: ['1'] # 3. Gemma 4 31B (31B parameters, ~17GB UD-Q4_K_M, runs on GPU 1) # llamacpp-gemma-31b: # image: ghcr.io/ggml-org/llama.cpp:server-cuda # container_name: llamacpp-gemma-31b # restart: unless-stopped # ports: # - "8090:8087" # Runs on port 8090 # volumes: # - /mnt/data_backup/models:/data:ro # environment: # - CUDA_VISIBLE_DEVICES=1 # command: > # -m /data/gemma-4-31B-it-Q4_K_M.gguf # --host 0.0.0.0 # --port 8087 # -ngl ${LLAMA_CPP_N_GPU_LAYERS:-99} # -c ${LLAMA_CPP_CTX_SIZE:-131072} # -t ${LLAMA_CPP_THREADS:-8} # -b ${LLAMA_CPP_BATCH_SIZE:-2048} # -ub ${LLAMA_CPP_UBATCH_SIZE:-512} # --parallel 1 # --temp 0.15 # --reasoning off # --rope-scaling ${LLAMA_CPP_ROPE_SCALING:-yarn} # --rope-scale ${LLAMA_CPP_ROPE_SCALE:-4} # --yarn-orig-ctx ${LLAMA_CPP_YARN_ORIG_CTX:-32768} # healthcheck: # test: ["CMD", "curl", "-f", "http://localhost:8087/health"] # interval: 30s # timeout: 5s # retries: 3 # start_period: 10s # deploy: # resources: # reservations: # devices: # - driver: nvidia # capabilities: [gpu] # device_ids: ['1']