Poetry 在 Docker 中安装失败

bir*_*n04 6 docker python-poetry

我有alpine:edge作为基本图像,并想在其中使用诗歌。我正在尝试像这样安装它:

\n\n
RUN curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python\nRUN source $HOME/.poetry/env\n
Run Code Online (Sandbox Code Playgroud)\n\n

脚本运行没有错误,但是当我尝试实际使用它时,bash 说它没有安装:

\n\n
Step 16/18 : RUN poetry install --no-dev\n ---> Running in 38ce454369cb\n/bin/sh: poetry: not found\n
Run Code Online (Sandbox Code Playgroud)\n\n

什么可能导致此问题?

\n\n

UPD: env 文件似乎有问题:

\n\n
~/.poetry # source env\n/bin/sh: /usr/bin/env: line 1: ELF: not found\n/bin/sh: /usr/bin/env: line 2: \xef\xbf\xbd: not found\n/bin/sh: /usr/bin/env: line 3: \xef\xbf\xbd: not found\n/bin/sh: /usr/bin/env: \xef\xbf\xbd\n                        : not found\n/bin/sh: /usr/bin/env: \xef\xbf\xbd\xef\xbf\xbd: not found\n/bin/sh: /usr/bin/env: \xef\xbf\xbde\xef\xbf\xbdmgUa: not found\n/bin/sh: /usr/bin/env: M\xef\xbf\xbdZ\xef\xbf\xbd\xef\xbf\xbd!9!di9W\xdb\x93\xc5\xb9\xef\xbf\xbd@9\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdo\xef\xbf\xbd!\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd7e\xef\xbf\xbd\n                                                      \xef\xbf\xbd\xdd\xa3k\xef\xbf\xbd\xef\xbf\xbd: not found\n/bin/sh: /usr/bin/env: \xef\xbf\xbd\n                        \xef\xbf\xbdB\xef\xbf\xbd\xef\xbf\xbd\n                            \xef\xbf\xbd\xef\xbf\xbd\n                              \xef\xbf\xbd\xef\xbf\xbd\n                                \xef\xbf\xbdQ\xef\xbf\xbdtdR\xef\xbf\xbdtd: not found\n/bin/sh: /usr/bin/env: \xef\xbf\xbdn\xef\xbf\xbd\xe9\x95\xb3\xef\xbf\xbd: not found\n/bin/sh: /usr/bin/env: \xef\xbf\xbd\n                        : not found\n/bin/sh: /usr/bin/env: \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\n                          \xef\xbf\xbd\n                           \xef\xbf\xbd\nL\xef\xbf\xbd@\xef\xbf\xbdDIklqrsvwxz: not found  \xef\xbf\xbd9\xef\xbf\xbd9/lib/ld-musl-x86_64.so.1k\xef\xbf\xbd!\xef\xbf\xbdR\n/bin/sh: /usr/bin/env: \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd2\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\n                                   \xef\xbf\xbd\xef\xbf\xbd\n                                     p\xef\xbf\xbd\n                                      n\xef\xbf\xbd\xef\xbf\xbd: not found\n/bin/sh: /usr/bin/env: syntax error: unterminated quoted string\n~/.poetry # source env\n/bin/sh: /usr/bin/env: line 1: ELF: not found\n/bin/sh: /usr/bin/env: line 2: \xef\xbf\xbd: not found\n/bin/sh: /usr/bin/env: line 3: \xef\xbf\xbd: not found\n/bin/sh: /usr/bin/env: \xef\xbf\xbd\n                        : not found\n/bin/sh: /usr/bin/env: \xef\xbf\xbdn\xef\xbf\xbd\xe9\x95\xb3\xef\xbf\xbd: not found\n/bin/sh: /usr/bin/env: \xef\xbf\xbd\n                        \xef\xbf\xbdB\xef\xbf\xbd\xef\xbf\xbd\n                            \xef\xbf\xbd\xef\xbf\xbd\n                              \xef\xbf\xbd\xef\xbf\xbd\n                                \xef\xbf\xbdQ\xef\xbf\xbdtdR\xef\xbf\xbdtd: not found\n/bin/sh: /usr/bin/env: \xef\xbf\xbde\xef\xbf\xbdmgUa: not found\n/bin/sh: /usr/bin/env: M\xef\xbf\xbdZ\xef\xbf\xbd\xef\xbf\xbd!9!di9W\xdb\x93\xc5\xb9\xef\xbf\xbd@9\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdo\xef\xbf\xbd!\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd7e\xef\xbf\xbd\n                                                      \xef\xbf\xbd\xdd\xa3k\xef\xbf\xbd\xef\xbf\xbd: not found\n/bin/sh: /usr/bin/env: \xef\xbf\xbd\n                        : not found\n/bin/sh: /usr/bin/env: \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\n                          \xef\xbf\xbd\n                           \xef\xbf\xbd\nL\xef\xbf\xbd@\xef\xbf\xbdDIklqrsvwxz: not found  \xef\xbf\xbd9\xef\xbf\xbd9/lib/ld-musl-x86_64.so.1k\xef\xbf\xbd!\xef\xbf\xbdR\n/bin/sh: /usr/bin/env: \xef\xbf\xbd\xef\xbf\xbd: not found\n/bin/sh: /usr/bin/env: \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd2\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\n                                   \xef\xbf\xbd\xef\xbf\xbd\n                                     p\xef\xbf\xbd\n                                      n\xef\xbf\xbd\xef\xbf\xbd: not found\n/bin/sh: /usr/bin/env: syntax error: unterminated quoted string\n
Run Code Online (Sandbox Code Playgroud)\n\n

我尝试手动将二进制文件添加到路径中,但是运行

\n\n
RUN export PATH=$PATH:/root/.poetry/bin\n
Run Code Online (Sandbox Code Playgroud)\n\n

好像没有什么效果。当我进入容器时,路径似乎没有改变。

\n

bir*_*n04 3

我提出的最佳解决方案是手动设置环境,因为二进制文件本身安装得很好

RUN curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python
ENV PATH = "${PATH}:/root/.poetry/bin"
Run Code Online (Sandbox Code Playgroud)