This an extension of the official Docker image for Kong, with support to for Rancher, Kubernetes, or Tutum/Docker Cloud.
You can also spin this up by adding in my custom Rancher Catalog
The official docker-kong image allows for:
1. linking `Cassandra` or `Postgres` database containers
2. connecting to external databases via custom `kong.yml` config file by replacing the `/etc/kong/` volume.
However when using Rancher or Kubernetes, containers are organised into Services deployed across multiple machine node clusters. Therefore it's not feasible to mount custom config files into volumes on each machine which are spun up and down on demand. See related question here
Also there is no need to explicitly link containers since internal DNS resolutions for Services comes out of the box in platforms such as Rancher or Tutum.
By configuring Cassandra and Postgres purely using Environment Variables, it is a lot easier to point to either an external database instance or an internal database service. Without having to build a custom kong config.
0.8.0- (Dockerfile)0.8.1- (Dockerfile)0.8.2- (Dockerfile)0.8.3- (Dockerfile)latest- (Dockerfile)
Existing docker-kong usages still applies. The following extra Environment Variables are added:
| Env Var | Default | Description |
|---|---|---|
| DATABASE | cassandra | either cassandra or postgres as per official image |
| CLUSTER_LISTEN | 0.0.0.0:7946 | host ip and port. When rancher is specified, uses the Rancher Meta Data Service to work out the correct container ip address for cluster_listen. Other platforms can be extended quite easily. |
| Env Var | Default | Description |
|---|---|---|
| CASSANDRA_CONTACT_POINTS | kong-database:9046 | Mandatory. Specify custom values in the format of \"ip1:9046\",\"ip2:9046\" or use a internal service name |
| CASSANDRA_KEYSPACE | kong | Optional |
| CASSANDRA_USER | kong | Optional |
| CASSANDRA_PASSWORD | kong | Optional |
Example:
$ docker run -d --name kong \
-e DATABASE=cassandra \
-e CASSANDRA_CONTACT_POINTS='\"52.5.149.55:9042\",\"52.5.149.56:9042\"' \
-p 8000:8000 -p 8443:8443 -p 8001:8001 -p 7946:7946 -p 7946:7946/udp \
littlebaydigital/kongor:
$ docker run -d --name kong \
-e DATABASE=cassandra \
-e CASSANDRA_CONTACT_POINTS='\"cassandra-service.kong-stack:9042\"' \
-p 8000:8000 -p 8443:8443 -p 8001:8001 -p 7946:7946 -p 7946:7946/udp \
littlebaydigital/kongSample Docker Compose: https://github.com/yunspace/my-docker-stacks/tree/master/kong/cassandra
| Env Var | Default | Description |
|---|---|---|
| POSTGRES_HOST | kong-database | Mandatory. Either a external hostname or internal service name |
| POSTGRES_PORT | 5432 | Optional. |
| POSTGRES_DATABASE | kong | Optional. |
| POSTGRES_USER | kong | Optional. |
| POSTGRES_PASSWORD | kong | Optional. |
Example:
$ docker run -d --name kong \
-e DATABASE=postgres \
-e POSTGRES_HOST=127.0.0.1 \
-p 8000:8000 -p 8443:8443 -p 8001:8001 -p 7946:7946 -p 7946:7946/udp \
--security-opt seccomp:unconfined \
littlebaydigital/kongor:
$ docker run -d --name kong \
-e DATABASE=postgres \
-e POSTGRES_HOST=postgres-service.kong-stack \
-p 8000:8000 -p 8443:8443 -p 8001:8001 -p 7946:7946 -p 7946:7946/udp \
--security-opt seccomp:unconfined \
littlebaydigital/kongSample Docker Compose: https://github.com/yunspace/my-docker-stacks/tree/master/kong/postgres