我是Docker的新手,所以我为任何无知而道歉。
我有一个需要触发Python脚本才能运行的Web API。该脚本是非常耗费资源的(CPU和RAM),因此它需要在与API服务器不同的服务器上运行。我打算在Docker容器中运行这个脚本。我也计划使用Kubernates。
我的API将从图像构建一个容器,然后在图像启动并运行后需要运行Python脚本。
如何触发脚本运行?使用Rundeck是否有意义?或者简单地使用SSH会更有意义吗?或其他什么?
答案 0 :(得分:2)
在我的脑海中,我可以想到两种方法,我用过这两种方法:
CMD
或ENTRYPOINT
在容器启动时启动脚本所以,抽象,像这样
FROM python
COPY myscript.py /tmp
CMD ["python", "/tmp/myscript.py"]
这可能是这样的:
您的包装器脚本为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