【问题标题】:How can I run a Python script in a remote Docker container?如何在远程 Docker 容器中运行 Python 脚本?
【发布时间】:2016-05-19 18:29:05
【问题描述】:

我是 Docker 的新手,所以对于任何无知,我深表歉意。

我有一个需要触发 Python 脚本运行的 Web API。该脚本非常占用资源(CPU 和 RAM),因此它需要在与 API 服务器不同的服务器上运行。我打算在 Docker 容器中运行这个脚本。我也打算使用 Kubernetes。

我的 API 将从图像构建一个容器,然后 Python 脚本需要在图像启动并运行后运行。

如何触发脚本运行?为此使用 Rundeck 有意义吗?或者简单地使用 SSH 会更有意义吗?还是别的什么?

【问题讨论】:

    标签: docker kubernetes rundeck


    【解决方案1】:

    我突然想到了两种方法,我都使用过:

    • 如果您希望脚本立即启动,请在 Dockerfile 中使用 CMDENTRYPOINT 在容器启动时启动脚本

    所以,抽象的,像这样的

    FROM python
    
    COPY myscript.py /tmp
    
    CMD ["python", "/tmp/myscript.py"]
    
    • 如果您希望脚本仅在触发时运行,例如,由 Web 请求事件触发,请将 Python 代码“包装”在诸如烧瓶、瓶子或 uwsgi 之类的东西中。

    这可能看起来像这样:

    你的包装脚本是mywrapper.py,它有:

    #!usr/bin/env python
    import bottle
    app = bottle.Bottle()
    @app.route('/')
    def main():
       call_my_python_code()
    

    在这种情况下,您的Dockerfile 可以通过公开端口然后启动 Web 服务器来设置:

    FROM python
    COPY wrapper.py runserver.sh myscript.py /tmp
    
    EXPOSE 80
    CMD ["/bin/bash", "-x", "/tmp/runserver.sh" ]
    

    runserver.sh 只是设置服务器位:

    #!/bin/bash
    set -e
    exec uwsgi --http 0.0.0.0:80 --wsgi-file wrapper.py --callable app
    

    【讨论】:

      猜你喜欢
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-31
      • 2014-04-14
      • 2017-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多