From 8ee4b026326a61ab0ccf22634eacbbbfbfaaf678 Mon Sep 17 00:00:00 2001 From: Vincenzo Chianese Date: Tue, 6 Feb 2018 18:47:10 +0100 Subject: [PATCH] Add express-gateway docs --- express-gateway/README-short.txt | 1 + express-gateway/content.md | 61 +++++++++++++++++++++++++++++++ express-gateway/github-repo | 1 + express-gateway/license.md | 1 + express-gateway/logo.png | Bin 0 -> 38611 bytes 5 files changed, 64 insertions(+) create mode 100644 express-gateway/README-short.txt create mode 100644 express-gateway/content.md create mode 100644 express-gateway/github-repo create mode 100644 express-gateway/license.md create mode 100644 express-gateway/logo.png diff --git a/express-gateway/README-short.txt b/express-gateway/README-short.txt new file mode 100644 index 000000000..23bf65d69 --- /dev/null +++ b/express-gateway/README-short.txt @@ -0,0 +1 @@ +The official release of Express-Gateway. diff --git a/express-gateway/content.md b/express-gateway/content.md new file mode 100644 index 000000000..20514f757 --- /dev/null +++ b/express-gateway/content.md @@ -0,0 +1,61 @@ +# What is Express-Gateway? + +Express Gateway is an API Gateway that sits at the heart of any microservices architecture, regardless of what language or platform you're using. Express Gateway secures your microservices and exposes them through APIs using Node.js, ExpressJS and Express middleware. Developing microservices, orchestrating and managing them now can be done insanely fast all on one seamless platform without having to introduce additional infrastructure. + +Express-Gateway's documentation can be found at [https://express-gateway.io/docs](https://express-gateway.io/docs). + +## Main Features + +- Built Entirely on Express and Express Middleware +- Dynamic Centralized Config +- API Consumer and Credentials Management +- Plugins and Plugin Framework +- Distributed Data Store +- CLI +- Admin API + +%%LOGO%% + +## How to use this image + +Unless you're using identity features (such as `users`, `applications` and `credentials`), Express-Gateway does not require any data storage. + +If so, skip directly to the point **2**; else, please keep going with this guide. + +### 1. Link Express-Gateway to a Redis container + +#### Start Redis + +Start a Redis container by executing: + +```shell +docker run -d --name express-gateway-data-store \ + -p 6379:6379 \ + redis:alpine +``` + +### 2. Start the Express-Gateway instance + +Once the Redis instance has been started (if required), we can start the Express-Gateway instance link it to the Redis container. + +```shell +$ docker run -d --name express-gateway \ + --link eg-database:eg-database \ + -v /my/own/datadir:/var/lib/eg \ + -p 8080:8080 \ + -p 9876:9876 \ + %%IMAGE%% +``` + +_Note:_ You might want to expose other ports to the host in case you're serving your APIs through **HTTPS**. +_Note:_ You need to mount a volume with configuration files and volumes in order to make Express-Gateway start correctly. + +You can now read the docs at [express-gateway.io/docs](http://express-gateway.io/docs) to learn more about Express-Gateway and configure it accordingly to your needs. + +### Install plugin + +You can install custom plugins to the current Express Gateway image just creating a new `Dockerfile`, +use `expressgateway/express-gateway` as base image and then install the required plugins as global yarn +packages + +`RUN yarn add global express-gateway-plugin-name` \ No newline at end of file diff --git a/express-gateway/github-repo b/express-gateway/github-repo new file mode 100644 index 000000000..ffecc1ea1 --- /dev/null +++ b/express-gateway/github-repo @@ -0,0 +1 @@ +https://github.com/ExpressGateway/express-gateway diff --git a/express-gateway/license.md b/express-gateway/license.md new file mode 100644 index 000000000..2de981d32 --- /dev/null +++ b/express-gateway/license.md @@ -0,0 +1 @@ +View [license information](https://github.com/ExpressGateway/express-gateway/blob/master/LICENSE) for the software contained in this image. diff --git a/express-gateway/logo.png b/express-gateway/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1da4074db1721ab752e7452ce70d984e2dcfebda GIT binary patch literal 38611 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