Docker撰写文件所有权(Docker compose file ownership)
我用Docker Compose创建了Django项目:
Dockerfile
FROM python:2.7 EV PYTHOUBUFFERED 1 RU mkdir /code WORKDIR /code ADD . /code/ RU pip install -r WORKDIR /code/example ETRYPOIT ["python", "manage.py"]泊坞窗,compose.yml
postgres: image: postgres ports: - '542:542' django-project: build: . command: runserver 0.0.0.0:8000 volumes: - .:/code ports: - '8000:8000' links: - postgres它很好用。 但是通过容器'django-project'创建的所有新文件都有root所有者和组。
我尝试在Compose config中为容器django-project添加user: user 。 但得到异常User user not found 。
我尝试在容器中添加user代码:
EV HOME_USER user EV HOME_PASS password RU useradd -m -s /bin/bash ${HOME_USER} && \ echo "${HOME_USER}:${HOME_PASS}"|chpasswd && \ adduser ${HOME_USER} sudo && \ echo ${HOME_USER}' ALL=(ALL) OPASSWD: ALL' >> /etc/sudoers但例外仍然存在。
如何为将通过docker容器创建的所有新文件应用非root所有权?
I created Django project with Docker Compose:
Dockerfile
FROM python:2.7 EV PYTHOUBUFFERED 1 RU mkdir /code WORKDIR /code ADD . /code/ RU pip install -r WORKDIR /code/example ETRYPOIT ["python", "manage.py"]docker-compose.yml
postgres: image: postgres ports: - '542:542' django-project: build: . command: runserver 0.0.0.0:8000 volumes: - .:/code ports: - '8000:8000' links: - postgresIt work nice. But all new files which create through container 'django-project' have root owner and group.
I try add user: user in Compose config for container django-project. But got exception User user not found.
I try add user in container with code:
EV HOME_USER user EV HOME_PASS password RU useradd -m -s /bin/bash ${HOME_USER} && \ echo "${HOME_USER}:${HOME_PASS}"|chpasswd && \ adduser ${HOME_USER} sudo && \ echo ${HOME_USER}' ALL=(ALL) OPASSWD: ALL' >> /etc/sudoersBut exception stayed.
How I can apply non-root ownership for all new files which will create through docker container?
最满意答案
如果您的useradd工作,那么拼图的最后一部分是切换到Dockerfile中的该用户,以便在构建容器时运行特定命令: https://docs./engine/reference/builder/#user
请注意,在docker-compose.yml中指定user: user只会影响启动容器时运行的最终进程(即ETRYPOIT或CMD ) https://docs./engine/reference/run/#user
所以你需要:
FROM python:2.7 EV PYTHOUBUFFERED 1 EV HOME_USER user EV HOME_PASS password RU useradd -m -s /bin/bash ${HOME_USER} && \ echo "${HOME_USER}:${HOME_PASS}"|chpasswd && \ adduser ${HOME_USER} sudo && \ echo ${HOME_USER}' ALL=(ALL) OPASSWD: ALL' >> /etc/sudoers USER user RU mkdir /code WORKDIR /code ADD . /code/ RU pip install -r WORKDIR /code/example ETRYPOIT ["python", "manage.py"]或者,您可以以root用户身份运行所有内容,但是将所有文件作为Dockerfile中的RU步骤进行chown:
FROM python:2.7 EV PYTHOUBUFFERED 1 EV HOME_USER user EV HOME_PASS password RU useradd -m -s /bin/bash ${HOME_USER} && \ echo "${HOME_USER}:${HOME_PASS}"|chpasswd && \ adduser ${HOME_USER} sudo && \ echo ${HOME_USER}' ALL=(ALL) OPASSWD: ALL' >> /etc/sudoers RU mkdir /code WORKDIR /code ADD . /code/ RU chown -R user /code RU pip install -r WORKDIR /code/example ETRYPOIT ["python", "manage.py"]if your useradd worked then the last piece of the puzzle is to switch to that user in the Dockerfile to run particular commands when the container is built: https://docs./engine/reference/builder/#user
ote that specifying user: user in the docker-compose.yml only affects the final process that's run when you start the container ( the ETRYPOIT or CMD) https://docs./engine/reference/run/#user
So you need to:
FROM python:2.7 EV PYTHOUBUFFERED 1 EV HOME_USER user EV HOME_PASS password RU useradd -m -s /bin/bash ${HOME_USER} && \ echo "${HOME_USER}:${HOME_PASS}"|chpasswd && \ adduser ${HOME_USER} sudo && \ echo ${HOME_USER}' ALL=(ALL) OPASSWD: ALL' >> /etc/sudoers USER user RU mkdir /code WORKDIR /code ADD . /code/ RU pip install -r WORKDIR /code/example ETRYPOIT ["python", "manage.py"]Alternatively you could run everything as root user but chown all the files as a RU step in the Dockerfile:
FROM python:2.7 EV PYTHOUBUFFERED 1 EV HOME_USER user EV HOME_PASS password RU useradd -m -s /bin/bash ${HOME_USER} && \ echo "${HOME_USER}:${HOME_PASS}"|chpasswd && \ adduser ${HOME_USER} sudo && \ echo ${HOME_USER}' ALL=(ALL) OPASSWD: ALL' >> /etc/sudoers RU mkdir /code WORKDIR /code ADD . /code/ RU chown -R user /code RU pip install -r WORKDIR /code/example ETRYPOIT ["python", "manage.py"]#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
推荐阅读
留言与评论(共有 10 条评论) |
本站网友 南京治疗妇科病的医院 | 0秒前 发表 |
542' django-project | |
本站网友 深圳二手 | 15分钟前 发表 |
542' django-project | |
本站网友 吃什么增加记忆力 | 29分钟前 发表 |
"manage.py"] Alternatively you could run everything as root user but chown all the files as a RU step in the Dockerfile | |
本站网友 东四命西四命 | 29分钟前 发表 |
那么拼图的最后一部分是切换到Dockerfile中的该用户 | |
本站网友 待产需要准备什么 | 10分钟前 发表 |
runserver 0.0.0.0 | |
本站网友 邓文迪女儿 | 19分钟前 发表 |
postgres ports | |
本站网友 体检前的注意事项 | 8分钟前 发表 |
runserver 0.0.0.0 | |
本站网友 必须脂肪酸 | 1分钟前 发表 |
ALL' >> /etc/sudoers USER user RU mkdir /code WORKDIR /code ADD . /code/ RU pip install -r WORKDIR /code/example ETRYPOIT ["python" | |
本站网友 薏米的作用 | 19分钟前 发表 |
https |