如何解决Kong提示「数据库需引导或版本早于Kong 1.0」的问题
Kong数据库初始化错误解决方案
错误信息
nginx: [error] init_by_lua error: /usr/local/share/lua/5.1/kong/cmd/utils/migrations.lua:16: Database needs bootstrapping or is older than Kong 1.0.
若要全新安装,请执行命令'kong migrations bootstrap'。
若要从早于1.0的版本迁移,请先升级至Kong 1.5.0。
若仍存在'apis'实体,可在Kong 1.5.0中执行'kong migrations migrate-apis'命令将其转换为Routes和Services。
调用栈追踪:
[C]: in function 'error'
/usr/local/share/lua/5.1/kong/cmd/utils/migrations.lua:16: in function 'check_state'
/usr/local/share/lua/5.1/kong/init.lua:562: in function 'init'
init_by_lua:3: in main chunk
解决步骤
- 全新安装场景:进入Kong容器执行数据库初始化命令
docker exec -it kong kong migrations bootstrap - 旧版本迁移场景:
- 将Kong版本先升级至1.5.0(适配旧版数据库结构)
- 若数据库中存在旧版
apis实体,执行转换命令将其转为Routes和Servicesdocker exec -it kong kong migrations migrate-apis - 再升级到最新Kong版本并完成后续迁移操作
相关配置文件
Dockerfile
FROM python:3.10 WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt EXPOSE 8000 CMD ["python3", "manage.py", "runserver", "0.0.0.0:8000"]
Docker-Compose文件
version: '3.9' services: kong-database: image: postgres:latest container_name: kong-database restart: always ports: - 15432:5432 networks: - default volumes: - db:/var/lib/postgresql/data environment: - POSTGRES_DB=kong - POSTGRES_USER=kong - POSTGRES_PASSWORD=kong kong: image: kong:latest container_name: kong restart: always ports: - 18000:8000 - 18443:8443 - 127.0.0.1:8001:8001 - 18444:8444 links: - kong-database:kong-database networks: - default environment: - LC_CTYPE=en_US.UTF-8 - LC_ALL=en_US.UTF-8 - KONG_DATABASE=postgres - KONG_PG_HOST=kong-database - KONG_PG_USER=kong - KONG_PG_PASSWORD=kong - KONG_CASSANDRA_CONTACT_POINTS=kong-database - 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_ADMIN_LISTEN=0.0.0.0:18001, 0.0.0.0:18444 ssl konga: image: pantsel/konga container_name: kong-konga restart: always ports: - 1337:1337 networks: - default volumes: - data:/app/kongadata links: - kong:kong environment: - NODE_ENV=production networks: default: driver: bridge volumes: db: driver: local data: driver: local
settings.py文件
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'kong', 'USER': 'kong', 'PASSWORD': 'kong', 'HOST': '127.0.0.1', 'PORT': '15432', } }
内容的提问来源于stack exchange,提问作者พลชกฤษณ์ ศรีสุวรรณ์
相关产品推荐
相关产品推荐

