在构建Docker镜像时运行Shell脚本

4
我有一个带有install.sh脚本的自定义软件包,我想在构建docker镜像时运行它(也就是将./install.sh放置在Dockerfile中)。我可以在容器内部运行它,但我想要一个包含所需软件包(这些软件包在install脚本中提到)的镜像。
我尝试过:
  1. RUN /bin/sh/ -c "./install.sh"
  2. RUN ./install.sh
它报错:

/bin/sh install.sh not found

或者

/bin/sh ./install.sh not found

这可能是一个重复的问题,但我在任何地方都没有找到答案。感谢您的帮助。

为什么不在Dockerfile中创建./install.sh,然后再执行它呢? - Red Cricket
请分享能够复现您问题的最小 Dockerfile。 - atline
1个回答

8

您需要在Dockerfile中使用以下命令将install.sh复制到Docker镜像中:

COPY install.sh /tmp

然后使用RUN命令运行它:

RUN /bin/sh -c "/tmp/install.sh"

或者

RUN sh /tmp/install.sh

在运行之前不要忘记使install.sh可执行:

chmod +x /tmp/install.sh


install.sh 变为可执行文件:chmod +x install.sh - Mornor
我假设'tmp'是我正在复制install.sh的文件夹 @MSaadat - anjali
不起作用。我仍然收到这个错误 - /bin/sh: 1: ./install.sh: not found 命令"/bin/sh -c /bin/sh -c“./install.sh”'已返回非零代码:127 @MSaadat - anjali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接