簡體   English   中英

如何使用 docker 容器運行 Kong API 網關?

[英]How to run Kong API Gateway using docker containers?

我對 Kong API Gateway 非常陌生,目前正在嘗試使用 PostgreSQL 作為我的數據庫容器運行 Kong 容器。

我怎樣才能做到這一點?

回答@StefanWalther的問題,這是一個如何與docker-compose配合使用的示例:

version: "2.1"
services:
  kong:
    image: kong:latest
    depends_on:
      kong-database:
        condition: service_healthy
    healthcheck:
      test:
        - CMD
        - nc
        - -z
        - localhost
        - "8443"
      retries: 10
    links:
      - kong-database:kong-database
    command: 
      - "kong"
      - "start"
      - "--vv"
    environment:
      - KONG_DATABASE=cassandra
      - KONG_CASSANDRA_CONTACT_POINTS=kong-database
      - KONG_ADMIN_LISTEN=0.0.0.0:8001
      - KONG_ADMIN_LISTEN_SSL=0.0.0.0:8444
      - KONG_NGINX_DAEMON=off
    ports:
      - "443:8443"
      - "8001:8001"
    restart: always
    network_mode: "bridge"
  kong-database:
    image: cassandra:3
    healthcheck:
      test:
        - "CMD-SHELL"
        - "[ $$(nodetool statusgossip) = running ]"
    volumes:
      - ~/kong-database/cassandra:/var/lib/cassandra
    expose:
      - "9042"
    restart: always
    network_mode: "bridge"

另外,您可以添加kongfig以再次重新配置實例:

  kong-configurer:
    image: mashupmill/kongfig
    depends_on:
      kong:
        condition: service_healthy
    links:
      - kong:kong
    volumes:
      - ~/config.yml:/config.yml:ro
    command: --path /config.yml --host kong:8001
    network_mode: "bridge"

您可以使用以下命令轉儲配置以在此最后一個容器中使用:

kongfig dump --host localhost:8001 > ~/config.yml

有關Kongfig的更多信息,請點擊此處

干杯。

1.啟動數據庫:

 $ docker run -d --name kong-database \
                  -p 5432:5432 \
                  -e "POSTGRES_USER=kong" \
                  -e "POSTGRES_DB=kong" \
                  postgres:9.4

2.啟航:

啟動一個Kong容器並將其鏈接到您的數據庫容器,並使用postgres配置KONG_DATABASE環境變量。

$ docker run -d --name kong \
              --link kong-database:kong-database \
              -e "KONG_DATABASE=postgres" \
              -e "KONG_PG_HOST=kong-database" \
              -p 8000:8000 \
              -p 8443:8443 \
              -p 8001:8001 \
              -p 7946:7946 \
              -p 7946:7946/udp \
              kong

3.驗證Kong正在運行:

$ curl http://127.0.0.1:8001

您可以按照Kong的安裝指南進行操作 它按預期對我有用。

步驟1:啟動Postgres容器

docker run -d --name kong-database \
          -p 5432:5432 \
          -e "POSTGRES_USER=kong" \
          -e "POSTGRES_DB=kong" \
          postgres:9.5

步驟2:遷移數據庫

docker run --rm \
--link kong-database:kong-database \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
kong:latest kong migrations up

步驟3:啟動Kong

docker run -d --name kong \
--link kong-database:kong-database \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
-e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
-e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
-e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
-e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
-e "KONG_ADMIN_LISTEN=0.0.0.0:8001" \
-e "KONG_ADMIN_LISTEN_SSL=0.0.0.0:8444" \
-p 8000:8000 \
-p 8443:8443 \
-p 8001:8001 \
-p 8444:8444 \
kong:latest

步驟4:驗證

curl -i http://localhost:8001/

您檢查以下回購了嗎?

https://github.com/Mashape/docker-kong

這是我自己的docker compose,它可以完美運行(來自github上kong的docker項目,我用kong-oidc,您可以選擇自己喜歡的任何版本)。

 kong: image: kong:1.3.0-alpine-oidc container_name: kong depends_on: - kong-db healthcheck: test: ["CMD", "kong", "health"] interval: 10s timeout: 10s retries: 10 restart: on-failure ports: - "8000:8000" # Listener - "8001:8001" # Admin API - "8443:8443" # Listener (SSL) - "8444:8444" # Admin API (SSL) environment: KONG_DATABASE: postgres KONG_PG_HOST: kong-db KONG_PG_PORT: 5432 KONG_PG_DATABASE: api-gw KONG_PROXY_ACCESS_LOG: /dev/stdout KONG_ADMIN_ACCESS_LOG: /dev/stdout KONG_PROXY_ERROR_LOG: /dev/stderr KONG_ADMIN_ERROR_LOG: /dev/stderr KONG_PROXY_LISTEN: 0.0.0.0:8000, 0.0.0.0:8443 ssl KONG_ADMIN_LISTEN: 0.0.0.0:8001, 0.0.0.0:8444 ssl KONG_PLUGINS: bundled,oidc KONG_LOG_LEVEL: debug kong-migrations: image: kong:1.3.0-alpine-oidc command: kong migrations bootstrap container_name: kong-migrations depends_on: - kong-db environment: KONG_DATABASE: postgres KONG_PG_DATABASE: api-gw KONG_PG_HOST: kong-db KONG_PG_PASSWORD: KONG_PG_USER: kong links: - kong-db:kong-db restart: on-failure kong-migrations-up: image: kong:1.3.0-alpine-oidc container_name: kong-migrations-up command: kong migrations up && kong migrations finish depends_on: - kong-db environment: KONG_DATABASE: postgres KONG_PG_DATABASE: api-gw KONG_PG_HOST: kong-db KONG_PG_PASSWORD: KONG_PG_USER: kong links: - kong-db:kong-db restart: on-failure 

2020 年更新

  1. 為容器創建橋接網絡可以互相訪問
docker network create my-net
  1. 啟動kong-database容器
docker run -d --name kong-database --network my-net  -p 5432:5432  -e "POSTGRES_USER=kong" -e "POSTGRES_HOST_AUTH_METHOD=trust" -e "POSTGRES_DB=kong"  postgres:alpine
  1. 運行臨時容器為 kong-database 初始化數據
docker run --rm \
    --network my-net \
    -e "KONG_DATABASE=postgres" \
    -e "KONG_PG_HOST=kong-database" \
    kong:latest kong migrations bootstrap
  1. 運行 kong 容器
docker run -d --name kong \
    --network my-net \
    -e "KONG_DATABASE=postgres" \
    -e "KONG_PG_HOST=kong-database" \
    -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
    -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
    -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
    -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
    -e "KONG_ADMIN_LISTEN=0.0.0.0:8001" \
    -e "KONG_ADMIN_LISTEN_SSL=0.0.0.0:8444" \
    -p 8000:8000 \
    -p 8443:8443 \
    -p 8001:8001 \
    -p 8444:8444 \
    kong:latest
  1. 核實
curl http://127.0.0.1:8001

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM