Приложение в docker контейнере запускается снова и завершается с сообщением - поля не могут быть пустыми - PullRequest
0 голосов
/ 25 марта 2020

У меня есть приложение 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 внутри контейнера? Кажется, это не вызывает каких-либо ошибок. Заранее спасибо.

...