# Kong Gateway

Kong Gateway is an open core project that offers many of the traditional [API Management](https://wiki.jamesravey.me/books/api-management/page/api-management-overview "API Management Overview") features.

### Minimal Docker Compose for Kong

```yaml
version: "3.0"

services:

  kong:
    env_file: .env
    image: kong/kong-gateway:3.0.1.0
    environment:
      - KONG_DATABASE=postgres
      - KONG_PG_HOST=db
      - KONG_PG_DATABASE=kong
      - KONG_PG_USER=postgres
      - KONG_PG_PASSWORD=${POSTGRES_PASSWORD}
      - KONG_ADMIN_LISTEN=0.0.0.0:8001
      - KONG_ADMIN_GUI_URL=http://localhost:8002
    ports:
      - 8000:8000 
      - 8443:8443 
      - 8001:8001 
      - 8444:8444 
      - 8002:8002 
      - 8445:8445 
      - 8003:8003 
      - 8004:8004 

  db:
    env_file: .env
    image: postgres
    restart: always
    volumes:
      - ./postgres:/var/lib/postgresql/data 
    ports:
      - 5432:5432
      
  adminer:
    env_file: .env
    image: adminer
    restart: always
    ports:
      - 8080:8080

```

And accompanying `.env` file:

```bash
POSTGRES_PASSWORD=example
KONG_PASSWORD="supersecret123"
```

### Docker Compose Installation

The official documentation for the project provides a walkthrough for docker installation [here](https://docs.konghq.com/gateway/3.0.x/install/docker/)

#### Seed the Database

`docker-compose run kong kong migrations bootstrap`

#### Starting Kong

`docker-compose up -d kong`

### Kong Config and Environment Variables

Kong normally reads a config file called `kong.conf` - an overview of valid configuration settings/directives can be found [here](https://docs.konghq.com/gateway/latest/reference/configuration/)

The docker image can read these variables from the environment. Simply copy the name of the thing, upercase it and prefix with `KONG_` e.g. `prefix` becomes `KONG_PREFIX`.