我试图在 dockerfile 中创建一个 bash 脚本,但是当我尝试运行它时,docker 说该文件不存在。我做错了什么?
FROM alpine
USER root
WORKDIR /
RUN mkdir /scripts
RUN echo '#!/bin/bash\necho "test"' >> /scripts/test.sh
RUN chmod +x /scripts/test.sh
ENTRYPOINT ["/scripts/test.sh"]
apline镜像没有安装bash,因此脚本的shebang是错误的。另外,脚本中的
\n
将按字面意思写入文件,而不是作为换行符。我建议使用 printf
而不是 echo
:
FROM alpine
USER root
WORKDIR /
RUN mkdir /scripts
RUN printf '#!/bin/sh\necho "test"' >> /scripts/test.sh
RUN chmod +x /scripts/test.sh
ENTRYPOINT ["/scripts/test.sh"]