在Docker中构buildgradle项目
我有一个简单的Gradle项目,我想在Docker容器中构build
我有一个多阶段dockerbuild设。 第一阶段只是从github克隆项目。 第二阶段必须build立项目,以便在最后阶段运行。 但它没有进入
FROM gradle:4.2.1-jdk8-alpine WORKDIR /app COPY --from=0 /app/myProject /app RUN ./gradlew build --stacktrace
命令./gradlew build --stacktrace
无法执行并失败,并显示以下错误:
FAILURE: Build failed with an exception. * What went wrong: Could not update /app/.gradle/3.5-rc-2/file-changes/last-build.bin
和堆栈跟踪:
org.gradle.api.UncheckedIOException: Could not update /app/.gradle/3.5-rc-2/file-changes/last-build.bin at org.gradle.api.internal.changedetection.state.FileTimeStampInspector.updateOnFinishBuild(FileTimeStampInspector.java:72) at org.gradle.api.internal.changedetection.state.BuildScopeFileTimeStampInspector.stop(BuildScopeFileTimeStampInspector.java:38) at org.gradle.internal.concurrent.CompositeStoppable.stop(CompositeStoppable.java:98) ..... Caused by: java.io.FileNotFoundException: /app/.gradle/3.5-rc-2/file-changes/last-build.bin (Permission denied) at java.io.FileOutputStream.open0(Native Method) ......
为什么docker用户没有权限在工作目录中创build文件以及如何添加这些权限? 简单RUN chmod 777 /app
不起作用,并告诉我: chmod: /app: Operation not permitted
根据Gradle的Dockerfile:4.2.1-jdk8-alpine at,它的默认用户是“ gradle ”。 您从应用程序目录复制到泊坞窗图像的应用程序目录的文件可能没有“gradle”用户的权限。
您应该在Dockerfile中添加三个额外的命令来设置正确的权限:
FROM gradle:4.2.1-jdk8-alpine WORKDIR /app COPY --from=0 /app/myProject /app USER root # This changes default user to root RUN chown -R gradle /app # This changes ownership of folder USER gradle # This changes the user back to the default user "gradle" RUN ./gradlew build --stacktrace
- 在openshift原点3.7.0-alpha(fedora 26)上的gitlab-ce无法启动
- Docker – php_network_getaddresses错误,当试图连接到数据库
- 在Jenkins的硬件从站上运行docker slave
- DockerHub Webhook触发Jenkins构build
- 牧场主性能(Docker中的Docker?)
- 无法使用openshift部署jhipster-registry
- 将RabbitMQ的策略设置为Dockerfile进程的一部分
- 如何使用Docker创buildPercona XtraDB集群?
- 在OpenShift / Minishift中部署Docker镜像时的权限问题