Docker文件:入口点脚本上的Chmod

时间:2014-12-03 21:26:53

标签: docker dockerfile

我的入口点脚本需要chmod + x是否有原因?似乎Redis没有在他们的dockerfile(https://github.com/docker-library/redis/blob/109323988b7663bceaf4a01c3353f8934dfc002e/2.8/Dockerfile)中为他们的入口点脚本执行此操作。

Dockerfile:

# Generic Docker Image for Running Node app from Git Repository
FROM    node:0.10.33-slim
ENV NODE_ENV production

# Add script to pull Node app from Git and run the app
COPY docker-node-entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

EXPOSE  8080
CMD ["--help"]

2 个答案:

答案 0 :(得分:12)

redis不需要这样做,因为他们的脚本已经有exec标志:

~/redis/2.8$ ls -l docker-entrypoint.sh 
-rwxrwxr-x 1 igor igor 109 Dec  3 23:52 docker-entrypoint.sh

如果您要为docker-node-entrypoint.sh脚本执行此操作,则在Dockerfile中也不需要chmod。

这是可能的,因为默认情况下git core.fileMode选项为true,因此文件的可执行位被尊重。

答案 1 :(得分:2)

Docker将使用其源代码的权限将文件复制到容器中。如果您在推入代码存储库的链中或在构建主机上的某个位置剥离Linux可执行文件,则需要重新添加这些执行权限。我见过Windows用户最常报告的这个问题,他们正在将代码下载到不支持Linux权限位的文件系统中。希望我们会得到一个COPY --chmod solution soon that will eliminate the need for an extra layer