docker - Docker - 将 Python 和依赖项添加到 Apache
问题描述
我有一个 python 脚本,我正在尝试为其创建一个docker
容器。我是新手,docker
所以如果这真的很简单,请原谅!
如果我python
在新系统上设置现有脚本,我总是运行以下命令来安装依赖项......
pip install numpy opencv-python dlib imutils
我有一个像这样Dockerfile
加载PHP
的基础apache
......
FROM php:7.0-apache
COPY src/ /var/www/html
EXPOSE 80
有没有办法可以添加Python
到堆栈中并安装这些依赖项?还是我完全弄错了 Docker?
解决方案
如果我在第一点上理解正确,您需要从 Python 获取一些包,然后尝试执行一次(例如,我在这里导入 Python 的 2.7 版本的图像)。
FROM python2.7-slim
然后对于多个软件包安装,您可以创建一个名为requirements.txt
(其中将包含所有软件包详细信息)的文件,然后也可以在其中运行以下命令。
cat requirements.txt
numpy
opencv-python
dlib
imutils
pip install -r requirements.txt
如果我在新系统上设置现有的 python 脚本,我总是运行以下命令来安装依赖项......
关于 Docker 概念的一点解释:所以 Docker 的概念不是要在任何机器上安装依赖项,也不要让我们的代码在任何机器上运行,而无需添加额外的东西来安装我们代码的依赖项等。基本上我们的 Dockerize 解决方案应该能够处理任何系统. 以下是步骤:
1- 在 Python 中创建您的代码(这里以它为例)。2-现在将它放在docker的目录中。3- 最重要的步骤创建一个名为Dockerfile
docker 目录的文件。4- 现在提及其中的所有命令序列,以下是 Dockerfile` 的示例:
FROM python2.7-slim
DIR /app
COPY . /app
RUN pip install -r requirements.txt
CMD ["python","your_python_code_file"]
所以在这里你可以看到,每当我们构建我们的镜像(我们的代码和 Dockerfile 的组合)时,我们不需要在我们的实际服务器/机器中安装任何东西,这是 Docker 的好处,我们的镜像应该是免费的。一旦我们构建了图像并将其发布到存储库,任何其他人也可以在任何其他机器上使用相同的图像。
推荐阅读
- excel - 循环遍历列表框多选
- python - 使用多处理有效地切片和读取图像
- ag-grid - 如何在 Ag-grid 中添加行标题?
- system-verilog - 如何使用 uvm 访问基于顺序寄存器的偏移量?
- c# - 为什么在创建新的 AppDomain 时根本不考虑 PrivateBinPath?
- node.js - 使用nodejs在猫鼬中加入两个集合
- liquibase - 使用 liquibase 时,无法获取数据库结果日志
- rx-java2 - RxJava2 合并和多播事件流
- visual-studio-code - flake8 和 vscode:在函数调用中的每个参数后禁用换行符
- vba - 从 VBA 脚本在 MS-project 中设置页面布局