gpt4 book ai didi

Docker-compose 和命名卷权限被拒绝

转载 作者:行者123 更新时间:2023-12-02 21:32:58 53 4
gpt4 key购买 nike

有 docker-compose 使用基本 Dockerfile 创建的图像作为应用程序。
Dockerfile 类似于下图。出于某些原因,省略了一些行。

FROM ubuntu:18.04

RUN set -e -x ;\
apt-get -y update ;\
apt-get -y upgrade ;

...

USER service
在 docker-compose 中使用此图像并将命名卷添加到服务时,无法访问命名卷中的文件夹,并显示消息 Permission denied .来自 docker-compose 的部分如下所示。
version: "3.1"
services:
myapp:
image: myappimage
command:
- /myapp
ports:
- 12345:1234
volumes:
- logs-folder:/var/log/myapp

volumes:
logs-folder:
我的假设是 USER service线路是问题,我通过设置 user: root 确认了这一点在 myapp 服务中。
现在,问题是下一个。我想避免手动创建卷和设置权限。我希望它使用 docker-compose 自动化。
这是可能的,如果是,如何做到这一点?

最佳答案

是的,有一个技巧。不是真的在 docker-compose 文件中,而是在 Docker 文件中。您需要创建 /var/log/myapp文件夹并在切换到 service 之前设置其权限用户:

FROM ubuntu:18.04

RUN useradd myservice
RUN mkdir /var/log/myapp
RUN chown myservice:myservice /var/log/myapp

...

USER myservice:myservice
Docker-compose 将保留权限。
Docker Compose mounts named volumes as 'root' exclusively

关于Docker-compose 和命名卷权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64027052/

53 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com