Python当前目录下的脚本

所以,我遇到了一些特殊情况,我试图find一个干净的解决scheme。

目前我们有18个不同的回购,所有与python部署实用程序复制和粘贴18次与venv …对我来说这是令人厌恶的。

我想将这些实用程序烧成一些“工具”docker镜像,只需要执行它们,而不必让每个文件夹都安装所有依赖项18次。

/devtools/venv /user-service/code /data-service/code /proxy-service/code /admin-service/code 

最终,我想CD到用户服务,并运行类似于docker run tools version_update.py的命令 – 并有docker镜像装载用户服务的代码,并运行脚本。

我将如何做到这一点,有没有更好的办法,我没有看到?

为什么使用docker?

我build议把你的脚本放到你的服务旁边的“工具”目录下(或者你认为合适的地方),然后你可以进入你的服务目录并运行python ../tools/version_update.py

这将取决于你的docker形象,但这是基本的概念。

在你的docker镜像中,假设我们有一个/code目录,在那里我们将安装我们想要处理的源代码,还有一个/tools目录和我们所有的脚本。

然后,我们可以将任何我们想要的目录挂载到docker映像的/code目录中,并运行我们想要的任何脚本。 容器内部的工作目录将被设置为/code ,path中也会有/tools 。 因此,使用你的例子,docker运行命令看起来像这样。

 docker run -v /user-service/code:/code tools version_update.py 

这将运行docker镜像tools ,将local /user-service/code目录挂载到容器中的/code目录,然后在该代码上运行version_update.py脚本。 然后退出。

所有其他项目也可以使用相同的图像,只需更改安装点即可。 (假设它们都具有相同的结构)

 docker run -v /data-service/code:/code tools version_update.py docker run -v /proxy-service/code:/code tools version_update.py docker run -v /admin-service/code:/code tools version_update.py 

如果你想运行一个不同的工具,只需要改变你传入的命令。

 docker run -v /user-service/code:/code tools other_command.py