首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高山Python镜像抛出exec用户进程导致Raspian/Debian工作的地方“没有这样的文件或目录”

高山Python镜像抛出exec用户进程导致Raspian/Debian工作的地方“没有这样的文件或目录”
EN

Stack Overflow用户
提问于 2020-07-12 03:07:26
回答 1查看 168关注 0票数 0

一个简单的Dockerfile,它将shell脚本作为入口点执行,如下所示

代码语言:javascript
复制
FROM python:3
WORKDIR /app

COPY . .
RUN chmod +x entrypoint.sh
CMD ["python", "/app/src/api.py"]
ENTRYPOINT ["./entrypoint.sh"]

工作:调用entrypoint.sh,它本身在RPI3上执行python /app/src/api.py

entrypoint.sh

代码语言:javascript
复制
#!/bin/bash
echo starting entrypoint
set -x
exec "$@"

因为我不需要任何Debian/Raspbian特定的东西,所以我想使用高山图像来减小图像大小。因此,我将FROM python:3更改为FROM python:3-alpine,没有做任何进一步的更改。

但现在容器无法启动:

代码语言:javascript
复制
api_1      | standard_init_linux.go:211: exec user process caused "no such file or directory"
test_api_1 exited with code 1

为什么这在阿尔卑斯山上不起作用?我看不出有什么问题,因为/app/entrypoint.sh存在,而且它也是可执行的:

代码语言:javascript
复制
Step 5/7 : RUN ls -lh
 ---> Running in d517a83c5b9b
total 12K    
-rwxr-xr-x    1 root     root          54 Jul 11 18:35 entrypoint.sh
drwxr-xr-x    2 root     root        4.0K Jul 11 18:48 src

similar question中,图像是在非arm系统上构建的。这不是我的情况,我是直接在RPI上构建的。

不确定这是Raspbian还是阿尔卑斯山相关。我还尝试了使用绝对路径ENTRYPOINT ["/app/entrypoint.sh"]:仍然在python:3图像上工作,但在python:3-alpine中失败了。

EN

回答 1

Stack Overflow用户

发布于 2020-07-12 03:07:26

问题是我的入口点在没有考虑的情况下将bash用作shebang:

代码语言:javascript
复制
#!/bin/bash
echo starting entrypoint
set -x
exec "$@"

但是高山不包括GNU Bash,它默认安装在Debian/Raspbian上。没有这样的文件或目录是从shebang指定给解释器的,而不是入口点脚本本身。

由于我的脚本没有缩进以生成需要bash特性的内容,所以我将#!/bin/bash更改为#!/bin/sh,并且它也可以在高山图像上启动。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62853433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档