爬虫部署到Docker
文章目录
1. 打包所需模块
在项目目录下创建一个 名为 requirements
的文件,文件内记录本项目用到的模块,如有特殊需求可设置模块版本号,例如:
scrapy
scrapy-redis
pymysql
2. 创建Dockerfile文件
Dockerfile 文件用于设定Docker初始化
$ touch Dockerfile
$ vim Dockerfile
Dockerfile 内容编辑
FROM python:3.7
MAINTAINER Zok "362416272@qq.com"
ENV PATH /usr/local/bin:$PATH
ADD . /code
WORKDIR /code
RUN pip3 install -r requirements
CMD scrapy crawl test
-
FROM
指定使用哪个镜像源 -
MAINTAINER
设置作者名与联系邮箱 -
ENV
是环境变量设置,将/usr/local/bin:$PATH赋值给PATH,即增加/usr/local/bin这个环境变量路径。 -
ADD
是将本地的代码放置到虚拟容器中。它有两个参数:第一个参数是.,代表本地当前路径;第二个参数是/code,代表虚拟容器中的路径,也就是将本地项目所有内容放置到虚拟容器的/code目录下,以便于在虚拟容器中运行代码 -
WORKDIR
是指定工作目录,这里将刚才添加的代码路径设成工作路径。这个路径下的目录结构和当前本地目录结构是相同的,所以我们可以直接执行库安装命令、爬虫运行命令等。 -
RUN
指令告诉docker 在镜像内执行命令,安装了什么。。。 -
CMD
是容器启动命令。在容器运行时,此命令会被执行。在这里我们直接用scrapy crawl test来启动爬虫。
3. 调整数据库连接地址
通常我们在测试的时候填写连接的本地数据库(这样在服务器docker上是访问不了的)需要填写公网或服务器内外访问数据库连接地址
4. 构建镜像
- 构建
$ docker build -t MySpider:latest .
命名格式: 仓库名:标签
- 检查 是否构建成功
$ docker images
- 运行测试
$ docker run 镜像名
5. 推送DockerHub
DockerHub 类似GitHub 你懂的, 没有账号需要注册一个 传送门
如果没有登陆,要先登陆docker
$ docker login
必须要先设置镜像标签才能推送
$ docker tag 本地的镜像名 注册用户名/自己起的hup镜像名
push到Hub上
$ docker push 注册用户名/自己起的hup镜像名
完成后可以在网站上看到你推送的镜像了
6. 服务器运行镜像
进入服务器 [在安装了docker的情况下] 私有项目,服务器上也需要登陆docker
$ docker run 注册用户名/自己起的hup镜像名
本地调试与修改镜像
vim下载安装
如果你用我上面的方法安装,是没有vim的需要额外安装
进入交互式镜像
$ docker run -i -t 镜像名 /bin/bash
在项目同级目录运行
$ apt-get update
$ apt-get install vim
保存修改
!!要保存时,要另外打开一个终端!进行保存操作
1 获取镜像ID
$ docker ps
2 提交保存
$ docker commit 查到的id 提交命名:tag