4

I am copy script into docker container when build,this is part of my 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

when I am running docker using this command:

docker run --name soa-room-service -d registry.cn-hangzhou.aliyuncs.com/dabai_app_k8s/dabai_product/soa-room:latest

this is docker logs output:

$ docker logs e62917af92ccf240c73574e71041229a65db54e29453723ba27d56bcf9856b9a
/bin/sh: /root/start-docker.sh: Permission denied

I am replace the path using ~ symbol.But it still give me Permission denied error.How to make it works?

Dolphin
  • 29,069
  • 61
  • 260
  • 539
  • Are you running this as root user? What are the permissions on /root/start-docker.sh? check with ls -l /root – aLuViAn Jan 25 '20 at 07:10
  • 1
    Give executable permission to **start-docker.sh** before building the docker image – Nitish Jan 25 '20 at 07:25
  • this might help: https://stackoverflow.com/questions/38882654/docker-entrypoint-running-bash-script-gets-permission-denied – ROOT Jan 25 '20 at 08:02

2 Answers2

4

change ENTRYPOINT script like this:

ENTRYPOINT ["sh","/root/start-docker.sh"]
Dolphin
  • 29,069
  • 61
  • 260
  • 539
4

It looks like /root/start-docker.sh in the internal docker filesystem lacks the permissions. You might want to modify the 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

Of course if you want to run the /root/start-docker.sh under another user, you can also run RUN chown youruser:yourgroup /root/start-docker.sh

Mark Bramnik
  • 39,963
  • 4
  • 57
  • 97