松花江避暑城建设网站,网店seo是什么意思,wordpress调用插件吗,公司收购文章目录 一#xff1a;说明二#xff1a;dockerfile 参数说明1. 一般常用的 参数#xff0c;以及它的含义2. 我自己的 dockerfile 三#xff1a;示例操作1. Gunicorn Gevent启动服务的好处2. 用Gunicorn Gevent的好处#xff1a;3. Gunicorn Gevent的 使用示例4. 创建… 文章目录 一说明二dockerfile 参数说明1. 一般常用的 参数以及它的含义2. 我自己的 dockerfile 三示例操作1. Gunicorn Gevent启动服务的好处2. 用Gunicorn Gevent的好处3. Gunicorn Gevent的 使用示例4. 创建自己的镜像5. docker-compose1. docker-compose 的好处2. docker-compose 的参数以及使用示例 6. 服务器部署创建容器并且启动服务7. 调用服务测试 一说明
以前没有使用过docker近期需要使用部署自己的服务因此需要学习先从简单的使用起来后面专门整理一篇 如何部署 模型的方法。理论知识就不说了网上很多咱直接上步骤整理逻辑分为 基于dockerfile创建镜像 使用 docker-compose 创建容器 后台启动 当然这些步骤完全可以都写在 dockerfile中这里我拆开了。
我的项目文件 系统说明
Linux系统 docker的安装 和启动 以及 镜像和容器的 增删改查工作网上有很多教程。 咱们只讨论 实现逻辑流程。
二dockerfile 参数说明
1. 一般常用的 参数以及它的含义 2. 我自己的 dockerfile FROM python:3.9.5该 image 文件继承官方的 python冒号表示标签这里标签是3.9.5即3.9.5版本的 python。 COPY . /app将当前目录下的所有文件除了.dockerignore排除的路径注意这个文件根据自己需要创建也就是项目中有些文件不需要放入镜像中就将这些文件路径放入.dockerignore文件中就行了 都拷贝进入 image 文件的/app目录。 WORKDIR /app指定接下来的工作路径为/app就是你进入容器后的目录。我用了docker-compose方法因此这里的路径基本上我用不到了后面在docker-compose中会重新设置。 RUN pip install在/app目录下运行pip install命令安装依赖。注意安装后所有的依赖都将打包进入 image 文件。 COPY . . 我这里 写重复了当命令重复了懒得 删除了反正几个文件占不了多大内存。这里含义就是 将项目中的所有文件复制到 . 路径中。 EXPOSE 50002将容器 50002端口暴露出来 允许外部连接这个端口。
三示例操作
1. Gunicorn Gevent启动服务的好处
一般我们可以使用命令python start.py运行这个应用打开浏览器输入网址127.0.0.1:5000并回车将会打开我们的网站。 但是
Gunicorn Gevent运行以下命令即可安装这两个利器
安装命令pip install gunicorn gevent
在根目录下新建文件 /gunicorn.conf.py
workers 5 # 定义同时开启的处理请求的进程数量根据网站流量适当调整 worker_class gevent # 采用gevent库支持异步处理请求提高吞吐量 bind 0.0.0.0:80 可以使用gunicorn命令来测试是否可以正确运行命令如下打开网址127.0.0.1:80将会打开我们的网站。
执行命令gunicorn start:app -c gunicorn.conf.py
2. 用Gunicorn Gevent的好处
Gunicorn是一个用于部署Python Web应用程序的WSGI服务器它可以处理多个请求并发地。Gunicorn可以通过多进程的方式来实现并发处理每个进程都可以独立地处理客户端请求。这使得Gunicorn非常适合在高负载情况下使用因为它可以有效地利用多核CPU资源提高应用程序的性能和稳定性。 而Gevent是一个基于协程的网络库它使用一种称为Greenlet的轻量级线程来实现并发。与传统的多线程或多进程模型相比协程模型可以更高效地使用系统资源并且在编程上更加简单和直观。使用Gevent时可以将阻塞式的I/O操作转化为非阻塞式从而提高应用程序的响应速度。 结合使用Gunicorn和Gevent可以发挥它们各自的优势。Gunicorn作为Web服务器负责接收和分发请求而Gevent作为协程库负责处理请求。这样可以充分利用Gunicorn的多进程能力同时又能享受到Gevent协程模型的优势提供高性能和高并发的服务。
3. Gunicorn Gevent的 使用示例
当使用Gunicorn和Gevent启动服务时你可以使用一些参数来配置它们的行为。下面是一些常用的参数和使用示例
Gunicorn参数
-w 或 --workers指定工作进程的数量。例如gunicorn -w 4 app:app 将启动4个工作进程来处理请求。 -b 或 --bind指定服务器绑定的地址和端口。例如gunicorn -b 0.0.0.0:8000 app:app 将在本地的8000端口上监听请求。 -t 或 --timeout指定超时时间即请求的最大处理时间。例如gunicorn -t 30 app:app 将设置请求超时时间为30秒。
Gevent参数
--worker-class指定Gevent的工作类。例如gunicorn --worker-class gevent app:app 将使用Gevent作为工作类来处理请求。 --worker-connections指定每个工作进程的最大并发连接数。例如gunicorn --worker-connections 1000 app:app 将设置每个工作进程最大连接数为1000。
使用示例 使用Gunicorn默认配置启动应用程序gunicorn app:app 启动4个工作进程并将服务器绑定到本地的8000端口gunicorn -w 4 -b 0.0.0.0:8000 app:app 设置请求超时时间为30秒gunicorn -t 30 app:app 使用Gevent作为工作类启动应用程序gunicorn --worker-class gevent app:app 设置每个工作进程的最大连接数为1000gunicorn --worker-connections 1000 app:app
4. 创建自己的镜像
我这里使用的是 dockerfile方法进行镜像创建具体流程如下
注意开始之前先cd 进入项目文件夹中
首先在项目的根目录下新建一个文本文件.dockerignore写入下面的内容。 使用vim .dockerignore 生成文件
.git # 这个是不写入镜像的文件在项目的根目录下新建一个文本文件 Dockerfile写入下面的内容
FROM python:3.9.5
COPY . /app
WORKDIR /app
RUN pip install -r requ.txt -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
EXPOSE 50002
COPY . .
CMD gunicorn GIIKIN_RECOMMEN_WEB_v1:app -c gunicorn.conf.py将 创建的文件 放在 项目文件中 执行 sudo docker build -t (这里自己根据需要命名):(标签也是) .
注意代码最后的 . 不要忘了
执行情况如下 查看镜像
命令sudo docker images v1是标签 IMAGE ID是镜像ID 如果想要删除的话可以这么做 docker rmi -f 镜像ID
5. docker-compose
创建容器可以使用这种方法sudo docker container run -p 50002:50002 -it giikin_recommen_web /bin/bash但是该方法并没有达到我想要的效果我想在容器启动时候服务是启动。并且这种方法有个弊端就是一旦我的项目有什么变化可能就需要重新构建镜像。 因此我这里使用 docker-compose方法进行创建容器。
1. docker-compose 的好处 简化部署使用Docker Compose可以轻松地定义和配置多个容器并将它们组合成一个应用程序。这使得部署变得非常简单只需要一条命令即可启动整个应用。 可移植性Docker Compose使用统一的配置文件来定义应用程序的环境、服务和依赖关系。这意味着你可以在不同的环境中轻松地复制和部署应用程序而不会出现任何问题。 高效管理通过Docker Compose你可以方便地管理多个容器应用程序包括启动、停止、重新构建和扩展等操作。这使得开发人员可以更加高效地处理应用程序的生命周期。 灵活性Docker Compose允许你定义和组织多个容器并指定它们之间的依赖关系和交互方式。这使得你可以轻松地创建复杂的应用程序架构同时保持灵活性和可维护性。
2. docker-compose 的参数以及使用示例
up 命令启动并运行所有定义的服务。 示例docker-compose up
down 命令停止并删除所有已经运行的服务。 示例docker-compose down
build 命令构建镜像。 示例docker-compose build
start 命令启动服务。 示例docker-compose start
stop 命令停止服务。 示例docker-compose stop
restart 命令重启服务。 示例docker-compose restart
logs 命令查看服务的日志输出。 示例docker-compose logs
ps 命令列出当前正在运行的服务。 示例docker-compose ps
6. 服务器部署创建容器并且启动服务
好镜像创建完后来创建我们想要的容器
先构建docker-compose.yml 脚本文件。代码如下
version: 3.3
services: # web # 自定giikin_recommen_web01: # 这些名字自定image: giikin_recommen_web:v1 # 镜像的名字以及 标签ports: # 我们的服务端口 进行映射我这里为避免麻烦一样- 50002:50002 restart: alwayscontainer_name: web01 # 容器的名字privileged: truevolumes:# 这里是将你的项目地址与 容器中的工作地址做一个映射- /home/zhangsan/GIIKIN_ITEM_FILE/giikin_recommen_item:/home/giikin_recommen_item- /etc/localtime:/etc/localtime # 日志中的时间信息shm_size: 10gworking_dir: /home/giikin_recommen_item # 容器中的工作地址command: gunicorn -c gunicorn.conf.py GIIKIN_RECOMMEN_WEB_v1:app # 接口服务启动代码将该脚本文件放在项目中 如下 执行 代码 sudo docker-compose up
执行代码如下 如此就完成容器创建 当我们部署的时候就可以将镜像文件打包下来上传git另外将容器的创建文件写好以及执行命令写好给使用者。
那么想要让服务后台 一直执行可以执行 nohup sudo docker-compose up 即可 注意 停止容器代码sudo docker stop (容易ID) 删除容器 sudo docker rm (容器ID)
7. 调用服务测试