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
RUN pip install gunicorn
# flask application
RUN mkdir /root/compression
WORKDIR /root/compression
COPY app.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 flask.conf /etc/nginx/sites-available/
RUN ln -s /etc/nginx/sites-available/flask.conf /etc/nginx/sites-enabled/flask.conf
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
# supervisord
RUN mkdir -p /var/log/supervisor
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY gunicorn.conf /etc/supervisor/conf.d/gunicorn.conf
# run
CMD ["/usr/bin/supervisord"]
flask app.py
from flask import Flask, request
app = Flask(__name__)
# app.config['FLASK_ENV'] = 'development'
@app.route('/', methods=['GET'])
def index():
return 'hello world'
if __name__ == '__main__':
app.run(host='0.0.0.0')
gunicorn.conf
[program:gunicorn]
command=gunicorn --workers=2 app:app -b 0.0.0.0:4396
directory=/root/compression/
nginx.conf
server {
listen 80;
location / {
proxy_pass http://127.0.0.1:4396;
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