当前目录下Python中的脚本

时间:2016-05-03 07:34:53

标签: python flask docker containers

所以,我在某种特定情况下,并试图找到一个干净的解决方案。

目前我们有18个不同的回购,所有的python部署实用程序都复制并粘贴18次与venv ...对我来说这很恶心。

我想将这些实用程序烘焙成某种"工具" docker image,只需在我需要的地方执行它们,而不必让每个文件夹安装所有依赖项18次。

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

最终我想将CD转换为用户服务,并运行类似于docker run tools version_update.py的命令 - 并让docker镜像挂载用户服务的代码并针对它运行脚本。

我如何做到这一点,是否有更好的方式我没有看到?

2 个答案:

答案 0 :(得分:1)

为什么要使用docker?

我建议将您的脚本放在服务旁边的“工具”目录中(或者您认为合适的地方),然后您可以进入某个服务目录并运行python ../tools/version_update.py

答案 1 :(得分:0)

这取决于您的码头图片,但这是基本概念。

在您的docker镜像中,假设我们有一个export default class Page extends Component { async getUser() { // get from AsyncStorage this.setState({user}); } componentWillMount() { this.getUser(); } } export default class Home extends Page { async foo(user_id) { this.setState({something}); } componentWillMount() { this.foo(this.state.user); } render() { return <Text>{this.state.something}</Text>; } } 目录,我们将安装我们想要处理的源代码,以及一个包含所有脚本的/code目录。

然后我们可以将所需的任何目录挂载到docker镜像中的/tools目录中,并运行我们想要的脚本。容器内的工作目录将设置为/code,路径中也会有/code。因此,使用您的示例,docker run命令将如下所示。

/tools

这将运行docker run -v /user-service/code:/code tools version_update.py docker镜像,将本地tools目录挂载到容器中的/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