WASdev / ci.docker

Build scripts for Docker images (Dockerfiles) and Docker related utilities for WebSphere Liberty.
Apache License 2.0
124 stars 120 forks source link

configure.sh script fails when deploying a springboot app #420

Open isalkovic opened 2 years ago

isalkovic commented 2 years ago

Hello,

I have a problem when building image to include a springboot app. Don't know if this is a bug, or if I am making some stupid mistake...

Here is the error:

14 48.82 chmod: changing permissions of '/opt/ibm/wlp/usr/servers/defaultServer/dropins/spring': Operation not permitted


executor failed running [/bin/sh -c configure.sh]: exit code: 123

Dockerfile: FROM websphere-liberty:21.0.0.9-full-java8-ibmjava as staging COPY --chown=1001:0 tf-nobkhnd.jar /staging/myFatApp.jar COPY --chown=1001:0 server.xml /config/ RUN springBootUtility thin \ --sourceAppPath=/staging/myFatApp.jar \ --targetThinAppPath=/staging/myThinApp.jar \ --targetLibCachePath=/staging/lib.index.cache FROM websphere-liberty:21.0.0.9-kernel-java8-ibmjava COPY --chown=1001:0 server.xml /config COPY --from=staging /staging/lib.index.cache /lib.index.cache COPY --from=staging /staging/myThinApp.jar /config/dropins/spring/myThinApp.jar ARG VERBOSE=true RUN configure.sh

leochr commented 2 years ago

@isalkovic Apologies for the delay. Are you still encountering this issue?

psihovjeverica commented 2 years ago

@leochr I gave up and swithced to one of the Open Liberty profiles where the same approach worked. If it is important for you I gan dig in to get more details.

leochr commented 2 years ago

@psihovjeverica Glad that you got it to work. We'll try to reproduce with one of the sample spring app. Thanks.

leochr commented 2 years ago

@psihovjeverica I managed to reproduce the issue you were hitting by using same Dockerfile above, but with one of our sample spring app.

The permission problem is related to these lines in the Dockerfile:

COPY --from=staging /staging/lib.index.cache /lib.index.cache COPY --from=staging /staging/myThinApp.jar /config/dropins/spring/myThinApp.jar

I was able to create image successfully after changing the above lines to include --chown=1001:0, like this:

COPY --from=staging --chown=1001:0 /staging/lib.index.cache /lib.index.cache COPY --from=staging --chown=1001:0 /staging/myThinApp.jar /config/dropins/spring/myThinApp.jar

Explanation: The configure.sh script tries to change the permission of some folders (after adding new features using installUtility), but it couldn't change permission for the above files, since they were copied as root user (COPY command copies as root-user). We'll evaluate whether permission operation can be scoped down. Open Liberty uses featureUtility and has slightly different scripts, hence you didn't encounter the same issue with it.

isalkovic commented 2 years ago

Thanks a lot for following up on this, for me it made more sense to just switch to OL image at that moment :-)

It could make sense for the line to be expanded to include chown also in OL (if same user is running in OL) - just for people like mw who try to switch from one to another. ;-)

On Fri, Feb 4, 2022 at 11:24 PM Leo Christy Jesuraj < @.***> wrote:

@psihovjeverica https://github.com/psihovjeverica I managed to reproduce the issue you were hitting by using same Dockerfile above, but with one of our sample spring app.

The permission problem is due to these lines in the Dockerfile:

COPY --from=staging /staging/lib.index.cache /lib.index.cache COPY --from=staging /staging/myThinApp.jar /config/dropins/spring/myThinApp.jar

I was able to create image successfully after changing the above lines to include --chown=1001:0, like this:

COPY --from=staging --chown=1001:0 /staging/lib.index.cache /lib.index.cache COPY --from=staging --chown=1001:0 /staging/myThinApp.jar /config/dropins/spring/myThinApp.jar

Explanation: The configure.sh script tries to change the permission of some folders (after adding new features using installUtility), but it couldn't change permission for the above files, since they were copied as root user (COPY command copies as root-user). We'll evaluate whether permission operation can be scoped down. Open Liberty uses featureUtility and has slightly different scripts, hence you didn't encounter the same issue with it.

— Reply to this email directly, view it on GitHub https://github.com/WASdev/ci.docker/issues/420#issuecomment-1030398043, or unsubscribe https://github.com/notifications/unsubscribe-auth/AEMWTULF4AKXY6JHE437LJTUZRGZZANCNFSM5H5BWJMQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you were mentioned.Message ID: <WASdev/ci. @.***>

-- (_/) (='.'=) This is Bunny. Copy and paste Bunny into (")(") your signature to help him gain world domination.

leochr commented 2 years ago

@isalkovic You're welcome! Agree, I've already submitted a PR to update the sample Dockerfile (here)