Docker:chmod:无法访问'chmod':没有这样的文件或目录

时间:2020-05-04 10:54:44

标签: ruby-on-rails bash shell docker sh

我正在 Ubuntu 18.04上构建 Rails 应用程序,并且尝试使用Docker设置应用程序的部署。

我有2个入口点文件:

  • docker / entrypoints / docker-entrypoint.sh
  • docker / entrypoints / sidekiq-entrypoint.sh

通常,要使文件可执行,我必须在主机终端中运行以下命令:

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

我尝试了一些解决方案,但到目前为止都没有奏效。任何形式的帮助将不胜感激。

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的位置以及将其复制到的位置。

仅此而已。

我希望这会有所帮助