错误信息是
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 权限,但是仍然说权限被拒绝
提前致谢
答案 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
。