将tornado项目打包成docker镜像
1.先弄一个tornado的项目
index.html
<!DOCTYPE html> <head> <meta charset="utf-8"> <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script> </head> <body> <button id="send">发送请求</button> <script> $("#send").click(function () { $.ajax({ type: 'POST', url: "/ip", success: function (response) { alert(response); } }); }) </script> </body> </html>
main.py
import socket import tornado.web import tornado.ioloop from tornado.options import define, options define("port", default=38888, help="运行端口", type=int) class MainHandler(tornado.web.RequestHandler): def get(self): self.render("index.html") class IpHandler(tornado.web.RequestHandler): def post(self): print('ip', self.request.remote_ip) self.write(self.request.remote_ip) if __name__ == "__main__": app = tornado.web.Application( [ (r"/", MainHandler), (r"/ip", IpHandler), ], ) app.listen(options.port) print("http://{}:{}/".format(socket.gethostbyname(socket.getfqdn(socket.gethostname())), options.port)) tornado.ioloop.IOLoop.current().start()
使用pipreqs 导出requirements.txt文件
将当前项目使用的类库导出生成为 requirements.txt
pip install pipreqs
pipreqs ./ --encoding=utf8
pipreqs ./ --encoding=utf8
2.创建一个Dockerfile的文件
编辑文件内容
#基于的基础镜像 FROM python:3.8.2 #代码添加到code文件夹 ADD . /code # 设置code文件夹是工作目录 WORKDIR /code # 安装支持 RUN pip install -r requirements.txt CMD ["python", "/code/app/main.py"]
将文件设置成下图的路径
cd 到 docker-test目录下然后 执行docker build -t tornado_test . 这里注意,tornado_test后面有一个 .
docker build -t tornado_test .
最后启动项目
--name指定容器名字 -p指定端口映射 -d后台运行 镜像名称
docker run -p 38888:38888 --name test_tornado -d tornado_test