[英]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/
您檢查以下回購了嗎?
這是我自己的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 年更新
docker network create my-net
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
docker run --rm \
--network my-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
kong:latest kong migrations bootstrap
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
curl http://127.0.0.1:8001
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.