У меня есть приложение django, которое отлично работает на локальном компьютере. Но когда я создаю образ docker и запускаю приложение из контейнера, оно работает нормально и возвращает статус 200, но через некоторое время снова возвращает статус 400 с сообщением, поля ввода остаются пустыми.
Operations to perform:
Apply all migrations: admin, auth, authtoken, contenttypes, sessions
Running migrations:
No migrations to apply.
No changes detected
Performing system checks...
System check identified no issues (0 silenced).
March 25, 2020 - 12:09:24
Django version 1.11.23, using settings 'TestSop.settings'
Starting development server at http://0.0.0.0:8016/
Quit the server with CONTROL-C.
[25/Mar/2020 12:09:35] "GET /TestSopApiView/ HTTP/1.1" 405 12315
[25/Mar/2020 12:09:41] "GET /TestSopApiView/ HTTP/1.1" 405 12315
[25/Mar/2020 12:10:03] "POST /TestSopApiView/ HTTP/1.1" 200 205
[25/Mar/2020 12:11:23] "POST /TestSopApiView/ HTTP/1.1" 400 189
{"field1":["This field may not be blank."],"field2":["This field may not be blank."],"field3":["This field may not be blank."],"field4":["This field may not be blank."]}
Это мой Dockerfile-
FROM python:3.7
#Create Directory in Container
ADD . /TestSop
WORKDIR /TestSop
COPY entrypoint.sh entrypoint.sh
RUN pip install -r requirements.txt
EXPOSE 8016
RUN apt-get -y update && apt-get -y upgrade && apt-get install -y curl && apt-get install -y jq
RUN chmod +x /TestSop/entrypoint.sh
RUN touch /TestSop/TestSop.log
RUN chmod 777 /TestSop/TestSop.log
ENTRYPOINT ["/TestSop/entrypoint.sh"]
точка входа. sh -
#!/bin/sh
python /TestSop/manage.py makemigrations &
python /TestSop/manage.py migrate &
python /TestSop/manage.py runserver 0.0.0.0:8016 &
sleep 2m
curl_output=$(curl -X POST -s -H "Content-Type: application/json" -d '{"field1": "'"$field1"'","field2":"'"$field2"'","field3":"'"$field3"'","field4":"'"$field4"'"}' http://127.0.0.1:8016/TestSopApiView/)
echo $curl_output
result=$(echo $curl_output | jq ".result")
if [ "${result}" = "\"fail\"" ]
then
exit 255
else
exit 0
fi
exec "$@"
Можете ли вы сказать мне, почему происходит этот второй запуск с состоянием 400 внутри контейнера? Кажется, это не вызывает каких-либо ошибок. Заранее спасибо.