我想运行一个安装了pip的可执行文件。运行下面的图像会得到/bin/sh: 1: [hbd,: not found
FROM python:3.8.3-slim-buster
WORKDIR /data
COPY cookies.txt /data/cookies.txt
RUN python3.8 -m pip install humblebundle-downloader
CMD ["hbd", "download", "--cookie-file", "/data/cookies.txt", "--library-path", "/data" "--progress", "--update"]我也尝试过CMD ["/usr/local/bin/python3.8", "-m", "hbd", "download",...和CMD python -m hbd download...以及类似的工具。导致/bin/sh: 1: [/usr/local/bin/python3.8,: not found等。
如果我用CMD which python3.8 && which hbd && find / -executable -type f -name hbd替换CMD ...,我会得到:
/usr/local/bin/python3.8
/usr/local/bin/hbd
/usr/local/bin/hbd对我来说,它告诉我可执行文件在那里!?
如何执行清晰可执行的可执行文件?
我无计可施了。谢谢!
编辑:我尝试了基础图像的‘非瘦’版本,即FROM python:3.8.5-buster,没有骰子。
发布于 2020-07-23 18:32:08
你好,我尝试你的Dockerfile失败了,我在里面运行了一个shell,并尝试了hbd,命令是可用的:
docker run -ti 7552b04ea25b sh
# hbd
usage: hbd [-h] {download} ...
hbd: error: the following arguments are required: action然后我试着去掉引号、方括号和逗号,它起作用了:
CMD hbd download --cookie-file /data/cookies.txt --library-path /data --progress --update我再次尝试你的CMD,它失败了,我缩短了它,它起作用了,经过几次试验和错误,我终于看到你忘记了2个参数之间的逗号。你的命令应该是(注意在两个参数之间添加了逗号):
CMD ["hbd", "download", "--cookie-file", "/data/cookies.txt", "--library-path", "/data", "--progress", "--update"]因此,下一次,尝试你的假设,并尝试调查你自己:
假设:找不到可执行文件?然后,通过在容器中运行shell来检查容器中的命令,从而对其进行测试。结论:找到了路径和可执行文件。
假设: CMD语法错误?让我们尝试一种不同的语法。它与CMD hbd一起工作。所以很明显这就是CMD语法...让我们试着调试它,并通过二分法来制作它...嘿,缺少逗号;)问题解决了。
发布于 2020-07-23 18:45:29
CMD ["hbd", "download", "--cookie-file", "/data/cookies.txt", "--library-path", "/data" "--progress", "--update"]
应该是
CMD ["hbd", "download", "--cookie-file", "/data/cookies.txt", "--library-path", "/data", "--progress", "--update"]
我认为发生的情况是,由于CMD没有被指定为有效的JSON数组,所以它被解释为以[开头的普通命令,这当然是无效的。
发布于 2020-07-23 18:04:29
该问题可能是因为未设置环境变量或未将路径导出到环境。尝试这两种方法,可能会有所帮助
https://stackoverflow.com/questions/63051628
复制相似问题