我如何在远程Docker容器中运行Python脚本?
我对Docker是全新的,所以我对任何无知道歉。
我有一个Web API需要触发一个Python脚本来运行。 该脚本非常耗费资源(CPU和RAM),因此需要在不同于API服务器的服务器上运行。 我打算在一个Docker容器中运行这个脚本。 我也计划使用Kubernates。
我的API将从一个图像构build一个容器,然后在脚本启动并运行之后,需要运行Python脚本。
我怎样才能触发脚本运行? 为此使用Rundeck是否有意义? 或者只是使用SSH更有意义? 或者是其他东西?
关于我的头顶,我可以想到两种方法,我曾经使用过两种方法:
- 如果您希望脚本立即启动,
ENTRYPOINT
在ENTRYPOINT
中使用CMD
或ENTRYPOINT
在容器开始处启动脚本
所以,抽象,像这样的东西
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