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

我对Docker是全新的,所以我对任何无知道歉。

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

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

我怎样才能触发脚本运行? 为此使用Rundeck是否有意义? 或者只是使用SSH更有意义? 或者是其他东西?

关于我的头顶,我可以想到两种方法,我曾经使用过两种方法:

  • 如果您希望脚本立即启动, ENTRYPOINTENTRYPOINT中使用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