微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 你如何使用docker迭代开发?

如何使用Docker迭代开发他们的应用程序?我刚刚开始使用它,我的工作流程很慢,所以我很确定我使用它错了.

我正在关注Youtube上的python机器学习课程,所以我使用Docker来处理python 3.我知道我可以使用virtualenv或VM,但我也想学习Docker,所以请耐心等待.

我的根目录如下所示:

Dockerfile  main.py*

我的码头文件

FROM python
copY . /src
RUN pip install quandl
RUN pip install pandas
CMD ["python", "/src/main.py"]

和Python文件

#!/usr/bin/env python

import pandas as pd
import quandl

print("Hello world from main.py")

df = quandl.get("WIKI/GOOGL")

print("getting data frame for WIKI/GOOGL")
print(df.head())

我的工作流程是:

>从本教程中学习新内容
>更新python文件
>构建docker镜像:docker build -t myapp.
>运行应用程序:docker运行我的应用程序python /src/main.py

问题:

>我怎样才能加速这一切?对于我想要尝试的每一个改变,我最终都会重建.这会导致pip每次获取依赖关系,这需要花费太长时间.
>如何从容器中运行的python版本获取交互式shell,而不是编辑python文件并运行它?
>如果我希望我的程序写出一个文件,我怎么能在程序完成后从容器中将这个文件带回我的本地系统?

谢谢您的帮助!

编辑:
我应该补充一下,这是我一般在Docker中运行一些python代码的教程:https://www.civisanalytics.com/blog/using-docker-to-run-python/

解决方法:

加快重建进程

您可以做的最简单的事情是重新排序您的Dockerfile.

FROM python
RUN pip install quandl
RUN pip install pandas
copY . /src
CMD ["python", "/src/main.py"]

这有助于Docker将重新使用缓存的构建它已经运行的命令.现在,在修改代码后重建时,它将重新使用pip命令的构建结果,因为它们不需要再次运行.它只会运行copY步骤.

得到一个python shell

您可以在正在运行的容器中执行shell并运行python命令.

docker exec -it <container-id> bash
python <...>

或者,您可以只使用shell运行容器,并完全跳过运行应用程序(然后根据需要运行它).

docker run -it <image> bash
python <...>

写在容器外面

将外部目录挂载到容器中.然后写入已安装的路径.

docker run -v /local/path:/path <.. rest of command ..>

然后,当您将容器写入/ path / file时,该文件显示在/ local / path / file的容器外部.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐