如何在远程Docker容器中运行Python脚本?

如何在远程Docker容器中运行Python脚本?,docker,kubernetes,rundeck,Docker,Kubernetes,Rundeck,我是Docker的新手,所以我为我的无知道歉 我有一个web API,需要触发Python脚本才能运行。该脚本非常占用资源(CPU和RAM),因此需要在不同于API服务器的服务器上运行。我计划在Docker容器中运行此脚本。我还计划使用库伯纳斯 我的API将从一个映像构建一个容器,然后一旦映像启动并运行,Python脚本就需要运行 如何触发脚本运行?使用Rundeck是否有意义?或者简单地使用SSH更有意义?还是别的什么?在我的脑海里,我能想到两种方法,我都用过: 如果希望脚本立即启动,请在D

我是Docker的新手,所以我为我的无知道歉

我有一个web API,需要触发Python脚本才能运行。该脚本非常占用资源(CPU和RAM),因此需要在不同于API服务器的服务器上运行。我计划在Docker容器中运行此脚本。我还计划使用库伯纳斯

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


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

在我的脑海里,我能想到两种方法,我都用过:

  • 如果希望脚本立即启动,请在Dockerfile中使用
    CMD
    ENTRYPOINT
    在容器开始时启动脚本
所以,抽象地说,是这样的

FROM python

COPY myscript.py /tmp

CMD ["python", "/tmp/myscript.py"]
  • 如果希望脚本仅在web请求事件触发时运行,请将Python代码“包装”到类似flask、瓶子或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