spring-boot - 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] ------------------------------------------------------------------------
解决方案
您应该首先发布您的 Dockerfile 或与该映像构建相关的任何其他信息。
你应该考虑的事情:
- 通常,当人们在他们的主机上构建图像时,他们会将他们的“用户名”包含在“sudo”组和“他们的用户”组中。你的形象不一样。
- 在 docker 构建过程中的某个时候,您应该指定除 root 之外的另一个用户,因为您主机中的用户不在镜像或容器上。(您可以运行“docker run -u ...”即)
- 有时包管理器也有一个组和用户。不确定 Maven,(您的容器中还应该有该用户或组)
- 不仅是“谁拥有目录”,而且是“任务执行时何时拥有”
- 不仅仅是设置文件权限,还有所有权。
- 始终检查容器中的用户以与主机“docker exec -it cat /etc/passwd”进行比较
要检查该映像构建的内容之间的差异,请使用“docker exec -it ls -lah /dir”,您可以列出在此过程中受影响的特定文件夹。
推荐阅读
- class - 如何从活动中调用非活动类中的方法
- jquery - 在 dynatable 中创建带有预定义查询的按钮菜单
- java - Recyclerview 适配器无法正常工作
- performance - 在 go (golang) 中每天触发一次滴答声 - 不是通过轮询
- java - 如何创建支持深度复制的深度嵌套数据模型?
- c++ - 您可以在变量声明/初始化中使用多个 std::tie 而不重复 std::tie 吗?
- python - 有没有办法将部分孟加拉字体从 json 转换出来?
- firebase - Firestore 可以读取 collection('users') 但不能读取 doc('users/{id}')
- matlab - bvp4c Matlab:输入参数过多错误
- assembly - 通过参数寄存器 (MIPS 24KEc) 传递给 Linux 内核的引导加载程序参数