You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django对接Kong API的Docker配置问题及数据库迁移报错求助

毕业设计部署问题:Kong数据库迁移报错及配置文件修正

问题概述

做毕业设计部署项目时,配置docker-compose.yml和Dockerfile遇到问题,同时出现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.
To start a new installation from scratch, run 'kong migrations bootstrap'.
To migrate from a version older than 1.0, migrated to Kong 1.5.0 first.
If you still have 'apis' entities, you can convert them to Routes and Services
using the 'kong migrations migrate-apis' command in Kong 1.5.0.
stack traceback:
[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

相关配置文件

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.yml

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',
    }
}

解决方法

1. Kong数据库迁移报错处理

报错原因是新创建的PostgreSQL数据库没有Kong所需的表结构,需初始化数据库:

  • 停止Kong容器:docker-compose stop kong
  • 执行数据库初始化命令:docker-compose run --rm kong kong migrations bootstrap
  • 重新启动Kong容器:docker-compose up -d kong

2. 配置文件修正点

docker-compose.yml 修正

  • 移除无用配置:删除Kong服务环境变量中的KONG_CASSANDRA_CONTACT_POINTS=kong-database,当前使用PostgreSQL,Cassandra配置无意义。
  • 同步Admin端口配置:当前Kong的KONG_ADMIN_LISTEN设置为0.0.0.0:18001,但端口映射是127.0.0.1:8001:8001,二者不一致,需统一:
    方案一:修改环境变量为KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl,保持与端口映射的8001端口一致。
    方案二:修改端口映射为- 18001:8001,与环境变量的18001端口匹配。
  • 替换links为depends_on:links已被Docker Compose弃用,改为depends_on确保服务启动顺序:
    Kong服务添加:
    depends_on:
      - kong-database
    
    Konga服务添加:
    depends_on:
      - kong
    

Dockerfile 修正

当前Dockerfile未复制项目代码,容器启动会找不到manage.py,需添加复制代码的步骤:

FROM python:3.10

WORKDIR /app

COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .  # 新增:复制项目所有代码到容器内

EXPOSE 8000
CMD ["python3", "manage.py", "runserver", "0.0.0.0:8000"]

Django settings.py 可选优化

如果后续将Django服务加入docker-compose网络,需将数据库HOST改为kong-database(容器间通过服务名通信,无需端口映射),配置如下:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'kong',
        'USER': 'kong',
        'PASSWORD': 'kong',
        'HOST': 'kong-database',
        'PORT': '5432',
    }
}

内容的提问来源于stack exchange,提问作者wanx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 17:45:49