Getting flake8 returned a non none zero code : 1 in docker
Asked Answered
A

5

11

I was following this article. https://testdriven.io/blog/dockerizing-django-with-postgres-gunicorn-and-nginx/#production-dockerfile

In the Production Dockerfile section, the Dockerfile.prod file has these lines.

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

When I run the below command,

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

I'm getting the below error.

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

I'm not much aware of flake8, When I commented the 'RUN flake8 --ignore=E501,F401 .' line from the Dockerfile.prod file everything worked.

Can anyone please tell me why I'm facing this issue and tell me a fix instead of removing that line from the Dockerfile. I'm not much aware of flak8 and I'm quite new to Docker too and your help will be much appreciated :)

Thanks.

Apospory answered 27/5, 2020 at 12:39 Comment(1)
show the output? flake8 is a linter and is probably finding some issues with your codeAsis
B
16

It might be a good idea to only let the code linting happen within your Django App folder. So if you followed the tutorial without alterations, you may want to replace this line:

RUN flake8 --ignore=E501,F401 .

with your Django project code...

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

Otherwise, there's probably a lot of stuff that gets checked by flake8 that you don't want checked.

Brisco answered 29/5, 2020 at 11:51 Comment(1)
Okay I will try this.Apospory
C
5

flake8 is a library to check errors in code and make sure there is no undefined variables or imports that are not being used.

The reason you are getting the errors are listed within the error itself. However, it seems that flake8 is scanning the virtual environment (env folder) and listing all the errors. To solve this problem you either want to point it to the subdirectory that has your python code (created by you). Or add ignore statement / file to ignore env folder.

having that said, for your use case chaining the code to be:

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

will solve your problem

Celisse answered 29/6, 2020 at 4:27 Comment(0)
T
2

I had the same problem and user13641454s solution worked great. If you are still getting the same error I suggest you run flake8 from the terminal to see the actual errors:

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

It's likely something trivial like an extra line or something in your code.

Trutko answered 1/6, 2020 at 5:37 Comment(0)
W
0

I also got the same problem, as shown below and how solved is that, by fixing the error as mentioned their in error " settings.py:23:1: E265 block comment should start with '# '. "

Edit the comment line give the proper space like '# This is comment'

you may got different type but fix it by as per error suggestions.

Whetstone answered 10/2, 2022 at 16:33 Comment(0)
E
0

error comes because when you install flake, it's starting to check how your code is written at the same time as your installation is building up, and that's why you have all this warnings. The problem is not coming from docker-compose building process but how your code is written in your python files. So as Bhuwan wrote, just have to apply proper syntax in your python code. And rebuild again.

On the other hand, you should use flake8 just for checking code at the place where your python project lives( you have some comments about it too)

Anyway, if someone have the same problem again, just have to fix python code following flake8 rules, build image again and it will work fine.

Ephram answered 23/4 at 16:49 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.