docker - Dockerfile将无法运行

标签 docker dockerfile

我正在制作一个Dockerfile来实现服务器设备。

我认为我的文件是完整的,但是在执行该文件时,我返回了一个错误;

/docker-entrypoint.sh: line 22: /opt/author/application/bin/start-ppliance.sh: Permission denied
/docker-entrypoint.sh: line 22: exec: /opt/author/application/bin/start-appliance.sh: cannot execute: Permission denied

在Dockerfile本身中,运行以下命令;
RUN  chmod -R 0750 /opt/author/
RUN  chown -R USER1:USER1   /opt/author/

以及;
USER USER1

在Dockerfile本身的最后一行是:
CMD ["/opt/author/application/bin/start-appliance.sh", "run"]

我不清楚为什么会发生此错误,因为该文件位于容器内,并由默认用户拥有。

最佳答案

如您所知,这通常在文件没有设置执行位的情况下发生,尽管从理论上说,您的chmod 750应该可以处理此问题。调试是否确实存在问题的一种方法是,仅在CMD时传入不同的docker run(例如docker run -it <image> sh),然后使用ls -l检查脚本的权限。罪魁祸首通常是没有设置执行位。

如果不是那样,我建议用完整的Dockerfile来阐明问题,以防万一像VOLUME指令之类的东西可能会丢弃您所使用的RUN的影响。

关于docker - Dockerfile将无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46838437/

相关文章:

docker - 我应该如何创建一个Dockerfile在一个实例中运行多个服务?

docker - 用于调试的 Golang docker 文件

eclipse - docker GUI 应用程序的 xhost 命令 (Eclipse)

docker - 单页应用程序 (SPA) 的零停机/蓝绿部署

python - Docker:无法从dockerfile安装Python库,尽管可以从容器的外壳中手动安装它们

存在 ENTRYPOINT 时,Docker 运行命令忽略部分 Dockerfile CMD

docker - 如何在 Docker 中的 Alpine 上运行 Apache 2?

java - 未从 Java 接收 StatsD-Exporter 指标

bash - 在bash脚本中使用docker环境路径变量

shell - docker run 导出环境变量的脚本