Docker Kong容器在迁移后停止

时间:2018-02-07 12:24:22

标签: postgresql docker docker-compose kong api-gateway

我有一个在docker容器中运行的nodejs API,我想使用Kong作为API-Gateway。 Kong将在另一个docker容器中运行。当我使用docker-compose启动API容器和Kong容器时,Kong容器会抛出一个错误说

kong       | stack traceback:
kong       |    [C]: in function 'assert'
kong       |    /usr/local/share/lua/5.1/kong/init.lua:160: in function 'init'
kong       |    init_by_lua:3: in main chunk
kong       | 2018/02/07 11:14:17 [warn] postgres database 'kong' is missing migration: (response-transformer) 2016-05-04-160000_resp_trans_schema_changes
kong       | nginx: [error] init_by_lua error: /usr/local/share/lua/5.1/kong/init.lua:160: [postgres error] the current database schema does not match this version of Kong. Please run `kong migrations up` to update/initialize the database schema. Be aware that Kong migrations should only run from a single node, and that nodes running migrations concurrently will conflict with each other and might corrupt your database schema!

docker-compose file:

version: '3.1'

services:
  couchdb:
    image: couchdb
    container_name: e-db
    ports:
      - 5984:5984
    environment:
      COUCHDB_USER: admin
      COUCHDB_PASSWORD: admin

  api:
    image: e-api
    container_name: e-api
    entrypoint: ./docker-entrypoint.sh couchdb 5984
    build: .
    command: npm run dev
    depends_on:
      - couchdb
    ports:
      - 8080:8080

  kong-db:
    image: postgres:alpine
    container_name: kong-db
    restart: on-failure
    ports:
      - 5432
    environment:
      POSTGRES_USER: kong
      POSTGRES_DB: kong

  kong:
    image: kong:0.12.1-alpine
    container_name: kong
    restart: on-failure
    depends_on:
      - kong-db
    ports:
      - 8000:8000
      - 8443:8443
      - 8001:8001
    environment:
      KONG_PG_HOST: kong-db
      KONG_DATABASE: postgres
    command: kong migrations up

  kong-ui:
    image: pgbi/kong-dashboard
    container_name: kong-ui
    restart: on-failure
    ports:
      - 8089:8080
    depends_on:
      - kong

所以,在收到错误之后,我添加了"命令:kong migrations up"到服务。这次它进行迁移。但是在迁移之后,kong容器停止了,我无法重新启动它。

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

kong:0.12.1仅支持postgresql 9.5+作为数据存储区。所以请注意你将kong与postgresql的兼容版本链接起来。

如果您将多个kongs指向同一个数据库和同一个用户,那么请注意kong模式匹配。