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;
	}
}
相关推荐
莫大33043 分钟前
2核2G云服务器PHP8.5+MySQL9.0+Nginx(LNMP)安装WordPress网站详细教程
运维·服务器·nginx
啦啦啦小石头2 小时前
Docker 换源
docker
银发控、2 小时前
nginx静态资源
运维·nginx
等什么君!4 小时前
docker -数据卷技术
运维·docker·容器
上天_去_做颗惺星 EVE_BLUE5 小时前
Docker高效使用指南:从基础到实战模板
开发语言·ubuntu·docker·容器·mac·虚拟环境
好好沉淀7 小时前
Docker开发笔记(详解)
运维·docker·容器
禅口魔心8 小时前
Win10 + WSL2 + Docker:K510(DongshanPI-Vision)开发环境从踩坑到跑通全记录(交叉编译 + 上板运行)
docker·嵌入式开发·wsl2·k510
熊猫钓鱼>_>9 小时前
动态网站发布部署核心问题详解
前端·nginx·容器化·网页开发·云服务器·静态部署
沈浩(种子思维作者)9 小时前
铁的居里点(770度就不被磁铁吸了)道理是什么?能不能精确计算出来?
人工智能·python·flask·量子计算
Andy Dennis9 小时前
FTP局域网功能小网站V2_2
服务器·flask·html5