添加USER指令到Dockerfile后出现poetry: not found错误求助
切换非root用户后Docker构建找不到poetry的解决方法
问题原因
切换到app用户后执行pip install poetry==1.3.1,pip会将poetry安装到该用户的个人目录/home/app/.local/bin下,但这个路径默认不在Docker容器的PATH环境变量中,导致后续RUN命令无法找到poetry可执行文件。
可行解决方法
方法1:将用户本地bin目录加入环境变量
在切换到app用户后,先把用户的本地bin目录添加到PATH,再安装和使用poetry:
USER app # 把用户本地bin目录加入PATH ENV PATH="/home/app/.local/bin:${PATH}" RUN pip install poetry==1.3.1 RUN poetry config virtualenvs.create false \ && poetry install --no-interaction --no-ansi --no-root
这样后续所有命令(包括最后的CMD)都能正常找到poetry。
方法2:以root身份提前安装poetry
如果不需要严格隔离用户的软件安装目录,可以在切换到app用户前,用root身份全局安装poetry,这样poetry会被放在系统全局路径(如/usr/local/bin),app用户也能直接访问:
# 在切换用户前全局安装poetry RUN pip install poetry==1.3.1 USER app RUN poetry config virtualenvs.create false \ && poetry install --no-interaction --no-ansi --no-root
内容的提问来源于stack exchange,提问作者sam
相关产品推荐
相关产品推荐

