首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CNB码头图像卷的写入访问

CNB码头图像卷的写入访问
EN

Stack Overflow用户
提问于 2021-04-27 09:05:34
回答 1查看 311关注 0票数 0

我正在开发一个spring引导应用程序,它应该迁移到docker容器(用于作为服务器上的systemd服务运行),该应用程序在文件系统上读写一个可配置的路径--现在假设它是/var/mypath

我使用springs插件中的bootBuildImage任务构建了一个坞映像。它使用了看似默认的构建器映像,即gcr.io/paketo-buildpacks/builder来构建应用程序映像。

因此,在一个坞编写文件中,我用(不重要的) mysql db和spring引导应用程序定义了一个堆栈,如下所示:

代码语言:javascript
复制
version: "3.8"

services:
  backend_db:
    container_name: "backend_db"
    image: "mariadb:latest"
    # ...

  backend_app:
    depends_on:
      - "backend_db"
    container_name: "backend_app"
    image: "myImageName:latest"
    restart: always
    ports:
      - 8080:8080
    volumes:
      - "app:/var/mypath"
    environment:
      # mysql data etc...

volumes:
  db:
  app:

当我用docker-compose up启动它时,spring引导应用程序在/var/mypath上没有写访问权限。我发现,很明显,CNB构建使得spring应用程序以用户cnb的身份运行。我想,卷是作为root创建的,只有root才能对其进行写访问。

手动-chown方法似乎不太理想,因为我本来希望能够只在服务器上执行docker-compose up,而不是手动切换,但无论如何:我尝试从容器中向cnb用户发送卷,但没有成功:

/var/mypath/ chown:更改‘/var/mypath/’的所有权:不允许操作

如何确保spring引导应用程序能够编写卷?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-28 08:15:16

毕竟,我设法实现了chown/chgrp卷--我的错误是它不能在容器内工作(没有sudo) --但是它使用docker exec从外部运行,指定根用户:

代码语言:javascript
复制
docker exec -u 0 -it backend_app chown cnb /var/mypath
docker exec -u 0 -it backend_app chgrp cnb /var/mypath

用户@卡住还提出了一种更精细的方法,即创建另一个停靠者图像层:can bootBuildImage create writeable volumes?

Spring的安迪·威尔金森()指出,这是一个一般性的码头问题--因此,如果将来会出现其他解决方案,我很高兴更新这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67280070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档