Docker 编写安装requirements.txt

2024-01-20

在我的 docker 镜像中,我正在克隆 git master 分支来检索代码。我使用 docker-compose 作为开发环境,并使用卷运行容器。我在从 python requests.txt 文件安装新项目需求时遇到了问题。在开发环境中,它永远不会对开发环境安装新的要求,因为在重新构建镜像时,最新的代码是从github拉取的。

下面是我的 dockerfile 的示例:

FROM base

# Clone application
RUN git clone repo-url
# Install application requirements
RUN pip3 install -r app/requirements.txt

# ....

这是我的撰写文件:

myapp:
    image: development
    env_file: .env
    ports:
        - "8000:80"
    volumes:
        - .:/home/app

    command: python3 manage.py runserver 0.0.0.0:8000

有没有办法在开发后安装新添加的需求?


有两种方法可以做到这一点。

By hand

您可以进入容器并自行操作。缺点:不自动化。

$ docker-compose exec myapp bash
2912d2cd9eab# pip3 install -r /home/app/requirements.txt

使用入口点脚本

您可以使用运行准备工作的入口点脚本,然后运行命令。

Dockerfile:

COPY entrypoint.sh /entrypoint.sh
RUN chmod 755 /entrypoint.sh

# ... probably other stuff in here ...

CMD ["python3", "manage.py", "runserver", "0.0.0.0:8000"]
ENTRYPOINT ["/entrypoint.sh"]

入口点.sh:

#!/bin/sh

cd /home/app
pip3 install -r requirements.txt

# May as well do this too, while we're here.
python3 manage.py migrate

exec "$@"

入口点在容器启动时像这样运行:

/entrypoint.sh $CMD

扩展到:

/entrypoint.sh python3 manage.py runserver 0.0.0.0:8000

首先运行准备工作,然后在入口点脚本的末尾,执行传入的参数。这是您的命令,因此 Entrypoint.sh 退出并被您的 Django 应用服务器替换。

UPDATE:

聊完评论后发现使用很重要exec运行该命令,而不是像这样在入口点脚本末尾运行它:

python3 manage.py runserver 0.0.0.0:8000

我不太记得为什么它很重要,但我以前也遇到过这个。您需要执行该命令,否则它将无法正常工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker 编写安装requirements.txt 的相关文章

  • 如何在 Google App Engine 中为模型定义唯一属性?

    我需要一些独特的属性 我怎样才能实现这个目标 有没有类似的东西unique True 我正在使用适用于 Python 的 Google App Engine Google 提供了执行此操作的函数 http code google com a
  • Pandas Dataframe.to_csv 小数=',' 不起作用

    在 Python 中 我正在将 Pandas Dataframe 写入 csv 文件 并希望将小数分隔符更改为逗号 像这样 results to csv D Data Kaeashi BigData ProcessMining Voorbe
  • 如何计算具有较大中间值的总和

    我想计算 for n m两个值都是 1000 以内的整数 最终结果是一个不大于 1000 的数字n但中间值对于 python 来说太大了 无法处理 你怎么解决这个问题 我将函数定义如下 from scipy misc import comb
  • 如何让MagicMock返回多个值

    我想模拟一个图书馆 matplotlib对于它的价值 并且遇到一个问题 当调用模拟并期望返回元组时 它会失败 有一个更好的方法吗 Python 3 7 2 default Jan 13 2019 12 50 15 Clang 10 0 0
  • Git 命令查找哪些分支合并到当前分支以及何时合并

    我有几个功能分支正在自动合并到集成分支中 我想知道这种情况是否以及何时发生 我可以打字git log这将向我显示合并已经发生 但由于某种原因 它没有向我显示来自哪个功能分支 它只是说 将integration branch合并到integr
  • ctypes.ArgumentError:不知道如何转换参数

    我在C库中定义了一个函数 如下所示 int Test char str1 int id1 char str2 float val float ls 我想在Python中使用它 所以我编写了以下Python代码 str1 a str2 b i
  • seaborn 未在定义的子图中绘制

    我正在尝试用这段代码并排绘制两个图表 fig ax1 ax2 plt subplots 1 2 sns displot x X train Age hue y train ax ax1 sns displot x X train Fare
  • 如何读取 sql 查询到 pandas dataframe / python / django

    我在下面使用这个views py获取应用程序 from django db import connection def test request cursor connection cursor sql SELECT x n from ta
  • 如何在Python模拟中调用模拟方法

    我想创建一个模拟方法来调用被模拟的底层方法 我正在想象类似以下的内容 但我找不到任何有关模拟对象的文档 该对象包含对被模拟对象的引用 我将其表示为 wrapped method foo below from mock import patc
  • Python 异步 REST API 的响应依赖于 CPU 密集型计算。如何高效处理? [复制]

    这个问题在这里已经有答案了 我已经使用编写了一个基本的 REST APIaiohttp https aiohttp readthedocs io en stable index html 下面包含其简化版本 以说明我想要解决的问题 该 AP
  • python 中使用 scipy 截断正态分布

    我正在尝试使用截断正态分布scipy在Python3 我想做一些简单的事情 绘制以 0 5 为中心 范围从 0 到 1 的截断法线的 pdf 我有以下代码行 from scipy import truncnorm import matplo
  • 中断QThread睡眠

    我想知道如何暂停 QThread 然后在收到信号时恢复 我已阅读并知道我可以做这样的事情 def run self self ready False while not self ready self sleep 1 QtCore Slot
  • 如何使用 Python Flask-Security 使用 bcrypt 加密密码?

    我正在尝试使用 Flask Security 文档中的标准基本示例 并使其正常工作 除了密码以明文形式存储之外 我知道这一行 user datastore create user email email protected cdn cgi
  • 仅打印字符串中的元音

    我是Python新手 我正在尝试打印字符串中的所有元音 因此 如果有人输入 嘿 一切都好吗 所有元音都需要打印 但我不知道怎么做 所以这不是计算元音 而是打印元音 现在我已经得到了这个 sentence input Enter your s
  • 是否有一个 Git 命令可以在推送到 master 之前添加通知/警告

    我有一个用例 其他人依赖我在从 master 下拉时没有启用标志 但我需要在本地处理存储库时启用它 我希望 希望 Git 有一种方法可以添加通知或警告 当请求推送到 master 时会触发 作为某种 提醒 所以也许我的工作流程可能是这样的
  • Django 1.6:如何在视图中访问静态文件

    我已经尝试过解决方案here https stackoverflow com questions 11721818 django get the static files url in view这对我不起作用 我正在为 Python 创建一
  • 如何下载和使用对象检测数据集(例如 coco 或 pascal)

    我对物体检测领域非常陌生 我想知道是否有人可以帮助我下载和使用对象检测数据集 例如 coco 或 pascal 当我下载数据集后访问他们的网站时 我觉得我不知道应该如何处理它们 我知道这个问题很愚蠢 但是开始的提示可能非常有用 谢谢 我正在
  • FileAllowed 不显示错误消息

    我正在使用 WTForms 我正在对文件上传应用验证 并将其限制为仅 jpg png 和 pdf 格式 但是 如果我输入不正确 则不会出现错误消息 我按照这个教程https flask wtf readthedocs io en stabl
  • 媒体文件上的 404 - Django

    昨晚我将项目上传到 pythonanywhere com 我想在那里测试我的项目生产设置 在我允许的模型之一中用户上传JPG 团队徽标 上传过程运行良好 文件位于我的 MEDIA ROOT 中 问题是 当我尝试在模板中访问它 以将其显示在页
  • 编辑 git patch 给出“您编辑的块不适用”

    我正在交互地添加一个文件 git add template panels panel reports php p diff git a template panels panel reports php b template panels

随机推荐

  • 带有 C++ DLL 的 Excel-VBA 有时会崩溃

    我制作了非常简单的 c dll 只有一个函数 int DLL EXPORT stdcall foo double source return 0 我正在尝试这样使用它 Option Explicit Private Declare PtrS
  • 在 iOS 上从内存数据流播放音频

    我正在将音频库移植到 iOS 允许播放回调提供的音频流 用户提供返回原始 PCM 数据的回调 我需要播放该数据 此外 该库必须能够同时播放多个流 我想我需要使用 AVFoundation 但似乎 AVAudioPlayer 不支持流式音频缓
  • 使用 hibernate 事件侦听器更新其他实体中的非规范化值

    我们有一个基于休眠的应用程序 该应用程序已经使用拦截器来触发审计跟踪的创建 它通过挂钩 beforeTransactionComplete 机制来实现此目的 将每个实体的最终状态复制到审核表中 所有实体都有一个版本号 当发生更改时该版本号会
  • Android:File() 的资产文件夹路径?

    我的项目的资产文件夹中有一些文件 我想列出它们 所以我将其放入我的代码中 File dir new File com packagename assets fonts File fileList dir listFiles 我应该采取哪条路
  • Selenium WebDriver 默认使用什么配置文件?

    Selenium WebDriver 又名 Selenium 2 从哪里获取打开 FirefoxDriver 时使用的匿名配置文件 如果它使用 Firefox 的默认值 appdata roaming mozilla firefox pro
  • 如何在 linq to xml 中交换两个 XML 元素

    我想交换两个 xml 元素 我该怎么做呢 这是代码 我尝试了解决方案here https stackoverflow com questions 3695806 linq to xml what is the most effective
  • 在Django中引用View/Template中的多个Model

    我正在使用 Python Django 迈出第一步 并在一个 Django 项目中编写了一个包含多个 Django 应用程序的示例应用程序 现在我添加了另一个名为 仪表板 的应用程序 我想在其中显示来自不同应用程序的数据 目前我仍然使用这个
  • 如何在Windows中使用pygame打开相机?

    我想在 Windows 7 机器上使用 pygame 模块用 Python 打开相机 但它不起作用 我以前用过 dev video0 这是Linux中的读取设备 pygame 文档仅展示了如何在 Linux 中打开相机设备 我使用的是 py
  • 在 React 中测试 API 调用 - 状态未更新

    我想测试组件中的 API 调用后我的状态是否更新 我有一个方法可以说method1 在该方法中 它调用fetch并将状态设置为结果 方法如下 method1 gt if this state state1 fetch api then re
  • 使用 URL 参数自动填充表单并自动提交

    我想使用 URL 参数自动填充以下表单 例如使用如下 URL example co uk example php acct wirelesslogicde pwd jenkins 如果可能的话 我也希望自动提交 我该怎么做
  • 如何判断TBucketList的桶数

    我一直在使用 TBucketList 和 TObjectBucketList 来满足我的所有哈希需求 但从未尝试过切换存储桶的数量 我隐约记得这在数据结构类中意味着什么 但是有人可以详细说明 Delphi 中这个特定类的细微差别吗 The
  • 是否保证handle_info在超时0的情况下在init之后立即执行?

    我收到一个奇怪的错误报告 这让我认为在 gen server 初始化之前正在执行一些调用 这是初始化代码 init ResourceId gt process flag trap exit true ok not initialized R
  • 如何使用任何库在Python中将RTF字符串转换为纯文本[重复]

    这个问题在这里已经有答案了 我想在不使用正则表达式的情况下将 rtf 字符串转换为纯文本 rtfstring rtf1 ansi ansicpg1252 deff0 deflang1033 fonttbl f0 Arial colortbl
  • 如何使用curl 通过代理模拟来自Firefox 的请求?

    特别是 当我将 Firefox 设置为使用 https 流量代理时 我尝试复制 Firefox 的行为 根据我的测试 Firefox 似乎向代理发送 CONNECT 请求 而以下curl 命令直接向代理发送 GET curl proxy b
  • 将列表框的选定值显示为标签 - 多个值

    我有一个名为 lstPTLNameDHOD 的列表框 其中有多个 PTL 名称 可以使用 Ctrl 键选择这些名称 我想在标签中显示选定的姓名 或者以某种方式显示提交表单的人可以看到他们提交表单的确切对象 我的问题是我只能在标签上显示一个名
  • Python:使用另一个大字典更新一个大字典

    我正在尝试使用另一个字典中的值来更新大型字典的某些值 其中它们具有相似的键 相同的日期但格式不同 我当前使用的流程太慢 我想减少瓶颈 这是我当前的解决方案 它将更新的字典写入文件 from dateutil import parser Fi
  • 在 Node.js 中共享对象并避免全局变量

    在下面的代码片段中共享数据库连接的最合适的方式是什么 db变量 与我的路由器 控制器 无需转动db变量变成全局变量 var mongo require mongoskin db mongo db config db adress app u
  • 使用 Akka 以编程方式获取临时端口

    如果我在 Akka 中将 ActorSystem 配置为使用临时 tcp 端口 更具体地说 我将 http 端口配置为 0 有没有办法在 ActorSystem 启动后以编程方式获取此端口 任何使用 actorOf 创建 Actor 的尝试
  • 如何找到 3 个数组的交集,同时忽略空数组?

    我必须找到 3 个整数数组的交集元素 有条件地说a b c 如果数组中的任何一个为 null 只需忽略该数组并找到剩余数组的交集 如果三个都为 null 则返回 提前致谢 ps 红宝石1 9 3 一种方法是这样的 a b c tap a a
  • Docker 编写安装requirements.txt

    在我的 docker 镜像中 我正在克隆 git master 分支来检索代码 我使用 docker compose 作为开发环境 并使用卷运行容器 我在从 python requests txt 文件安装新项目需求时遇到了问题 在开发环境