我正在 Ubuntu 18.04上构建 Rails 应用程序,并且尝试使用Docker设置应用程序的部署。
我有2个入口点文件:
通常,要使文件可执行,我必须在主机终端中运行以下命令:
chmod +x docker/entrypoints/docker-entrypoint.sh
chmod +x docker/entrypoints/sidekiq-entrypoint.sh
但是,我想在Dockerfile中实现这一目标,而不必总是在主机的终端上做到这一点。
为此,我在Dockerfile中添加了以下命令:
RUN chmod +x docker/entrypoints/docker-entrypoint.sh \
chmod +x docker/entrypoints/sidekiq-entrypoint.sh
ENTRYPOINT ["./docker/entrypoints/docker-entrypoint.sh"]
但是后来我遇到了这个错误:
chmod:无法访问“ chmod”:没有这样的文件或目录
chmod:无法访问“ + x”:没有这样的文件或目录
错误:服务'app'生成失败:命令'/ bin / sh -c chmod + x docker / entrypoints / docker-entrypoint.sh chmod + x docker / entrypoints / sidekiq-entrypoint.sh'返回非-零代码:1
我尝试了一些解决方案,但到目前为止都没有奏效。任何形式的帮助将不胜感激。
答案 0 :(得分:0)
这是我的解决方法:
只需从以下位置更改Dockerfile
中的命令:
RUN chmod +x docker/entrypoints/docker-entrypoint.sh \
chmod +x docker/entrypoints/sidekiq-entrypoint.sh
ENTRYPOINT ["./docker/entrypoints/docker-entrypoint.sh"]
对此:
RUN ["chmod", "+x", "/docker/entrypoints/docker-entrypoint.sh"] \
["chmod", "+x", "/docker/entrypoints/sidekiq-entrypoint.sh"]
ENTRYPOINT ["./docker/entrypoints/docker-entrypoint.sh"]
此外,请尝试将docker-entrypoint.sh
复制/复制到工作目录中。以下任何一项都可以做到:
# Copy other project files
COPY . ./
# Docker init
RUN ["chmod", "+x", "docker-entrypoint.sh"]
ENTRYPOINT ["./docker-entrypoint.sh"]
OR
# Copy docker entrypoint file
COPY docker-entrypoint.sh ./
# Docker init
RUN ["chmod", "+x", "docker-entrypoint.sh"]
ENTRYPOINT ["./docker-entrypoint.sh"]
OR
# Copy docker entrypoint file
COPY /docker/docker-entrypoint.sh ./docker/docker-entrypoint.sh
# Docker init
RUN ["chmod", "+x", "docker/docker-entrypoint.sh"]
ENTRYPOINT ["./docker/docker-entrypoint.sh"]
注意:这取决于docker-entrypoint.sh
的位置以及将其复制到的位置。
仅此而已。
我希望这会有所帮助