tornado main.py
import json
import tornado.ioloop
import tornado.web
import tornado.httpserver
from tornado.options import define, options
define('port', default=8000, help='default port', type=int)
class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
def make_app():
return tornado.web.Application([
(r"/", IndexHandler),
])
if __name__ == "__main__":
tornado.options.parse_command_line()
app = make_app()
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()
nginx.conf
upstream compression {
server 127.0.0.1:8000;
server 127.0.0.1:8001;
server 127.0.0.1:8002;
server 127.0.0.1:8003;
}
server {
listen 80;
location / {
proxy_pass http://compression;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
supervisord.conf
[supervisord]
nodaemon=true
[program:nginx]
command=/usr/sbin/nginx
[group:tornadoes]
programs=tornado-8000,tornado-8001,tornado-8002,tornado-8003
[program:tornado-8000]
command=python /root/compression/main.py --port=8000
# 执行目录
directory=/root/compression
# 自动重启
autorestart=true
# 启动supervisor时,程序自启动
autostart=true
# 日志
stdout=/var/log/tornado-8000.log
redirect_stderr=true
loglevel=info
[program:tornado-8001]
command=python /root/compression/main.py --port=8001
# 执行目录
directory=/root/compression
# 自动重启
autorestart=true
# 启动supervisor时,程序自启动
autostart=true
# 日志
stdout=/var/log/tornado-8001.log
redirect_stderr=true
loglevel=info
[program:tornado-8002]
command=python /root/compression/main.py --port=8002
# 执行目录
directory=/root/compression
# 自动重启
autorestart=true
# 启动supervisor时,程序自启动
autostart=true
# 日志
stdout=/var/log/tornado-8002.log
redirect_stderr=true
loglevel=info
[program:tornado-8003]
command=python /root/compression/main.py --port=8003
# 执行目录
directory=/root/compression
# 自动重启
autorestart=true
# 启动supervisor时,程序自启动
autostart=true
# 日志
stdout=/var/log/tornado-8003.log
redirect_stderr=true
loglevel=info
Dockerfile
FROM registry.cn-hangzhou.aliyuncs.com/hzmodi/python3.8:v2
RUN sed -i "s@/archive.ubuntu.com/@/mirrors.163.com/@g" /etc/apt/sources.list \
&& rm -rf /var/lib/apt/lists/* \
&& apt-get update --fix-missing -o Acquire::http::No-Cache=True
RUN apt install -y nginx supervisor pngquant
# application
RUN mkdir /root/compression
WORKDIR /root/compression
COPY main.py /root/compression/
COPY requirements.txt /root/compression/
RUN pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
# nginx
RUN rm /etc/nginx/sites-enabled/default
COPY tornado4.conf /etc/nginx/sites-available/
RUN ln -s /etc/nginx/sites-available/tornado4.conf /etc/nginx/sites-enabled/tornado4.conf
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
# supervisord
RUN mkdir -p /var/log/supervisor
COPY supervisord4.conf /etc/supervisor/conf.d/supervisord.conf
# run
CMD ["/usr/bin/supervisord"]
docker命令
# build
docker build -f Dockerfile -t registry.cn-hangzhou.aliyuncs.com/hzmodi/compression:4-20211020 .
# run
docker run -d --name compression -p 4396:80 registry.cn-hangzhou.aliyuncs.com/hzmodi/compression:4-20211020