您现在的位置是:首页 > 电脑 > 

Docker撰写文件所有权(Docker compose file ownership)

2025-07-27 15:24:35
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
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: - postgres

It 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/sudoers

But 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组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/diannao/654015.html

相关标签:无
上传时间: 2023-07-28 12:47:15
留言与评论(共有 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