繁体   English   中英

如何编写文件 docker-compose 和 dockerfie for Django connect Kong api

[英]How to write file docker-compose and dockerfie for Django connect Kong api

我正在做一个毕业设计,我准备把我的项目放到服务器上,但是我遇到了docker-compose.ymlDockerfile文件的问题,请问我应该在哪里修复它?

如何修复此错误? nginx:[错误] init_by_lua 错误:/usr/local/share/lua/5.1/kong/cmd/utils/migrations.lua:16:数据库需要引导或早于 Kong 1.0。 要从头开始新安装,请运行“kong migrations bootstrap”。 要从 1.0 之前的版本迁移,请先迁移到 Kong 1.5.0。 如果您仍然有“apis”实体,您可以使用 Kong 1.5.0 中的“kong migrations migrate-apis”命令将它们转换为路由和服务。 堆栈回溯:[C]: 在 function 'error' /usr/local/share/lua/5.1/kong/cmd/utils/migrations.lua:16: 在 function 'check_state' /usr/local/share/lua/5.1 /kong/init.lua:562: 在 function 'init' init_by_lua:3: 在主块中

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

设置.py

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

考虑在启动 pythong 之前运行所需的迁移过程? 例如

CMD ["kong", "migrations bootstrap && python3 manage.py runserver 0.0.0.0:8000"]

数据库需要引导或早于 Kong 1.0。 要从头开始新安装,请运行“kong migrations bootstrap”。 要从 1.0 之前的版本迁移,请先迁移到 Kong 1.5.0。 如果您仍然有“apis”实体,您可以使用 Kong 1.5.0 中的“kong migrations migrate-apis”命令将它们转换为路由和服务。

错误来自 Kong 无法使用提供的数据库。 当你启动 kong 时,需要一个额外的migrations/bootstrap步骤来准备 Kong 使用的数据库。

由于您正在使用 Docker Compose 启动整个环境,因此首先添加一个额外的容器来进行迁移应该就足够了:

kong-migrations:
    container_name: kong-migrations
    image: kong:latest
    environment:
      - KONG_DATABASE=postgres
      - KONG_PG_HOST=kong-database
      - KONG_PG_USER=kong
      - KONG_PG_PASSWORD=kong
      - KONG_PASSWORD=kong
    networks:
      - default
    command: kong migrations bootstrap
    depends_on:
      - kong-database

由于您正在从/向 Kong 数据库装载数据量,因此第一次运行可能无法运行,因为 Kong 可能在迁移完成之前启动。 如果是这种情况,只需等待 Kong 自动重启即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM