我尝试使用docker-compose构建docker映像,但出现此错误
/bin/sh: 1: ./gradle: Permission denied
我的Dockerfile是
FROM gradle:6.5.0-jdk11 AS TEMP_BUILD_IMAGE
ENV APP_HOME=/usr/app/
WORKDIR $APP_HOME
COPY build.gradle.kts settings.gradle.kts $APP_HOME
COPY gradle $APP_HOME/gradle
COPY --chown=gradle:gradle . /home/gradle/src
USER root
RUN chown -R gradle /home/gradle/src
RUN ./gradle build || return 0
COPY . .
RUN ./gradle clean build
FROM openjdk:11-jdk
ENV ARTIFACT_NAME=app.jar
ENV APP_HOME=/usr/app/
WORKDIR $APP_HOME
COPY --from=TEMP_BUILD_IMAGE $APP_HOME/build/libs/$ARTIFACT_NAME .
ENTRYPOINT exec java -jar ${ARTIFACT_NAME}
这就是我从外壳中得到的
D:\Docker>docker-compose up -d
Building config-server
Step 1/17 : FROM gradle:6.5.0-jdk11 AS TEMP_BUILD_IMAGE
---> a001e5b2850a
Step 2/17 : ENV APP_HOME=/usr/app/
---> Using cache
---> 07cf3a267c37
Step 3/17 : WORKDIR $APP_HOME
---> Using cache
---> 87be3841245e
Step 4/17 : COPY build.gradle.kts settings.gradle.kts $APP_HOME
---> Using cache
---> eff11fa2348e
Step 5/17 : COPY gradle $APP_HOME/gradle
---> Using cache
---> 10fca093f82e
Step 6/17 : COPY --chown=gradle:gradle . /home/gradle/src
---> b1f888f97818
Step 7/17 : USER root
---> Running in bde4f2d435fe
Removing intermediate container bde4f2d435fe
---> e8fba435db0c
Step 8/17 : RUN chown -R gradle /home/gradle/src
---> Running in d88ea2196f38
Removing intermediate container d88ea2196f38
---> b5b4727dd51f
Step 9/17 : RUN ./gradle build || return 0
---> Running in d218205301d9
/bin/sh: 1: ./gradle: Permission denied
Removing intermediate container d218205301d9
---> da37b296879b
Step 10/17 : COPY . .
---> e6cfac4a75a3
Step 11/17 : RUN ./gradle clean build
---> Running in 34480bf73106
/bin/sh: 1: ./gradle: Permission denied
ERROR: Service 'config-server' failed to build: The command '/bin/sh -c ./gradle clean build' returned a non-zero code: 126
请问如何解决此错误?
答案 0 :(得分:1)
您所使用的基础图像本身具有gradle。因此,您无需显式复制gradle。只需从gradle ./
中删除RUN
。
RUN gradle build || return 0
COPY . .
RUN gradle clean build
输出
Step 9/17 : RUN gradle build || return 0
---> Running in fd470c45e443
Welcome to Gradle 6.5!
Here are the highlights of this release:
- Experimental file-system watching
- Improved version ordering
- New samples
For more details see https://docs.gradle.org/6.5/release-notes.html
Starting a Gradle Daemon (subsequent builds will be faster)
> Task :buildEnvironment
------------------------------------------------------------
Root project
------------------------------------------------------------
classpath
No dependencies
A web-based, searchable dependency report is available by adding the --scan option.
BUILD SUCCESSFUL in 25s
1 actionable task: 1 executed
Removing intermediate container fd470c45e443
---> dd4056a53129
Step 10/17 : COPY . .
---> 3a46c7e9d9bb
Step 11/17 : RUN gradle clean build
---> Running in c3341e91aef0
Welcome to Gradle 6.5!