【问题标题】:starting container process caused \"exec: \\\\\"/app/start_combined_collector.sh\\\\\": permission denied\": unknown'\n\nERROR:启动容器进程导致 \"exec: \\\\\"/app/start_combined_collector.sh\\\\\": permission denied\": unknown'\n\nERROR:
【发布时间】:2021-01-22 18:50:34
【问题描述】:

错误信息是

Cannot start service nonJira_Processor: b'OCI runtime create failed: container_linux.go:345: starting container process caused \"exec: \\\\\"/app/start_combined_collector.sh\\\\\": permission denied\": unknown'\n\nERROR: for nonJira_Processor

这是我的 dockerfile

ADD processors/nonjira_combined_processor_docker/start_combined_collector.sh start_combined_collector.sh
RUN chmod +x /app/start_combined_collector.sh
RUN ls -lrt
ENTRYPOINT ["/app/start_combined_collector.sh"]
CMD ["inputs"]

在 start_combined_collector.sh 中

#!/bin/sh

java -jar $1.jar --spring.config.location=/app/properties/$1.properties

我已更改 RUN ["chmod", "+x", "/app/start_combined_collector.sh"] 但知道使用我的 start_combined_collector.sh 是否有任何问题,因为我试图给予 chmod +x 和 777 权限但是仍然说权限被拒绝

提前致谢

【问题讨论】:

  • 我怀疑WORKDIR是否在第一行ADD之前是/app,如果不是,你应该给出目标目录/app/的绝对路径;并消除文件名,不需要它。
  • 如何启动容器?特别是,您是否有 Compose volumes:docker run -v 选项将内容挂载到图像的 /app 目录?

标签: docker shell jenkins docker-compose dockerfile


【解决方案1】:

感谢大家的回复,我解决了问题,因为我正在将 shell 脚本复制到安装到卷的容器的 app 目录中,我发现 RUN 命令如果安装到卷上将不会执行任何操作,所以我将 shell 脚本复制到另一个名为 script 的目录并运行它 在 dockerfile 之前

VOL /app
COPY start_combined_collector.sh **/app**
RUN chmod +x start_combined_collector.sh

之后

VOL /app
COPY start_combined_collector.sh **/script**
RUN chmod +x start_combined_collector.sh

因为这一次我将我的 start_combined_collector.sh 复制到未安装到 VOL 的脚本目录,它起作用了

【讨论】:

    【解决方案2】:

    消除 shell 脚本步骤,只在 Dockerfile 中尝试:

    ENTRYPOINT [java]
    CMD ["-jar", "inputs.jar", "--spring.config.location=/app/properties/inputs.properties"]
    

    如果它有效,这将确认问题肯定与 shell 脚本有关。然后将Dockerfile 更新为此并重试:

    COPY ./processors/nonjira_combined_processor_docker/start_combined_collector.sh /app/
    ENTRYPOINT ["/bin/bash", "/app/start_combined_collector.sh"]
    CMD ["inputs"]
    

    如果错误仍然存​​在,则分享整个Dockerfile

    【讨论】:

    • ENTRYPOINT ["java"]CMD ["-jar", ...] 的拆分对我来说有点奇怪;有一个单一的统一 CMD java -jar ... 调用没有真正的好处(它既不是“一个 CMD 模式也不是“入口点作为命令”模式)。我不清楚这个答案如何解决这个问题。跨度>
    猜你喜欢
    • 1970-01-01
    • 2018-09-21
    • 2020-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    相关资源
    最近更新 更多