Docker部署FLASK Unicorn并配置Nginx

1. 安装相关依赖

复制代码
flask==3.0.0
pymysql==1.1.0 #我自己需要的
flask_cors==4.0.0
gunicorn==21.2.0
gevent==23.9.1

2. 配置Gunicorn

新建gunicorn.conf.py

python 复制代码
bind = '0.0.0.0:5418'  # 绑定的IP地址和端口
workers = 8  # 同时执行的进程数,推荐为当前CPU个数*2+1
worker_class="gevent" #sync, gevent, meinheld 工作模式选择,默认为sync,这里设定为gevent异步
errorlog = './error.log'  # 错误日志文件的路径
accesslog = './access.log'  # 访问日志文件的路径
loglevel = 'info'  # 日志级别

2. 编写Dockfile

bash 复制代码
# 基于的基础镜像,这里使用python,开发版本是 3.x ,基础镜像也写 3.x 就可以,这样可以保持版本一致,避免 Python 版本差异带来的问题
FROM python:3.8.10 
# 指定工作目录
WORKDIR "/code"
# 将依赖文件拷贝到项目中
COPY requirement.txt ./
# 执行指令,安装依赖
RUN pip install -r requirement.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 执行指令,字符串间是以空格间隔;配置文件就是上面新建的
CMD ["gunicorn", "app:app", "-c", "./gunicorn.conf.py"]

3. build

bash 复制代码
# 构建image,命名为 rec_sys
sudo docker build -t "rec_sys" .
# 将image运行起来,并将项目根目录挂在到container的/code目录下
sudo docker run --name rec_sys_container -d -p 5418:5418 -v ~/smartfarm-recommendation:/code rec_sys

其中,run的参数:

复制代码
-d: 后台运行容器并返回容器ID
-p:指定端口映射(本机:容器)
-v:卷挂载

4. 配置Nginx

bash 复制代码
server {
	listen 443 ssl;
    #配置HTTPS的默认访问端口为443。
    #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
    #如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
    server_name ****.com;
    #root html;
    #index index.html index.htm; 

    ssl_certificate /home/****/cert/****.pem;
    ssl_certificate_key /home/****/cert/****.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    #表示使用的加密套件的类型。
    ssl_protocols TLSv1.1 TLSv1.2; #表示使用的TLS协议的类型,您需要自行评估是否配置TLSv1.1协议。
    ssl_prefer_server_ciphers on;
    
    location /smartfarm-recommend/ {
	   proxy_pass http://127.0.0.1:5418/api/; # 将请求转发到Flask应用的端口
	   proxy_redirect     		off;
	   proxy_set_header        	Host            $host;
	   proxy_set_header        	X-Real-IP       $remote_addr;
	   proxy_set_header        	X-Forwarded-For $proxy_add_x_forwarded_for;
	}
}
相关推荐
玉&心9 分钟前
通过Arthas在线诊断K8S中的内存及JVM等使用情况
docker·k8s·arthas
xing-xing16 分钟前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
guo_wen_qiang1 小时前
上传本地镜像到harbor中
docker·容器·持续部署
羑悻的小杀马特1 小时前
Dockerfile 全景指南:从入门编写dockerfile到生产环境镜像优化实战,一步步带你从啃透制作指令到镜像制作落地!
docker·dockerfile·镜像制作
BianHuanShiZhe1 小时前
docker常见命令
docker
正经教主3 小时前
【FDE系列】阶段2:Day 43:Docker Compose — 多容器一键编排
人工智能·docker·fde
PC2005-cloud3 小时前
Nginx 防盗链配置实战:用 referer 模块保护网站静态资源
nginx
忆~遂愿4 小时前
本地片库怎么在外面打开?Plex + cpolar 搭一套可远程访问的私人影音库
docker·容器
Zhu7585 小时前
docker环境,vLLM 部署 Qwen3.8-27B
docker·qwen·vllm
溜达的大象5 小时前
多台服务器不想上重型监控?用 Beszel 搭一套轻量主机与 Docker 看板
docker