首页 > 解决方案 > Dockerizing Spring Boot 应用程序获取权限被拒绝

问题描述

我正在尝试通过 mvn 命令对 Spring Boot 应用程序进行 dockerize

mvn spring-boot:build-image

但我收到权限被拒绝错误。

[INFO]     [creator]       Spring Cloud Bindings 1.7.1: Contributing to layer
[INFO]     [creator]         Downloading from https://repo.spring.io/release/org/springframework/cloud/spring-cloud-bindings/1.7.1/spring-cloud-bindings-1.7.1.jar
[INFO]     [creator]         Verifying checksum
[INFO]     [creator]         Copying to /layers/paketo-buildpacks_spring-boot/spring-cloud-bindings
[INFO]     [creator]     unable to invoke layer creator
[INFO]     [creator]     unable to link /layers/paketo-buildpacks_spring-boot/spring-cloud-bindings/spring-cloud-bindings-1.7.1.jar to /workspace/BOOT-INF/lib/spring-cloud-bindings-1.7.1.jar
[INFO]     [creator]     symlink /layers/paketo-buildpacks_spring-boot/spring-cloud-bindings/spring-cloud-bindings-1.7.1.jar /workspace/BOOT-INF/lib/spring-cloud-bindings-1.7.1.jar: permission denied
[INFO]     [creator]     ERROR: failed to build: exit status 1
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------

标签: spring-bootdocker

解决方案


您应该首先发布您的 Dockerfile 或与该映像构建相关的任何其他信息。

你应该考虑的事情:

  1. 通常,当人们在他们的主机上构建图像时,他们会将他们的“用户名”包含在“sudo”组和“他们的用户”组中。你的形象不一样。
  2. 在 docker 构建过程中的某个时候,您应该指定除 root 之外的另一个用户,因为您主机中的用户不在镜像或容器上。(您可以运行“docker run -u ...”即)
  3. 有时包管理器也有一个组和用户。不确定 Maven,(您的容器中还应该有该用户或组)
  4. 不仅是“谁拥有目录”,而且是“任务执行时何时拥有”
  5. 不仅仅是设置文件权限,还有所有权。
  6. 始终检查容器中的用户以与主机“docker exec -it cat /etc/passwd”进行比较

要检查该映像构建的内容之间的差异,请使用“docker exec -it ls -lah /dir”,您可以列出在此过程中受影响的特定文件夹。


推荐阅读