{"owner":"prowler-cloud","repo":"prowler","hasDocker":true,"hasCompose":true,"hasDockerfile":false,"composePath":"docker-compose.yml","servicesCount":9,"services":[{"name":"api-init","image":"busybox:1.37.0@sha256:9532d8c39891ca2ecde4d30d7710e01fb739c87a8b9299685c63704296b16028","restart":"no","command":"sh -c chown -R 1000:1000 /data","volumes":["./_data/api:/data"]},{"name":"api","image":"prowlercloud/prowler-api:${PROWLER_API_VERSION:-stable}","restart":"unless-stopped","ports":["${DJANGO_PORT:-8080}:${DJANGO_PORT:-8080}"],"volumes":["./_data/api:/home/prowler/.config/prowler-api","output:/tmp/prowler_api_output"],"depends_on":["api-init","postgres","valkey","neo4j"]},{"name":"ui","image":"prowlercloud/prowler-ui:${PROWLER_UI_VERSION:-stable}","restart":"unless-stopped","ports":["${UI_PORT:-3000}:3000"],"depends_on":["mcp-server"]},{"name":"postgres","image":"postgres:16-alpine@sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777","restart":"unless-stopped","ports":["${POSTGRES_PORT:-5432}:${POSTGRES_PORT:-5432}"],"environment":["POSTGRES_USER=${POSTGRES_ADMIN_USER}","POSTGRES_PASSWORD=${POSTGRES_ADMIN_PASSWORD}","POSTGRES_DB=${POSTGRES_DB}"],"volumes":["./_data/postgres:/var/lib/postgresql/data"]},{"name":"valkey","image":"valkey/valkey:8-alpine@sha256:a038175878d66b9d274fbf8be73c0305e93798b83917647f167e18cef3c71eec","restart":"unless-stopped","ports":["${VALKEY_PORT:-6379}:6379"],"volumes":["./_data/valkey:/data"]},{"name":"neo4j","image":"graphstack/dozerdb:5.26.27.0@sha256:9b54d6b3a98a76c00bd23e8e78d8c82081ff168162aebd47b25c234e092cb0a0","restart":"unless-stopped","ports":["${NEO4J_PORT:-7687}:7687"],"environment":["NEO4J_AUTH=${NEO4J_USER}/${NEO4J_PASSWORD}","NEO4J_dbms_max__databases=${NEO4J_DBMS_MAX__DATABASES:-1000}","NEO4J_server_memory_pagecache_size=${NEO4J_SERVER_MEMORY_PAGECACHE_SIZE:-1G}","NEO4J_server_memory_heap_initial__size=${NEO4J_SERVER_MEMORY_HEAP_INITIAL__SIZE:-1G}","NEO4J_server_memory_heap_max__size=${NEO4J_SERVER_MEMORY_HEAP_MAX__SIZE:-1G}","NEO4J_PLUGINS=${NEO4J_PLUGINS:-[\"apoc\"]}","NEO4J_dbms_security_procedures_allowlist=${NEO4J_DBMS_SECURITY_PROCEDURES_ALLOWLIST:-apoc.*}","NEO4J_dbms_security_procedures_unrestricted=${NEO4J_DBMS_SECURITY_PROCEDURES_UNRESTRICTED:-}","apoc.export.file.enabled=${NEO4J_APOC_EXPORT_FILE_ENABLED:-false}","apoc.import.file.enabled=${NEO4J_APOC_IMPORT_FILE_ENABLED:-false}","apoc.import.file.use_neo4j_config=${NEO4J_APOC_IMPORT_FILE_USE_NEO4J_CONFIG:-true}","apoc.trigger.enabled=${NEO4J_APOC_TRIGGER_ENABLED:-false}","dbms.connector.bolt.listen_address=${NEO4J_DBMS_CONNECTOR_BOLT_LISTEN_ADDRESS:-0.0.0.0:7687}"],"volumes":["./_data/neo4j:/data"]},{"name":"worker","image":"prowlercloud/prowler-api:${PROWLER_API_VERSION:-stable}","restart":"unless-stopped","volumes":["output:/tmp/prowler_api_output"],"depends_on":["api"]},{"name":"worker-beat","image":"prowlercloud/prowler-api:${PROWLER_API_VERSION:-stable}","restart":"unless-stopped","depends_on":["api"]},{"name":"mcp-server","image":"prowlercloud/prowler-mcp:${PROWLER_MCP_VERSION:-stable}","restart":"unless-stopped","command":"uvicorn --host 0.0.0.0 --port 8000","ports":["8000:8000"],"environment":["PROWLER_MCP_TRANSPORT_MODE=http"]}],"exposedPorts":["3000","6379","7687","8000"],"dockerRunCommand":"docker run -d --name prowler -p 3000:3000 --restart always postgres:16-alpine@sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777","podmanRunCommand":"podman run -d --name prowler -p 3000:3000 --restart always postgres:16-alpine@sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777","skopeoInspectCommand":"skopeo inspect docker://docker.io/library/postgres:16-alpine@sha256","orasPullCommand":"oras pull postgres:16-alpine@sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777","registryMeta":{"provider":"dockerhub","image":"library/postgres","canonicalImage":"docker.io/library/postgres:16-alpine@sha256","latestTag":"16-alpine@sha256","cliCommands":{"dockerRun":"docker run -d --name prowler -p 3000:3000 --restart always postgres:16-alpine@sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777","dockerPull":"docker pull postgres:16-alpine@sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777","podmanRun":"podman run -d --name prowler -p 3000:3000 --restart always postgres:16-alpine@sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777","skopeoInspect":"skopeo inspect docker://docker.io/library/postgres:16-alpine@sha256","orasPull":"oras pull postgres:16-alpine@sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777","composeYaml":"services:\n  prowler:\n    image: postgres:16-alpine@sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777\n    restart: unless-stopped\n    ports:\n      - \"3000:3000\""}}}