Docker 当不是以根用户身份运行时,是否从容器访问命名卷?

Docker 当不是以根用户身份运行时,是否从容器访问命名卷?,docker,permissions,celery,docker-compose,flower,Docker,Permissions,Celery,Docker Compose,Flower,我在Docker Compose手下经营芹菜。我想做芹菜花。因此,我: version: '2' volumes: [...] flower_data: {} [...] flower: image: [base code image] ports: - "5555:5555" volumes: - flower_data:/flower command: celery -A proj flower --port=5555 --persistent

我在Docker Compose手下经营芹菜。我想做芹菜花。因此,我:

version: '2'
volumes:
  [...]
  flower_data: {}
[...]
flower:
  image: [base code image]
  ports:
    - "5555:5555"
  volumes:
    - flower_data:/flower
  command:
    celery -A proj flower --port=5555 --persistent=True --db=/flower/flower
然而,我得到:

IOError: [Errno 13] Permission denied: 'flower.dat'
我运行以下命令来解释原因:

    bash -c "ls -al /flower; whoami; celery -A proj flower --persistent=True --db=/flower/flower"
这清楚地说明了原因:

flower_1 | drwxr-xr-x 3 root root 4096 Mar 10 23:05 .
flower_1 | drwxr-xr-x 7 root root 4096 Mar 10 23:05 ..
也就是说,目录被装载为
root
,但在
[基本代码图像]
中,我确保运行的用户不是root,因为芹菜的docks永远不会以root身份运行:

FROM python:2.7
...
RUN groupadd user && useradd --create-home --home-dir /usrc/src/app -g user user
USER user


芹菜花继续以非root身份运行,但能够使用此命名卷的最佳方式是什么?

以下操作:在Dockerfile中,安装
sudo
并将
user
添加到
sudo
组,需要密码:

RUN apt-get update
RUN apt-get -y install sudo
RUN echo "user:SECRET" | chpasswd && adduser user sudo
然后,在Docker Compose配置中,命令为:

bash -c "echo SECRET | sudo -S chown user:user /flower; celery -A proj flower --power=5555 --persistent --db=/flower/flower"
不过,我不确定这是否是最好的方法,也不确定这会带来什么安全影响