From 8ee4b026326a61ab0ccf22634eacbbbfbfaaf678 Mon Sep 17 00:00:00 2001 From: Vincenzo Chianese Date: Tue, 6 Feb 2018 18:47:10 +0100 Subject: [PATCH 1/8] 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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 Date: Wed, 9 Jan 2019 14:24:58 +0100 Subject: [PATCH 2/8] Address code review comments --- express-gateway/content.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/express-gateway/content.md b/express-gateway/content.md index 20514f757..ab6d3c9a3 100644 --- a/express-gateway/content.md +++ b/express-gateway/content.md @@ -29,7 +29,7 @@ If so, skip directly to the point **2**; else, please keep going with this guide Start a Redis container by executing: ```shell -docker run -d --name express-gateway-data-store \ +$ docker run -d --name express-gateway-data-store \ -p 6379:6379 \ redis:alpine ``` @@ -55,7 +55,10 @@ You can now read the docs at [express-gateway.io/docs](http://express-gateway.io ### 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 +use `%%IMAGE%%` 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 +```dockerfile +FROM %%IMAGE%% +RUN yarn add global express-gateway-plugin-name +``` From 482fd8a6e1280e322a9272d6a3ca6898eb6a23c4 Mon Sep 17 00:00:00 2001 From: Vincenzo Chianese Date: Wed, 9 Jan 2019 14:26:36 +0100 Subject: [PATCH 3/8] Provide meaningful short readme --- express-gateway/README-short.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/express-gateway/README-short.txt b/express-gateway/README-short.txt index 23bf65d69..d9edd8591 100644 --- a/express-gateway/README-short.txt +++ b/express-gateway/README-short.txt @@ -1 +1 @@ -The official release of Express-Gateway. +The Official Docker Image of Express Gateway, an API Gateway for APIs and Microservices From d15ad20916f080be3d7124861784dec0c297d381 Mon Sep 17 00:00:00 2001 From: Vincenzo Chianese Date: Wed, 9 Jan 2019 18:19:50 +0100 Subject: [PATCH 4/8] Create maintainer.md --- express-gateway/maintainer.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 express-gateway/maintainer.md diff --git a/express-gateway/maintainer.md b/express-gateway/maintainer.md new file mode 100644 index 000000000..c36ba1070 --- /dev/null +++ b/express-gateway/maintainer.md @@ -0,0 +1 @@ +[the Express Gateway Team](%%GITHUB-REPO%%) From 374b3b0ad24f2f269f10b0c380daadfac3c04a8e Mon Sep 17 00:00:00 2001 From: Vincenzo Chianese Date: Thu, 10 Jan 2019 08:49:25 +0100 Subject: [PATCH 5/8] Update content.md --- express-gateway/content.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/express-gateway/content.md b/express-gateway/content.md index ab6d3c9a3..6e1c5db67 100644 --- a/express-gateway/content.md +++ b/express-gateway/content.md @@ -47,8 +47,8 @@ $ docker run -d --name express-gateway \ %%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. +*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. From 23d18bc447b1989b5ea2aa414fc9360ccaf29461 Mon Sep 17 00:00:00 2001 From: Vincenzo Chianese Date: Thu, 10 Jan 2019 08:52:46 +0100 Subject: [PATCH 6/8] Update content.md --- express-gateway/content.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/express-gateway/content.md b/express-gateway/content.md index 6e1c5db67..ce5d1d60d 100644 --- a/express-gateway/content.md +++ b/express-gateway/content.md @@ -6,13 +6,13 @@ Express-Gateway's documentation can be found at [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 +- 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%% From 0f98d961bf15ef4c433f7281d1a248d342a5ddbb Mon Sep 17 00:00:00 2001 From: Vincenzo Chianese Date: Thu, 10 Jan 2019 08:55:36 +0100 Subject: [PATCH 7/8] Update content.md --- express-gateway/content.md | 1 + 1 file changed, 1 insertion(+) diff --git a/express-gateway/content.md b/express-gateway/content.md index ce5d1d60d..1307cc74f 100644 --- a/express-gateway/content.md +++ b/express-gateway/content.md @@ -48,6 +48,7 @@ $ docker run -d --name express-gateway \ ``` *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. From 94b9311a097b04165e6d0d44a145f286f8e7b3b7 Mon Sep 17 00:00:00 2001 From: Vincenzo Chianese Date: Thu, 10 Jan 2019 08:55:58 +0100 Subject: [PATCH 8/8] Update content.md --- express-gateway/content.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/express-gateway/content.md b/express-gateway/content.md index 1307cc74f..c5032c137 100644 --- a/express-gateway/content.md +++ b/express-gateway/content.md @@ -55,9 +55,7 @@ You can now read the docs at [express-gateway.io/docs](http://express-gateway.io ### Install plugin -You can install custom plugins to the current Express Gateway image just creating a new `Dockerfile`, -use `%%IMAGE%%` as base image and then install the required plugins as global yarn -packages +You can install custom plugins to the current Express Gateway image just creating a new `Dockerfile`, use `%%IMAGE%%` as base image and then install the required plugins as global yarn packages ```dockerfile FROM %%IMAGE%%