我正在使用Fatal error: Uncaught PodioBadRequestError: "Invalid JSON" Request URL: http://api.podio.com/file/v2/
和docker
。
在docker-compose
中,我有启动django服务器的命令:
docker-compose.yml
在json格式中,命令应在exec模式下运行。在command: ["./run/web.sh"]
内部:
web.sh
当我尝试使用#!/usr/bin/env bash
exec python manage.py runserver
停止服务时,它等待了10秒(默认超时),然后终止了服务。在日志中,我发现了docker-compose stop
。
如何使用project_web_1 exited with code 137
正常停止django runserver?
答案 0 :(得分:2)
在您的docker-compose.yml
文件中,将stop_signal
设置为SIGINT
:
django:
build: .
command: ["./run/web.sh"]
stop_signal: SIGINT
我自己为此苦了一段时间……
启动运行服务器时,您会注意到它显示“使用CONTROL-C退出服务器”。我认为这意味着Django的运行服务器被编写为处理SIGINT
(ctrl-c)而不是SIGTERM
(docker发送的信号)。对我来说,更改Docker发送给Django的信号比尝试在脚本中处理SIGTERM
并优雅地退出运行服务器要容易得多。
请注意,这取决于在exec
脚本中使用web.sh
,以便信号不会被shell吞噬-但是我看到您已经在这样做了。
答案 1 :(得分:0)
我将在这里保留适合我的配置:
yml文件:
backend:
restart: always
container_name: django_proj
image: username/django_proj
build:
context: .
dockerfile: ./docker/django/Dockerfile
command: /code/gunicorn-entrypoint.sh
expose:
- 8000
gunicorn-entrypoint.sh与您的sh相同:
#!/bin/sh
sleep 10
python manage.py makemigrations
python manage.py migrate
gunicorn -c gunicorn-config.py app_name.wsgi:application