Docker环境执行flake8提示sh: flake8: not found的解决方法咨询
解决
docker-compose run执行flake8提示not found的问题 问题原因
你的Dockerfile中if判断语句存在语法错误,导致requirements.dev.txt中的flake8没有被安装。具体是[$DEV = "true"]缺少空格,shell无法正确解析这个条件判断,直接跳过了dev依赖的安装步骤。
解决步骤
1. 修复Dockerfile的语法错误
修改Dockerfile中RUN指令里的if判断部分,确保括号前后有空格:
ARG DEV=false RUN python -m venv /py && \ /py/bin/pip install --upgrade pip && \ /py/bin/pip install -r /tmp/requirements.txt && \ if [ $DEV = "true" ]; \ then /py/bin/pip install -r /tmp/requirements.dev.txt ; \ fi && \ rm -rf /tmp && \ adduser \ --disabled-password \ --no-create-home \ django-user
2. 重新构建镜像(清除缓存)
由于Docker会缓存之前的构建层,需要强制重新构建镜像以应用修改:
docker-compose build --no-cache app
3. 再次执行flake8命令
现在重新运行flake8检查即可正常执行:
docker-compose run --rm app sh -c "flake8"
补充说明
你的Dockerfile已经正确设置了ENV PATH="/py/bin:$PATH",所以只要flake8被安装到虚拟环境的/py/bin目录下,shell就能找到该命令。修复语法错误后,dev依赖会被正确安装,问题即可解决。
内容的提问来源于stack exchange,提问作者Gazi
相关产品推荐
相关产品推荐

