Docker compose 文件所有权

2024-03-06

我使用 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: userdocker-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所有文件作为RUNDockerfile 中的步骤:

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(使用前将#替换为@)

Docker compose 文件所有权 的相关文章

随机推荐

  • PySide:QPushButton 按下后保持突出显示

    在我的工具中 当用户按下按钮时 会创建一个弹出窗口 我的问题是 用户按下打开窗口的按钮在弹出窗口创建时保持突出显示 就像我将鼠标悬停在它上面一样 并且即使在弹出窗口被删除后仍然保持这种状态 我实际上喜欢弹出窗口处于活动状态时的此突出显示 它
  • 相当于 ASP.NET 中的 ASP.NET MVC TempData

    在 ASP NET MVC 中 有一个 TempData 可以将数据一次从一个页面传递到另一页面 在 ASP NET 中这相当于什么 没有直接的等效项 即仅传递到下一页的数据 您可以使用Session并在接收页面将其清除
  • 保存/提交时重新加载 jqGrid

    我有以下代码可以在双击时进入内联编辑 ondblClickRow function row id if row id null Products jqGrid restoreRow last selected row Products jq
  • 在 Javascript 中模拟 window.location.href

    我对一个使用 window location href 的函数进行了一些单元测试 这并不理想 我宁愿将其传递进去 但在实现中这是不可能的 我只是想知道是否可以模拟这个值而不实际导致我的测试运行器页面实际转到该 URL window loca
  • 对于此场景,在 SQL 中连接多个表

    这是我的表结构 我有3张桌子 会员表 评论表 评论如表 表结构可以在下图中找到 表 会员 user id full name email password image join date 表 专辑 评论
  • 使用Python/Boto/Django构建策略直接上传到S3

    到目前为止 我已经经历了这个问题的多次迭代 搜索了许多不同的示例 并且已经阅读了所有文档 我正在尝试结合 Plupload http www plupload com http www plupload com 与 AWS S3 直接发布方
  • 带有用户输入和选择变量的 Jenkinsfile

    我想使用新的 Jenkinsfile 来完成新的工作 我有 jenkinsfile 它位于单独的存储库中 我从另一个 GitLab 存储库获取分支git ls remote在bash中 我将它们存储在变量中 branch1 branch2
  • Ionic 3 - cocoapods 的 xcode 错误

    我尝试构建一个带有推送通知的 ionic 3 应用程序 但我在 iOS 部署方面遇到了一些问题 我在 xcode 中遇到了 3 个错误 diff Podfile lock No such file or directory diff Man
  • 为什么 GHC 使修复变得如此令人困惑?

    查看 GHC 源代码我可以看到定义fix is fix a gt a gt a fix f let x f x in x 在一个例子中fix像这样使用 fix f x gt let x x 1 in x f x 这基本上会产生一系列加一到无
  • 支持索引视图的会话设置

    我在数据库中使用索引视图 因此客户端应该有一些会话连接设置来调用它们 我正在使用 ado net 连接 命令调用存储过程 每次我必须调用存储过程时 我都会创建连接 我希望连接池允许我快速完成此操作 并执行命令以将这些设置应用到当前连接 so
  • 如何在 Android Studio 中显示行号[重复]

    这个问题在这里已经有答案了 我正在发布 如何在 Android Studio 中显示行号 的快速参考 请参阅下面的答案 注意 这个问题已被标记为重复 因为 Android Studio 基于IntelliJ http blog jetbra
  • 相同的字体在 Chrome 与 Firefox、IE 和 Safari 中看起来不同

    该问题与在不同浏览器中呈现字体有关 我很惊讶地发现这个问题只在 Chrome 中重现 它在 Firefox IE8 Safari 甚至 IE6 中运行良好 样品来了 这是代码本身 div style padding top 1px widt
  • ReactJS:使用 useState 管理多个复选框输入

    我有以下示例组件 它使用多个复选框来选择要从对象列表中删除的项目 import React useState from react import styles css const data name test1 result pass na
  • 使用 JLayeredPane 创建棋盘游戏布局

    我有一项任务要求我创建您在图像中看到的布局 作为游戏开发的一部分 我以前从未在桌面应用程序中使用过 Java 因此在使用 Swing 和 AWT 库方面我完全是个菜鸟 该图像建议我们使用 JLayeredPane 作为根容器 然后将其余部分
  • 支持 R2dbcRepository 中的异常处理,或者如何使用我自己的错误处理程序来装饰 R2dbcRepository 中的每个方法调用

    背景 我有一个应用程序范围的通用异常处理程序来翻译来自R2dbcRepository 例如 摘录只是为了显示预期目的 Component public class ErrorHandler public Throwable mapError
  • Javascript insideHtml 不工作

    我想创建一个函数来替换单击后的 h1 html 它似乎不起作用 我不知道我做错了什么 这是我的 JavaScript function changeToYoMaMa el el innerHtml h1 Yo Mama h1 var el
  • 如何绑定到任何可用端口?

    我需要一个将 UDP 数据包发送到某个网络服务器并接收响应的应用程序 服务器回复请求所在的相同端口号 因此我首先需要将我的套接字绑定 到任何 UDP 端口号 对 UDP 端口号进行硬编码是一个坏主意 因为它可能会被同一台 PC 上运行的任何
  • WPF 简单的提示和技巧? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我在研究边距和填充时发现负值是可以接受的 并且在适当的情况下会产生很好的效果 例如 如果您的边框带有填充对象 并且您希望填充对象颜色超
  • 动态组件流畅自动映射

    有谁知道如何在 NHibernate 中使用 Fluent Automapping 自动映射动态组件 我知道我们可以将普通类映射为组件 但无法弄清楚如何使用流畅的自动映射将字典映射为动态组件 Thanks 我们成功地使用了以下方法 流畅NH
  • Docker compose 文件所有权

    我使用 Docker Compose 创建了 Django 项目 Dockerfile FROM python 2 7 ENV PYTHONUNBUFFERED 1 RUN mkdir code WORKDIR code ADD code