Docker: chmod: 无法访问 'chmod': 没有那个文件或目录
Docker: chmod: cannot access 'chmod': No such file or directory
我正在 Rails 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: cannot access 'chmod': No such file or directory
chmod: cannot access '+x': No such file or directory
ERROR: Service 'app' failed to build: The command '/bin/sh -c chmod +x docker/entrypoints/docker-entrypoint.sh chmod +x docker/entrypoints/sidekiq-entrypoint.sh' returned a non-zero code: 1
我尝试了一些解决方案,但 none 到目前为止都有效。任何形式的帮助将不胜感激。
我是这样解决的:
只需将 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"]
此外,请努力确保您 copy/copied 将 docker-entrypoint.sh
添加到您的工作目录。以下任何一项都可以:
# Copy other project files
COPY . ./
# Docker init
RUN ["chmod", "+x", "docker-entrypoint.sh"]
ENTRYPOINT ["./docker-entrypoint.sh"]
或
# Copy docker entrypoint file
COPY docker-entrypoint.sh ./
# Docker init
RUN ["chmod", "+x", "docker-entrypoint.sh"]
ENTRYPOINT ["./docker-entrypoint.sh"]
或
# 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
的位置以及您要将其复制到的位置。
就这些了。
希望对您有所帮助
我正在 Rails 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: cannot access 'chmod': No such file or directory
chmod: cannot access '+x': No such file or directory
ERROR: Service 'app' failed to build: The command '/bin/sh -c chmod +x docker/entrypoints/docker-entrypoint.sh chmod +x docker/entrypoints/sidekiq-entrypoint.sh' returned a non-zero code: 1
我尝试了一些解决方案,但 none 到目前为止都有效。任何形式的帮助将不胜感激。
我是这样解决的:
只需将 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"]
此外,请努力确保您 copy/copied 将 docker-entrypoint.sh
添加到您的工作目录。以下任何一项都可以:
# Copy other project files
COPY . ./
# Docker init
RUN ["chmod", "+x", "docker-entrypoint.sh"]
ENTRYPOINT ["./docker-entrypoint.sh"]
或
# Copy docker entrypoint file
COPY docker-entrypoint.sh ./
# Docker init
RUN ["chmod", "+x", "docker-entrypoint.sh"]
ENTRYPOINT ["./docker-entrypoint.sh"]
或
# 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
的位置以及您要将其复制到的位置。
就这些了。
希望对您有所帮助