默认分类 Kong install by Docker 中文翻译 [查看原文](https://docs.konghq.com/install/docker/?_ga=2.210969298.678130112.1575253233-797880523.1575253233 "查看原文") 关于如何在 Docker 中使用 Kong 的细节讨论可以在存有 [Kong](https://hub.docker.com/_/kong/ "Kong") 镜像的 DockerHub 页面上找到。我们也有一个 [Docker Compose 模板](https://github.com/Kong/docker-kong/tree/master/compose "Docker"),内置了群组和可扩展性。 # 带数据库模式 以下是一个简单例子,展示了如何将一个 kong 容器连接至 Cassandra 或 PostgreSQL。 1. 创建 docker 网络 你需要手动创建一个网络,用于容器之间互相发现和沟通。在本例中,kong-net是网络的名称,你可以随便改个名字。 ```shell $ docker network create kong-net ``` 2. 运行数据库 期望使用 Cassandra 容器: ```shell $ docker run -d --name kong-database \ --network=kong-net \ -p 9042:9042 \ cassandra:3 ``` 期望使用 PostgreSQL 容器: ```shell $ docker run -d --name kong-database \ --network=kong-net \ -p 5432:5432 \ -e POSTGRES_USER=kong \ -e POSTGRES_DB=kong \ postgres:9.6 ``` 3. 准备数据库 用一个临时 Kong 容器运行迁移。 ```shell $ docker run --rm \ --network=kong-net \ -e KONG_DATABASE=postgres \ -e KONG_PG_HOST=kong-database \ -e KONG_CASSANDRA_CONTACT_POINTS=kong-database \ kong:latest kong migrations bootstrap ``` 在上例中,Cassandra 和 PostgreSQL 均已完成配置,不过,你需要用 Cassandra 或 PostgreSQL 更新 `KONG_DATABASE` 环境变量。 对于版本低于 0.15 的注意点:版本号低于 0.15 的 kong (最高 0.14),用 `up` 子命令替换 `bootstrap`。另外,版本号低于 0.15 的 kong 禁止同时运行迁移。同一时间,只能有一个 kong 节点在运行迁移。这个限制对 kong 0.15,1.0 或更高版本不存在。 4. 启动 kong 准备好数据库和运行迁移后,启动一个连接至数据库容器的 kong 容器,就像前文的临时迁移容器一样。 ```shell $ docker run -d --name kong \ --network=kong-net \ -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, 0.0.0.0:8444 ssl \ -p 8000:8000 \ -p 8443:8443 \ -p 8001:8001 \ -p 8444:8444 \ kong:latest ``` 5. 使用 kong kong 正在运行: ```shell $ curl -i http://localhost:8001/ ``` 通过 [5 分钟快速入门](https://docs.konghq.com/1.4.x/getting-started/quickstart/ "5") 快速学习如何使用 kong。 # 无数据库模式 以 [无数据库模式](https://docs.konghq.com/1.4.x/db-less-and-declarative-config/ "无数据库模式") 启动 kong 的步骤: 1. 创建 docker 网络 这与 Pg/Cassandra 教程中的一样。我们使用了相同的网络名 `kong-net`,你也可以改名成你想要的名字。 ```shell $ docker network create kong-net ``` 以无数据库模式运行 kong 并不强制要求此步骤,不过,万一以后你想添加一些其它玩意(例如由 Redis Cluster 驱动的限速插件)时是个不错的伏笔。 2. 创建一个 docker 磁盘 (volume) 本文中,一个 docker 磁盘就是实体主机中的一个目录,它被映射至容器内的一个目录。磁盘有一个名字,本里中,我们将其命名为 `kong-vol`。 ```shell docker volume create kong-vol ``` 现在,你可以检查这个磁盘了: ```shell $ docker volume inspect kong-vol ``` 结果类似这个: ```json [ { "CreatedAt": "2019-05-28T12:40:09Z", "Driver": "local", "Labels": {}, "Mountpoint": "/var/lib/docker/volumes/kong-vol/_data", "Name": "kong-vol", "Options": {}, "Scope": "local" } ] ``` 注意条目 `MountPoint`,下一步我们会用到这个路径。 3. 准备好你的配置文件 相关语法和属性在 [声明式配置格式](https://docs.konghq.com/1.4.x/db-less-and-declarative-config/#the-declarative-configuration-format "声明式配置格式") 中介绍。 在其中添加所有需要的条目(Services 服务,Route 路由,Plugins 插件,Consumers 消费者,等等)。 本教程中,我们假定你将其命名为 `kong.yml`。 文件保存在上一部步提到的 `MountPoint` 路径下。在本例中,存储路径为 `/var/lib/docker/volumes/kong-vol/_data/kong.yml`。 4. 以无数据库模式启动 kong 虽然可以通过 `KONG_DATABASE=off` 以无数据库模式启动 kong,但更常用的方式是通过 `KONG_DECLARATIVE_CONFIG` 变量将声明式配置文件作为参数传递。为此,我们要让此文件在容器中可见。我们通过 `-v` 实现操作,它将 `kong-vol` 映射至容器内的 `/usr/local/kong/declarative` 目录。 ```shell $ docker run -d --name kong \ --network=kong-net \ -v "kong-vol:/usr/local/kong/declarative" \ -e "KONG_DATABASE=off" \ -e "KONG_DECLARATIVE_CONFIG=/usr/local/kong/declarative/kong.yml" \ -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, 0.0.0.0:8444 ssl" \ -p 8000:8000 \ -p 8443:8443 \ -p 8001:8001 \ -p 8444:8444 \ kong:latest ``` 5. 使用 kong Kong 应该已经运行起来,包含了 kong.yml 中添加的条目。 ```shell $ curl -i http://localhost:8001/ ``` 例如,获取服务列表: ```shell $ curl -i http://localhost:8001/services ``` 阅读全文 2020-03-17 dogify 0 条评论 3595 次浏览