我在构建时将脚本复制到Docker容器中,这是我的Dockerfile的一部分:
ADD soa-room-service/build/libs/soa-room-service-1.0.0-SNAPSHOT.jar /soa-room-service-1.0.0-SNAPSHOT.jar
ADD script/start-docker.sh /root/start-docker.sh
EXPOSE 13003
ENTRYPOINT /root/start-docker.sh
当我使用此命令运行docker时:
docker run --name soa-room-service -d registry.cn-hangzhou.aliyuncs.com/dabai_app_k8s/dabai_product/soa-room:latest
这是docker日志输出:
$ docker logs e62917af92ccf240c73574e71041229a65db54e29453723ba27d56bcf9856b9a
/bin/sh: /root/start-docker.sh: Permission denied
我正在使用〜符号替换路径。但是它仍然会给我权限被拒绝的错误。如何使其起作用?
[内部docker文件系统中的/root/start-docker.sh
似乎缺少权限。您可能要修改Dockerfile:
ADD soa-room-service/build/libs/soa-room-service-1.0.0-SNAPSHOT.jar /soa-room-service-1.0.0-SNAPSHOT.jar
ADD script/start-docker.sh /root/start-docker.sh
USER root
RUN chmod 755 /root/start-docker.sh
EXPOSE 13003
ENTRYPOINT /root/start-docker.sh
当然,如果要在另一个用户下运行/root/start-docker.sh
,也可以运行RUN chown youruser:yourgroup /root/start-docker.sh
像这样更改ENTRYPOINT脚本:
ENTRYPOINT ["sh","/root/start-docker.sh"]