启动容器进程导致 \"exec: \\\\\"/app/start_combined_collector.sh\\\\": permission denied\": unknown'\n\nERROR:

时间:2021-01-22 18:50:34

标签: docker shell jenkins docker-compose dockerfile

错误信息是

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 权限,但是仍然说权限被拒绝

提前致谢

2 个答案:

答案 0 :(得分:0)

感谢大家的回复,我解决了问题,因为我正在将 shell 脚本复制到挂载到卷的容器的应用程序目录中,我发现 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 的脚本目录中,它可以工作

答案 1 :(得分:-1)

消除 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