【发布时间】:2016-01-26 07:26:58
【问题描述】:
我使用 Docker Compose 创建了 Django 项目:
Dockerfile
FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD . /code/
RUN pip install -r requirements.txt
WORKDIR /code/example
ENTRYPOINT ["python", "manage.py"]
docker-compose.yml
postgres:
image: postgres
ports:
- '5432:5432'
django-project:
build: .
command: runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- '8000:8000'
links:
- postgres
效果很好。 但是通过容器 'django-project' 创建的所有新文件都有 root 所有者和组。
我尝试在容器 django-project 的 Compose 配置中添加 user: user。
但是遇到了异常User user not found。
我尝试在容器中添加user 代码:
ENV HOME_USER user
ENV HOME_PASS password
RUN useradd -m -s /bin/bash ${HOME_USER} && \
echo "${HOME_USER}:${HOME_PASS}"|chpasswd && \
adduser ${HOME_USER} sudo && \
echo ${HOME_USER}' ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
但异常仍然存在。
如何为将通过 docker 容器创建的所有新文件应用非 root 所有权?
【问题讨论】:
-
您需要在您的 dockerfile 中创建一个将被分配所有权的新用户,然后将 /app 文件夹分配给该用户。
-
我用有问题的代码添加用户,但新文件仍以 root 作为所有者创建。我从非root用户制作
docker-compose up。我可以将此用户设置为所有新文件的所有者吗?
标签: django docker-compose file-ownership