【发布时间】:2019-01-30 09:16:05
【问题描述】:
我想将主要在 Python 中开发但依赖于在 R 中训练的模型的代码管道容器化。对于两个代码库所需的要求和包还有一些额外的依赖关系。如何创建一个 Docker 映像,让我可以构建一个容器来同时运行此 Python 和 R 代码?
对于上下文,我有一个运行模型(随机森林)的 R 代码,但它需要是用 Python 构建的数据管道的一部分。 Python 管道首先执行一些功能并为模型生成输入,然后使用该输入执行 R 代码,然后将输出带到 Python 管道的下一个阶段。
所以我通过编写一个简单的测试 Python 函数来调用 R 代码(导入子流程包的“test_call_r.py”)为此过程创建了一个模板,并且需要将其放入具有必要要求的 Docker 容器中以及适用于 Python 和 R 的软件包。
我已经能够为 Python 管道本身构建 Docker 容器,但无法成功安装 R 和相关软件包以及 Python 要求。我想重写 Dockerfile 来创建一个图像来做到这一点。
从 Dockerhub 文档中,我可以使用例如
为 Python 管道创建一个映像FROM python:3
WORKDIR /app
COPY requirements.txt /app/
RUN pip install --no-cache-dir -r requirements.txt
COPY . /app
CMD [ "python", "./test_call_r.py" ]
与 Dockerhub 类似,我可以使用基本 R 映像(或 Rocker)来创建可以运行 randomForest 模型的 Docker 容器,例如,
FROM r-base
WORKDIR /app
COPY myscripts /app/
RUN Rscript -e "install.packages('randomForest')"
CMD ["Rscript", "myscript.R"]
但我需要创建一个可以安装 Python 和 R 的要求和包的映像,并执行代码库以从 Python 中的子进程运行 R。我怎样才能做到这一点?
【问题讨论】:
标签: python r docker dockerfile devops