【问题标题】:Scripts within Python on current directory当前目录中 Python 中的脚本
【发布时间】:2016-05-03 07:34:53
【问题描述】:

所以,我有点特殊情况,我正在尝试找到一个干净的解决方案。

目前我们有 18 个不同的存储库,全部使用 python 部署实用程序使用 venv 复制和粘贴 18 次...对我来说这很恶心。

我想将这些实用程序烘焙到某种“工具”docker 映像中,并在我需要的任何地方执行它们,而不必让每个文件夹安装所有依赖项 18 次。

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

最终我想 CD 进入用户服务,并运行类似于docker run tools version_update.py 的命令——并让 docker 映像挂载用户服务的代码并针对它运行脚本。

我该怎么做,有没有更好的方法我没有看到?

【问题讨论】:

    标签: python flask docker containers


    【解决方案1】:

    为什么要使用 docker?

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

    【讨论】:

      【解决方案2】:

      这取决于您的 docker 映像,但这是基本概念。

      在您的 docker 映像中,假设我们有一个 /code 目录,我们将在其中挂载我们想要处理的源代码,还有一个 /tools 目录,其中包含我们所有的脚本。

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

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

      这将运行tools docker 映像,将本地/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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-02-10
        • 2012-04-11
        • 2013-06-26
        • 2021-10-25
        • 2012-06-09
        • 2023-03-29
        相关资源
        最近更新 更多