scrapy-redis项目打包docker镜像+部署kubernetes

本文详细介绍了如何将Scrapy-Redis项目打包成Docker镜像,利用Docker Compose进行管理和打包,以及如何使用Kubernetes进行部署。内容包括Dockerfile的创建、Docker镜像的构建与推送、Docker Compose的yaml文件配置、Kubernetes关键概念的理解以及Redis和Scrapy项目的Kubernetes部署步骤。
摘要由CSDN通过智能技术生成

前言:随着容器技术的发展,Docker+Kubernetes的解决方案越来越流行,接下来,我们就来了解下Scrapy项目基于Docker+Kubernetes的部署和维护方案,内容包含:

  • 如何把Scrapy项目打包成一个Docker镜像;
  • 如何利用Docker Compose来方便地维护和打包镜像;
  • 如何使用Kubernetes 来部署Scrapy项目的Docker镜像;

一.将Scrapy 项目打包成Docker 镜像

1.1 准备工作

  • 准备好一个scrapy-redis分布式爬虫项目
  • 安装好Docker并能正常使用 docker 命令

1.2 创建 Docckerfile

  1. 新建项目依赖环境包

项目根目录新建一个 requirement 文件,如下所示:

scrapy
aiohttp
scrapy-redis
environs
......
# 也可以指定版本号,如:scrapy>=2.5.0
  1. 项目根目录新建一个Dockerfile

注意:文件不加任何后缀名!将其内容改为:

FROM python:3.9		# 代表使用基础镜像,运行当前项目
WORKDIR /app	# 运行路径,这样在Docker中,最终运行程序所在路径是/app
COPY requirements.txt .		# 将本地的依赖文件复制到Docker中,即复制到 /app 下
RUN pip3 install -r requirements.txt	# 读取上步复制的依赖文件,并安装所列出来的依赖库
COPY . .	# 将当前文件夹下的所有文件全部复制到Docker的 /app 路径下
# 这里再次复制,因为这样将相对费时的依赖库安装操作放在相对靠前的层级实现。并且在依赖文件不变情况下,再次构建Docker镜像时候,就直接用这个该构建好的层级,不会在费时间构建依赖库。
CMD ["scrapy" "crawl" "book"]		# 项目的启动命令了,建议使用双引号
  1. 修改项目环境变量

首先确保重要redis变量,url地址等使用环境变量获取,修改下settings.py,有助于灵活修改项目

from environs import Env
env = Env()
env.read_env()
REDIS_URL = env.str('REDIS_URL')
  1. 构建镜像

接下来,进入到项目更目录镜像构建,命令如下

docker build -t scrapyredisdemo .
# 注意命令最后一个 . 点号,代表当前运行目录

构建过程根据Dockerfile步骤来,没有出现报错就说明构建成功
查看构建好的镜像执行:

docker images

如果需要删除镜像的话执行:

docker rmi -f <iamges-name / images-id>

构建好,在执行之前新建一个 .env 文件,其内容如下:

REDIS_URL=redis://host.docker.internal:6379
# host.docker.internal 这代表Docker所在宿主机的IP地址,在Docker内部就可以访问宿主机的相关资源
# 如果有其他变量,也可以自行添加,提前需要设置项目文件的变量名

同时在本机运行redis 数据库运行在6379端口

  1. 运行检测

现在可以先在本地测试运行,命令如下:

docker run --env-file .env scrapyredisdemo

运行结果和python运行一致说明成功了

  1. 推送至 Docker Hub

Docker Hub 是镜像托管平台,很多镜像都能在这找到。创建步骤:

  • 在 https://hub.docker.com 上注册一个账号,如:bobi,名字自行修改;
  • 新建一个私有Repository:scrapyredisdemo;
  • 那么推送地址就可以使用: bobi/scrapyredisdemo

回到命令端口登录Docker Hub,输入:

docker login
# 运行后按步骤输入上面注册的账号密码完成登录

接下来为新建的镜像打一个标签:

docker tag scrapyredisdemo:latest bobi/scrapyredisdemo:latest

然后就可以推送命令了:

docke
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值