Docker + Kong:[PostgreSQL错误]无法检索PostgreSQL server_version_num:连接被拒绝

3

我目前正在运行 Docker 19.03.5,尝试复制这篇文章的内容,但在第三个步骤中出现以下错误:

第一步:

docker network create kong-net

第二点:

docker run -d --name kong-database \
--network=kong-net \
-p 5555:5432 \
-e “POSTGRES_USER=kong” \
-e “POSTGRES_DB=kong” \
postgres:9.6

第三点:

docker run --rm \
--network=kong-net \
-e “KONG_DATABASE=postgres” \
-e “KONG_PG_HOST=kong-database” \
kong:latest kong migrations up

在这第三个步骤,如果我使用详细选项,我会看到以下错误:
2019/12/02 15:51:25 [verbose] Kong: 1.4.0
Error: 
/usr/local/share/lua/5.1/kong/cmd/migrations.lua:93: [PostgreSQL error] failed to retrieve 
PostgreSQL server_version_num: connection refused
stack traceback:
[C]: in function 'assert'
/usr/local/share/lua/5.1/kong/cmd/migrations.lua:93: in function 'cmd_exec'
/usr/local/share/lua/5.1/kong/cmd/init.lua:87: in function </usr/local/share/lua/5.1/kong/cmd/init.lua:87>
[C]: in function 'xpcall'
/usr/local/share/lua/5.1/kong/cmd/init.lua:87: in function </usr/local/share/lua/5.1/kong/cmd/init.lua:44>
/usr/local/bin/kong:9: in function 'file_gen'
init_worker_by_lua:48: in function <init_worker_by_lua:46>
[C]: in function 'xpcall'
init_worker_by_lua:55: in function <init_worker_by_lua:53>
2019/12/02 15:51:25 [verbose] no config file found at /etc/kong/kong.conf
2019/12/02 15:51:25 [verbose] no config file found at /etc/kong.conf
2019/12/02 15:51:25 [verbose] no config file, skip loading
2019/12/02 15:51:25 [verbose] prefix in use: /usr/local/kong

我的docker logs -f --tail 10 kong-database

PostgreSQL init process complete; ready for start up.

LOG:  database system was shut down at 2019-12-02 12:22:46 UTC
LOG:  MultiXact member wraparound protections are now enabled
LOG:  autovacuum launcher started
LOG:  database system is ready to accept connections

我正在运行Ubuntu 18.04,没有其他网络或容器在运行。

1个回答

11

你提到的文章有点过时。

Kong 0.15以下版本(包括0.14)请使用up子命令而不是bootstrap。同时请注意,Kong 0.15以下版本迁移时不应并发运行,只能有一个Kong节点在执行迁移。这个限制在Kong 0.15、1.0及以上版本中被取消。

参考链接:https://hub.docker.com/_/kong

Kong文档:https://docs.konghq.com/install/docker

以下指令应该可行:

创建docker网络




docker network create kong-net

启动一个 PostgreSQL 容器

docker run -d --name kong-database \
--network=kong-net \
-p 5555:5432 \
-e "POSTGRES_USER=kong" \
-e "POSTGRES_DB=kong" \
-e "POSTGRES_PASSWORD=kong" \
postgres:12.2

准备您的数据库

docker run --rm \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_PASSWORD=kong" \
kong:2.0.3 kong migrations bootstrap

开始Kong

docker run -d --name kong \
--network=kong-net \
--link kong-database:kong-database \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_PASSWORD=kong" \
-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

2
文档仍在使用不适合我的postgres 9.6版本。我将其更改为12.2,就像您在这里所示的那样,这样就可以了。 - C.J.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接