Gravitee API Management Platform
Full API management with gateway, management API, and developer portal.
Overview
Gravitee API Management Platform is an open-source, full-featured API management solution that provides comprehensive API lifecycle management capabilities. Originally developed to address the complexity of modern API ecosystems, Gravitee offers a complete suite including an API gateway for traffic routing and policy enforcement, management APIs for configuration and administration, and a developer portal for API documentation and consumption. The platform has gained traction among organizations seeking an alternative to proprietary API management solutions while maintaining enterprise-grade features. This Docker stack combines Gravitee's core components with MongoDB for configuration and user data storage, plus Elasticsearch for analytics and logging. The gravitee-gateway handles API traffic routing, rate limiting, and security policies, while gravitee-management provides the REST APIs for administrative functions. The gravitee-console offers a web-based administrative interface, and gravitee-portal delivers a self-service developer experience for API discovery and consumption. MongoDB stores API definitions, user accounts, application registrations, and subscription data, while Elasticsearch powers the analytics dashboard, API usage metrics, and log aggregation. This combination creates a powerful API management platform suitable for organizations transitioning from monolithic architectures to microservices, companies building API-first products, or enterprises needing centralized API governance and security policies across distributed teams and services.
Key Features
- API gateway with request/response transformation, routing policies, and traffic shaping capabilities
- Built-in rate limiting and quota management with MongoDB persistence for distributed enforcement
- OAuth2, JWT, API key authentication with customizable security policies per API endpoint
- Real-time API analytics and usage dashboards powered by Elasticsearch aggregations
- Developer portal with interactive API documentation, subscription management, and application registration
- Policy studio for creating custom request/response flows using drag-and-drop interface
- Multi-tenant organization support with role-based access control and environment separation
- API versioning and lifecycle management with deployment promotion workflows
Common Use Cases
- 1Enterprise API gateway for microservices architecture with centralized security and monitoring
- 2Public API monetization platform with developer onboarding and subscription management
- 3Internal API governance for large organizations with multiple development teams
- 4Legacy system modernization with API abstraction layer and gradual migration support
- 5Partner ecosystem management with controlled API access and usage analytics
- 6Regulatory compliance scenarios requiring detailed API audit trails and access logging
- 7Multi-cloud API strategy with consistent policy enforcement across environments
Prerequisites
- Docker host with minimum 6GB RAM (2GB for Elasticsearch, 2GB for Gravitee components, 2GB for system)
- Available ports 8082-8085 for Gravitee services and 9200, 27017 for data stores
- MONGO_PASSWORD environment variable configured for MongoDB authentication
- Basic understanding of API management concepts like policies, plans, and applications
- Network connectivity for Gravitee license validation and plugin downloads
- SSD storage recommended for Elasticsearch performance and MongoDB operations
For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms
docker-compose.yml
docker-compose.yml
1services: 2 mongodb: 3 image: mongo:64 environment: 5 MONGO_INITDB_ROOT_USERNAME: admin6 MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASSWORD}7 volumes: 8 - mongo_data:/data/db9 networks: 10 - gravitee_net1112 elasticsearch: 13 image: docker.elastic.co/elasticsearch/elasticsearch:8.11.014 environment: 15 - discovery.type=single-node16 - xpack.security.enabled=false17 - "ES_JAVA_OPTS=-Xms512m -Xmx512m"18 volumes: 19 - es_data:/usr/share/elasticsearch/data20 networks: 21 - gravitee_net2223 gravitee-gateway: 24 image: graviteeio/apim-gateway:latest25 ports: 26 - "8082:8082"27 environment: 28 - gravitee_management_mongodb_uri=mongodb://admin:${MONGO_PASSWORD}@mongodb:27017/gravitee?authSource=admin29 - gravitee_ratelimit_mongodb_uri=mongodb://admin:${MONGO_PASSWORD}@mongodb:27017/gravitee?authSource=admin30 - gravitee_reporters_elasticsearch_endpoints_0=http://elasticsearch:920031 depends_on: 32 - mongodb33 - elasticsearch34 networks: 35 - gravitee_net3637 gravitee-management: 38 image: graviteeio/apim-management-api:latest39 ports: 40 - "8083:8083"41 environment: 42 - gravitee_management_mongodb_uri=mongodb://admin:${MONGO_PASSWORD}@mongodb:27017/gravitee?authSource=admin43 - gravitee_analytics_elasticsearch_endpoints_0=http://elasticsearch:920044 depends_on: 45 - mongodb46 - elasticsearch47 networks: 48 - gravitee_net4950 gravitee-console: 51 image: graviteeio/apim-management-ui:latest52 ports: 53 - "8084:8080"54 environment: 55 - MGMT_API_URL=http://localhost:8083/management/organizations/DEFAULT/environments/DEFAULT/56 depends_on: 57 - gravitee-management58 networks: 59 - gravitee_net6061 gravitee-portal: 62 image: graviteeio/apim-portal-ui:latest63 ports: 64 - "8085:8080"65 environment: 66 - PORTAL_API_URL=http://localhost:8083/portal/environments/DEFAULT67 depends_on: 68 - gravitee-management69 networks: 70 - gravitee_net7172volumes: 73 mongo_data: 74 es_data: 7576networks: 77 gravitee_net: .env Template
.env
1# Gravitee APIM2MONGO_PASSWORD=secure_mongo_password34# Gateway at http://localhost:80825# Console at http://localhost:80846# Portal at http://localhost:80857# Default: admin/adminUsage Notes
- 1Gateway at http://localhost:8082
- 2Admin Console at http://localhost:8084
- 3Developer Portal at http://localhost:8085
- 4Default credentials: admin/admin
- 5Full API lifecycle management
Individual Services(6 services)
Copy individual services to mix and match with your existing compose files.
mongodb
mongodb:
image: mongo:6
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASSWORD}
volumes:
- mongo_data:/data/db
networks:
- gravitee_net
elasticsearch
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.11.0
environment:
- discovery.type=single-node
- xpack.security.enabled=false
- ES_JAVA_OPTS=-Xms512m -Xmx512m
volumes:
- es_data:/usr/share/elasticsearch/data
networks:
- gravitee_net
gravitee-gateway
gravitee-gateway:
image: graviteeio/apim-gateway:latest
ports:
- "8082:8082"
environment:
- gravitee_management_mongodb_uri=mongodb://admin:${MONGO_PASSWORD}@mongodb:27017/gravitee?authSource=admin
- gravitee_ratelimit_mongodb_uri=mongodb://admin:${MONGO_PASSWORD}@mongodb:27017/gravitee?authSource=admin
- gravitee_reporters_elasticsearch_endpoints_0=http://elasticsearch:9200
depends_on:
- mongodb
- elasticsearch
networks:
- gravitee_net
gravitee-management
gravitee-management:
image: graviteeio/apim-management-api:latest
ports:
- "8083:8083"
environment:
- gravitee_management_mongodb_uri=mongodb://admin:${MONGO_PASSWORD}@mongodb:27017/gravitee?authSource=admin
- gravitee_analytics_elasticsearch_endpoints_0=http://elasticsearch:9200
depends_on:
- mongodb
- elasticsearch
networks:
- gravitee_net
gravitee-console
gravitee-console:
image: graviteeio/apim-management-ui:latest
ports:
- "8084:8080"
environment:
- MGMT_API_URL=http://localhost:8083/management/organizations/DEFAULT/environments/DEFAULT/
depends_on:
- gravitee-management
networks:
- gravitee_net
gravitee-portal
gravitee-portal:
image: graviteeio/apim-portal-ui:latest
ports:
- "8085:8080"
environment:
- PORTAL_API_URL=http://localhost:8083/portal/environments/DEFAULT
depends_on:
- gravitee-management
networks:
- gravitee_net
Quick Start
terminal
1# 1. Create the compose file2cat > docker-compose.yml << 'EOF'3services:4 mongodb:5 image: mongo:66 environment:7 MONGO_INITDB_ROOT_USERNAME: admin8 MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASSWORD}9 volumes:10 - mongo_data:/data/db11 networks:12 - gravitee_net1314 elasticsearch:15 image: docker.elastic.co/elasticsearch/elasticsearch:8.11.016 environment:17 - discovery.type=single-node18 - xpack.security.enabled=false19 - "ES_JAVA_OPTS=-Xms512m -Xmx512m"20 volumes:21 - es_data:/usr/share/elasticsearch/data22 networks:23 - gravitee_net2425 gravitee-gateway:26 image: graviteeio/apim-gateway:latest27 ports:28 - "8082:8082"29 environment:30 - gravitee_management_mongodb_uri=mongodb://admin:${MONGO_PASSWORD}@mongodb:27017/gravitee?authSource=admin31 - gravitee_ratelimit_mongodb_uri=mongodb://admin:${MONGO_PASSWORD}@mongodb:27017/gravitee?authSource=admin32 - gravitee_reporters_elasticsearch_endpoints_0=http://elasticsearch:920033 depends_on:34 - mongodb35 - elasticsearch36 networks:37 - gravitee_net3839 gravitee-management:40 image: graviteeio/apim-management-api:latest41 ports:42 - "8083:8083"43 environment:44 - gravitee_management_mongodb_uri=mongodb://admin:${MONGO_PASSWORD}@mongodb:27017/gravitee?authSource=admin45 - gravitee_analytics_elasticsearch_endpoints_0=http://elasticsearch:920046 depends_on:47 - mongodb48 - elasticsearch49 networks:50 - gravitee_net5152 gravitee-console:53 image: graviteeio/apim-management-ui:latest54 ports:55 - "8084:8080"56 environment:57 - MGMT_API_URL=http://localhost:8083/management/organizations/DEFAULT/environments/DEFAULT/58 depends_on:59 - gravitee-management60 networks:61 - gravitee_net6263 gravitee-portal:64 image: graviteeio/apim-portal-ui:latest65 ports:66 - "8085:8080"67 environment:68 - PORTAL_API_URL=http://localhost:8083/portal/environments/DEFAULT69 depends_on:70 - gravitee-management71 networks:72 - gravitee_net7374volumes:75 mongo_data:76 es_data:7778networks:79 gravitee_net:80EOF8182# 2. Create the .env file83cat > .env << 'EOF'84# Gravitee APIM85MONGO_PASSWORD=secure_mongo_password8687# Gateway at http://localhost:808288# Console at http://localhost:808489# Portal at http://localhost:808590# Default: admin/admin91EOF9293# 3. Start the services94docker compose up -d9596# 4. View logs97docker compose logs -fOne-Liner
Run this command to download and set up the recipe in one step:
terminal
1curl -fsSL https://docker.recipes/api/recipes/gravitee-apim/run | bashTroubleshooting
- Gravitee Gateway returns 500 errors: Verify MongoDB connection string includes authSource=admin parameter
- Management Console shows 'Cannot connect to Management API': Ensure MGMT_API_URL uses localhost not container name for browser access
- Elasticsearch cluster health red: Increase vm.max_map_count on Docker host with 'sysctl -w vm.max_map_count=262144'
- Portal UI displays API documentation incorrectly: Check PORTAL_API_URL environment variable matches management API external URL
- MongoDB authentication failures: Confirm MONGO_PASSWORD environment variable matches across all Gravitee services
- Gateway policies not applying: Restart gravitee-gateway after policy changes and verify MongoDB connectivity for policy synchronization
Community Notes
Loading...
Loading notes...
Download Recipe Kit
Get all files in a ready-to-deploy package
Includes docker-compose.yml, .env template, README, and license
Components
gravitee-gatewaygravitee-managementgravitee-portalmongodbelasticsearch
Tags
#gravitee#api-management#portal#gateway#analytics
Category
DevOps & CI/CDAd Space
Shortcuts: C CopyF FavoriteD Download