我使用 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”创建的所有新文件都有根所有者和组。
我尝试添加user: user
在容器的 Compose 配置中django-project
。
但有例外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 所有权?
if your useradd
那么最后一个难题是在构建容器时切换到 Dockerfile 中的该用户来运行特定命令:
https://docs.docker.com/engine/reference/builder/#user https://docs.docker.com/engine/reference/builder/#user
请注意,指定user: user
docker-compose.yml 中的内容仅影响启动容器时运行的最终进程(即ENTRYPOINT
or CMD
)
https://docs.docker.com/engine/reference/run/#user https://docs.docker.com/engine/reference/run/#user
所以你需要:
FROM python:2.7
ENV PYTHONUNBUFFERED 1
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
USER user
RUN mkdir /code
WORKDIR /code
ADD . /code/
RUN pip install -r requirements.txt
WORKDIR /code/example
ENTRYPOINT ["python", "manage.py"]
或者你可以将所有内容运行为root
用户但是chown
所有文件作为RUN
Dockerfile 中的步骤:
FROM python:2.7
ENV PYTHONUNBUFFERED 1
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
RUN mkdir /code
WORKDIR /code
ADD . /code/
RUN chown -R user /code
RUN pip install -r requirements.txt
WORKDIR /code/example
ENTRYPOINT ["python", "manage.py"]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)