2016-03-10 5 views
3

Я работаю с сельдереем под докером. Я бы хотел, чтобы цветок Сельдерей продолжался. Так что я:Доступ с помощью тома из контейнера, когда он не работает как root?

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, но в [base code image] я обеспечить приработки пользователь не корень, а в доках сельдерей в никогда не бежать как корень:

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

Что бы лучший способ для сельдерея цветов продолжать не работать как root, но сможете использовать этот именованный том?

ответ

1

следующие работы: В 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" 

Я не уверен, что это лучший способ, или что это последствия безопасности.