获取 flake8 返回非零代码:docker 中的 1

Aas*_*lli 5 python django docker flake8 docker-compose

我一直在关注这篇文章。 https://testdriven.io/blog/dockerizing-django-with-postgres-gunicorn-and-nginx/#production-dockerfile

在 Production Dockerfile 部分,Dockerfile.prod 文件包含这些行。

# lint
RUN pip install --upgrade pip
RUN pip install flake8
COPY . /usr/src/app/
RUN flake8 --ignore=E501,F401 .
Run Code Online (Sandbox Code Playgroud)

当我运行以下命令时,

docker-compose -f docker-compose.prod.yml up -d --build
Run Code Online (Sandbox Code Playgroud)

我收到以下错误。

ERROR: Service 'web' failed to build: The command '/bin/sh -c flake8 --ignore=E501,F401' returned a non-zero code: 1
Run Code Online (Sandbox Code Playgroud)

我不太了解 flake8,当我评论 'RUN flake8 --ignore=E501,F401 时。Dockerfile.prod 文件中的行一切正常。

任何人都可以告诉我为什么我面临这个问题并告诉我修复而不是从 Dockerfile 中删除该行。我对 flak8 不太了解,而且我对 Docker 也很陌生,非常感谢您的帮助:)

谢谢。

小智 5

(至少现在)只让代码 linting在您的 Django App 文件夹中发生可能是个好主意。因此,如果您在没有改动的情况下按照教程进行操作,则可能需要替换以下行:

RUN flake8 --ignore=E501,F401 .
Run Code Online (Sandbox Code Playgroud)

使用您的 Django 项目代码...

RUN flake8 --ignore=E501,F401 ./hello_django
Run Code Online (Sandbox Code Playgroud)

否则,可能会有很多东西被检查,你不想被 flake8 检查。


小智 5

flake8 是一个用于检查代码中的错误并确保没有未定义的变量或未使用的导入的库。

错误本身列出了您收到错误的原因。然而,flake8 似乎正在扫描虚拟环境(env 文件夹)并列出所有错误。要解决这个问题,您要么想要将其指向包含您的 python 代码(由您创建)的子目录。或者添加忽略语句/文件来忽略 env 文件夹。

话虽如此,对于您的用例,链接代码为:

RUN flake8 --ignore=E501,F401 ./hello_django 
Run Code Online (Sandbox Code Playgroud)

会解决你的问题