docker打包scrapy项目

好长时间没来写博客了,闲来无事,更新一波scrapy对接docker的博客

1. 准备工作

     1. 本地服务器确保安装docker和scrapy的环境

     2. 准备一个scrapy的小项目,能在本地正常运行就可以

2. 打包项目所用到的模块

pipreqs C:\Users\user\Desktop\lawyer --encoding=utf8

    打包出来的结果为:

Scrapy==2.0.1
Twisted==20.3.0
PyMySQL==0.9.2

3. 编写Dockerfile文件

# FROM 代表使用的 Docker 基础镜像,在这里我们直接使用 python:3.6 的镜像
FROM python:3.6
ENV PATH /usr/local/bin:$PATH    # 环境变量设置
ADD . /data    # 将本地的代码放到虚拟容器中
WORKDIR /data    # 指定工作目录
RUN pip3 install -r requirements.txt    # 将用到的模块打包下载
CMD scrapy crawl judge_demo    # 运行爬虫的命令

4. 构建镜像

docker build -t lawyer:latest .

     lawyer:自定义镜像名称

     latest:当前为最新版本

     注意:最后的那个 . 不能省略

5. 查看镜像

docker images

     如果有下面的镜像,说明成功

lawyer  latest  5e978b3fd869    12 minutes ago   954 MB

6. 运行

docker run lawyer

     如果可以正常输出爬取的内容,说明没问题

7. 对接docker hub

     首先先要去DockerHub注册一个账号,然后新建一个仓库(Repository),仓库名字自定义。

     比如,我的用户名为 18839782321,新建的 Repository 名为 lawyer,那么此 Repository 的地址就可以用 18839782321/lawyer来表示。 为新建的镜像打一个标签,命令如下所示:

docker tag lawyers:latest 18839782321/lawyer:latest

     然后再推送至Docker Hub,命令如下:

docker push 18839782321/lawyer

     一般执行这一步的时候会报错,报错信息如下:

denied: requested access to the resource is denied

     这时候执行命令--->docker login,输入账号密码,再重新执行推送命令即可!

     如果提示类似下面的信息,说明推送成功:

[root@iZuf62qojdpdfmeohedn2jZ lawyer]# docker push 18839782321/lawyer
The push refers to a repository [docker.io/18839782321/lawyer]
c31ffe4728ec: Pushed 
a05693154f6a: Pushed 
d3f91df4f2c2: Pushed 
28c41b4dd660: Pushed 
36957997ca7a: Pushed 
5c4d527d6b3a: Pushed 
a933681cf349: Pushed 
f49d20b92dc8: Pushed 
fe342cfe5c83: Pushed 
630e4f1da707: Pushed 
9780f6d83e45: Pushed 
latest: digest: sha256:b1910923a0afba93b270c5aa112e30a773ee18324cd6f5fb2596c4b6b4e54160 size: 2639

8. docker hub查看推送的镜像

     一般推送的时间有点长,跟网速有关,推送成功之后,进入你的docker hub仓库,刷新之后,如下:

     点击进入详情,如下:

9. 可以直接在其他主机上运行

docker run 18839782321/lawyer

10. 这样做的好处

     i) 不必担心环境配置问题或版本冲突问题,镜像里只包含适用于本项目的 Python 环境。

     ii) 只要其他主机安装了 Docker,那么只要将镜像下载并运行即可,方便快捷。

至此,本次博客结束!

猜你喜欢

转载自blog.csdn.net/qq_42598133/article/details/109360956