chmod: changing permissions of 'myscript.sh' : Operation not permitted

Changing permissions of files you do not own in Linux requires root access, and the COPY command is most likely copying the file as root. You can change back to the sonarqube user after fixing the permissions. Here's an example Dockerfile for that:

FROM sonarqube:7.7-community
COPY plugins/ /plugins/
COPY scripts/ /scripts/
COPY conf/ /conf/
COPY bin/ /bin/
USER root
RUN chmod 755 /scripts/myScript.sh
USER sonarqube
ENTRYPOINT ["/scripts/myScript.sh"]

Note I've also switched from ADD to COPY since you are not pulling remote URL's or extracting tar/zip files. The * is also implied when copying a directory. For a single script, you do not need the -R recursive option, and I'm explicit with the permissions since shell scripts also require read access by all users.

If you want the script to be owned by sonarqube instead, you could run:

COPY --chown=sonarqube:sonarqube scripts/ /scripts/

That should allow the user to change permissions on the script without a USER change, but may give that user more access than you desire to modify the script inside the container.


Set the permissions before you build the image

chmod +x scripts/myScript.sh
docker build .

docker will keep the permissions when it copies the files.