Получение flake8 вернуло код, отличный от нуля: 1 в docker - PullRequest
2 голосов
/ 27 мая 2020

Я читал эту статью. https://testdriven.io/blog/dockerizing-django-with-postgres-gunicorn-and-nginx/#production -dockerfile

В разделе «Рабочий файл Dockerfile» файл Dockerfile.prod содержит эти строки.

# lint
RUN pip install --upgrade pip
RUN pip install flake8
COPY . /usr/src/app/
RUN flake8 --ignore=E501,F401 .

Когда я запускаю команду ниже,

docker-compose -f docker-compose.prod.yml up -d --build

Я получаю следующую ошибку:

ERROR: Service 'web' failed to build: The command '/bin/sh -c flake8 --ignore=E501,F401' returned a non-zero code: 1

Я не очень хорошо осведомлен о flake8, когда я прокомментировал «RUN flake8 --ignore = E501, F401». строчке из файла Dockerfile.prod все заработало.

Кто-нибудь, пожалуйста, скажите мне, почему я столкнулся с этой проблемой, и скажите мне исправление вместо удаления этой строки из файла Docker. Я мало знаю о flak8, и я тоже новичок в Docker, и ваша помощь будет очень признательна :)

Спасибо.

Ответы [ 3 ]

1 голос
/ 29 мая 2020

Было бы неплохо (по крайней мере, на данный момент) позволить коду линтингу происходить внутри вашей Django папки приложения. Итак, если вы следовали руководству без изменений, вы можете заменить эту строку:

RUN flake8 --ignore=E501,F401 .

на свой Django код проекта ...

RUN flake8 --ignore=E501,F401 ./hello_django

В противном случае, вероятно много вещей, которые проверяются, которые вы не хотите проверять с помощью flake8.

0 голосов
/ 29 июня 2020

flake8 - это библиотека для проверки ошибок в коде и проверки отсутствия неопределенных переменных или импорта, которые не используются.

Причина, по которой вы получаете ошибки, указана внутри самой ошибки. Однако похоже, что flake8 сканирует виртуальную среду (папку env) и выводит список всех ошибок. Чтобы решить эту проблему, вы либо хотите указать его на подкаталог с вашим кодом python (созданным вами). Или добавьте оператор игнорирования / файл, чтобы игнорировать папку env.

с учетом сказанного, для вашего варианта использования цепочка кода будет:

RUN flake8 --ignore=E501,F401 ./hello_django 

решит вашу проблему

0 голосов
/ 01 июня 2020

У меня была та же проблема, и решение user13641454s отлично работало. Если вы все еще получаете ту же ошибку, я предлагаю вам запустить flake8 с терминала, чтобы увидеть фактические ошибки:

install flake8
flake8 --ignore=E501,F401 ./hello_django

Это, вероятно, что-то тривиальное, например, дополнительная строка или что-то в вашем коде.

...