Gravitee.io 是一个相对比较完整的api gateway 平台,包含了api 相对比较完整的生命周期管理
同时在访问控制以及日志监控上也做的比较好,是一款可以尝试试用的api gateway 平台

环境准备

  • docker-compose 文件
 
version: '3'
networks:
  default:
services:
  nginx:
    image: nginx:1.15-alpine
    container_name: gio_platform_nginx
    restart: always
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/ssl/gio-selfsigned.crt:/etc/ssl/certs/gio-selfsigned.crt
      - ./nginx/ssl/gio-selfsigned.key:/etc/ssl/private/gio-selfsigned.key
      - ./nginx/ssl/gio.pem:/etc/ssl/certs/gio.pem
    ports:
      - "80:80"
      - "443:443"
    depends_on:
      - apim_gateway
      - apim_portal
      - apim_management
      - am_gateway
      - am_management
      - am_webui
  mongodb:
    image: mongo:3.4
    restart: always
    container_name: gio_platform_mongo
    ports:
      - 27017:27017
    environment:
      - MONGO_INITDB_DATABASE=gravitee
    volumes:
      - ./mongo/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
      - ./data/mongo:/data/db
      - ./logs/mongodb:/var/log/mongodb
  elasticsearch:
    image: elasticsearch:6.4.0
    container_name: gio_platform_elasticsearch
    restart: always
    ports:
      - 9200:9200
    environment:
      - http.host=0.0.0.0
      - transport.host=0.0.0.0
      - xpack.security.enabled=false
      - xpack.monitoring.enabled=false
      - cluster.name=elasticsearch
    ulimits:
      nofile: 65536
    volumes:
      - ./data/elasticsearch:/usr/share/elasticsearch/data
      - ./logs/elasticsearch:/var/log/elasticsearch
  apim_gateway:
    image: graviteeio/gateway:latest
    container_name: gio_platform_apim_gateway
    restart: always
    volumes: 
      - ./logs/apim-gateway:/opt/graviteeio-gateway/logs
    environment:
      - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
      - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
      - gravitee_reporters_elasticsearch_endpoints_0=http://elasticsearch:9200
    depends_on:
      - mongodb
      - elasticsearch
  apim_portal:
    image: graviteeio/management-ui:latest
    container_name: gio_platform_apim_portal
    restart: always
    environment:
      - MGMT_API_URL=https:\/\/localhost\/apim\/management\/
    depends_on:
      - apim_management
  apim_management:
    image: graviteeio/management-api:latest
    container_name: gio_platform_apim_mgmt_api
    restart: always
    volumes:
      - ./logs/apim-management-api:/opt/graviteeio-management-api/logs
    environment:
      - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
      - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
      - gravitee_analytics_elasticsearch_endpoints_0=http://elasticsearch:9200
      - gravitee_jwt_cookiepath=/apim/management
      - gravitee_jwt_cookiesecure=true
    depends_on:
      - mongodb
      - elasticsearch
  am_gateway:
    image: graviteeio/am-gateway:2
    container_name: gio_platform_am_gateway
    restart: always
    volumes:
      - ./logs/am-gateway:/opt/graviteeio-am-gateway/logs
    environment:
      - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee-am?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
      - gravitee_oauth2_mongodb_uri=mongodb://mongodb:27017/gravitee-am?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
    depends_on:
      - mongodb
  am_management:
    image: graviteeio/am-management-api:2
    container_name: gio_platform_am_management
    restart: always
    volumes:
      - ./logs/am-management-api:/opt/graviteeio-am-management-api/logs
    environment:
      - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee-am?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
      - gravitee_oauth2_mongodb_uri=mongodb://mongodb:27017/gravitee-am?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
      - gravitee_jwt_cookiepath=/am/management
      - gravitee_jwt_cookiesecure=true
    depends_on:
      - mongodb
  am_webui:
    image: graviteeio/am-management-ui:2
    container_name: gio_platform_am_webui
    restart: always
    environment:
      - MGMT_API_URL=https:\/\/localhost\/am\/
      - MGMT_UI_URL=https:\/\/localhost\/am\/ui\/
    volumes:
      - ./logs/am-webui:/var/log/nginx
    depends_on:
      - am_management
 
 
  • 简单说明
    docker compose 文件包含了api gateway 以及访问管理以及日志的基础组件,访问入口通过nginx,同时官方
    也提供了一个基于trafic 的demo,也挺不错
    nginx.conf 主要是proxy 的配置,同时添加了https 证书的处理(自签名的),nginx 配置文件处理了对于重定向
    的配置,好多配置对于我们来说还是有借鉴意义的。
    因为使用了mongo 所以在初始化数据库的时候进行了一些索引的创建,详细的配置可以参考github

运行

  • 运行
 
docker-compose up -d
 

UI 效果 账户admin admin

访问控制管理UI 账户 admin adminadmin

试用

  • 创建api


中间的一些步骤按照提示操作即可

同时可以需要进行api 的发布以及启动,界面上还是很全的,直接参考提示操作即可

  • 使用api

需要创建app

然后需要创建api 的订阅,我们可以进行审核处理

说明

Gravitee.io 对于api 的管理功能比较全,后边会写一些关于如果使用的简单demo

参考资料

https://docs.gravitee.io/apim_quickstart_publish.html
https://docs.gravitee.io/apim_quickstart_consume.html
https://github.com/gravitee-io/gravitee-docker

Gravitee.io docker-compose运行的更多相关文章

  1. dotnet跨平台 - 使用Nginx+Docker Compose运行.NETCore项目

    参考文档: https://docs.docker.com/install/linux/docker-ce/centos/ http://www.dockerinfo.net/document htt ...

  2. .NET遇上Docker - 使用Docker Compose组织Ngnix和.NETCore运行

    本文工具准备: Docker for Windows Visual Studio 2015 与 Visual Studio Tools for Docker 或 Visual Studio 2017 ...

  3. Docker深入浅出系列 | Docker Compose多容器实战

    目录 前期准备 Docker Compose是什么 为什么要用Docker Compose Docker Compose使用场景 Docker Compose安装 Compose Yaml文件结构 C ...

  4. Docker 容器编排利器 Docker Compose

    Compose 简介 通过前面几篇文章的学习,我们可以通过 Dockerfile 文件让用户很方便的定义一个单独的应用容器.然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况,例如 ...

  5. Docker小白到实战之Docker Compose在手,一键足矣

    前言 Docker可以将应用程序及环境很方便的以容器的形式启动,但当应用程序依赖的服务比较多,或是遇到一个大系统拆分的服务很多时,如果还一个一个的根据镜像启动容器,那就有点累人了,到这有很多小伙伴会说 ...

  6. Docker Compose 容器编排 NET Core 6+MySQL 8+Nginx + Redis

    环境: CentOS 8.5.2111Docker 20.10.10Docker-Compose 2.1.0 服务: db  redis  web nginx NET Core 6+MySQL 8+N ...

  7. Docker从入门到精通(八)——Docker Compose

    恭喜大家,学到这里,对于 docker 的基础玩法大家应该都会了,下面会介绍 docker的一些编排工具. 1.为什么需要 Docker Compose? 官网镇楼:https://www.runoo ...

  8. docker Compose 部署springboot+vue前端端分离项目

    温馨提示:如果有自己的服务器最好不过了,这样部署网项目就可以上线了.没有的话,只能使用localhost 本机访问啦,记得替换 ngixn 中的ip地址.域名为localhost. (一) 准备工作 ...

  9. Docker:Docker Compose 详解

    Docker Compose 概述与安装? 前面我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build.docker run 等命令操作容器.然而微服务架 ...

  10. 使用 pycharm调试docker环境运行的Odoo

    2019日 星期一 安装docker windows系统,参考 docker官方文档 Mac系统,参考 docker官方文档 构建自定义ODOO镜像 标准ODOO镜像可能不包含特别的python模块, ...

随机推荐

  1. Linux查看当前使用的网卡 以及 查看某进程使用的网络带宽情况 以及 端口占用的情况

    一:Linux查看当前使用的网卡          ifconfig命令可以查看当前linux 系统有多少个网卡. [app@p2-app2 ~]$ ifconfig br-2e5b046a02d5: ...

  2. Log4j 日志记录

    关于Log4j的简单示例 <!--手动配置log4j.properties文件内容:-->1 #level:debug/info/warn/error log4j.rootLogger=O ...

  3. 卷积神经网络-Dropout

    dropout 是神经网络用来防止过拟合的一种方法,很简单,但是很实用. 基本思想是以一定概率放弃被激活的神经元,使得模型更健壮,相当于放弃一些特征,这使得模型不过分依赖于某些特征,即使这些特征是真实 ...

  4. Linux文件系统命令 cd

    命令名:cd 功能:切换到某一个目录,后面可以跟相对路径和绝对路径. eg:cd /etc/ 表示的是进入到/etc/目录下 另外几个比较特俗的用法: cd - 切换到当前目录 cd ./ 还是当前路 ...

  5. phpexcel 的使用

    首先到phpexcel官网上下载最新的phpexcel类,下周解压缩一个classes文件夹,里面包含了PHPExcel.php和PHPExcel的文件夹,这个类文件和文件夹是我们需要的,把class ...

  6. 团队-团队编程项目爬取豆瓣电影top250-代码设计规范

    1.类名使用首字母大写(骆驼命名法) 2.函数名应该为小写 3.用下划线开头定义私有的属性或方法 4.命名要使用有意义的,英文单词或词组 5.行尾不加分号 6.4个空格缩进代码 7.操作运算符注意优先 ...

  7. dd 命令的使用

    linux 下dd命令直接清除分区表(不用再fdisk一个一个的删除啦) 分区表是硬盘的分区信息,要删除一个硬盘的所有分区表很麻烦的,需要fdisk一个一个的删除,其实dd命令可直接清除分区信息,当然 ...

  8. Python 类方法

    class Person: # 实例方法 def chi(self): print("人会吃") @classmethod # 装饰器, 此时这个方法是一个类方法 def he(c ...

  9. POJ 2234 Matches Game(Nim博弈裸题)

    Description Here is a simple game. In this game, there are several piles of matches and two players. ...

  10. Semaphore计数信号量

    ExecutorService exec = Executors.newCachedThreadPool(); final Semaphore semp = new Semaphore(5); for ...