Dockerfile-将bash文件从主机复制到Dockerfile



我正试图复制一个名为setup_envs.sh的bash文件,该文件位于Dockerfile的同一目录中。

如何在创建Dockerfile后仅运行此bash文件一次?

我的代码是(在Dockerfile的末尾(:

RUN mkdir -p /scripts
COPY setup_env.sh /scripts
WORKDIR /scripts
RUN chmod +x /scripts/setup_env.sh
CMD [./scripts/setup_env.sh]

当前错误:/bin/bash: [./scripts/setup_env.sh]: No such file or directory

顺便说一句,我在文件中没有类型,我查过了。

此外,在我解决了这个问题并运行映像创建容器之后,我如何确保这个bash脚本只被调用一次?我应该在bash脚本中写一个命令来检查某个文件夹是否存在——如果存在——不安装它吗?

根据包括我在内的不同评论,以下是您的Dockerfile摘录应替换为:

COPY --chmod 755 setup_env.sh /scripts/
WORKDIR /scripts
CMD /scripts/setup_env.sh

或者,您可以对CMD使用exec形式,但由于没有传递任何命令行参数,因此这里没有太多附加值。

CMD ["/scripts/setup_env.sh"]

在这一点上,我真的不确定WORKDIR指令是否有用(它取决于Dockerfile的其余部分和脚本的内容(。

关于单个bash脚本的执行,我认为您需要提供更多关于目标的背景信息。我觉得你可能会遇到X/Y问题。由于这是一个完全不同的问题,它无论如何都应该进入一个新的问题,并包含所有必需的细节。

最新更新