什么是docker?看这里Docker_入门?只要这篇就够了!纯干货适合0基础小白
两种方式:docker commit 和 dockerfile
commit命令是使用我们本地已经创建好的容器打包成镜像,这种方式方便简单,但是有一个缺点,就是这种方式生成的镜像中会包含很多我们使用容器过程中产生的中间文件,可能是缓存或者垃圾文件。这样创建出来的镜像拉起的容器都会包含这些垃圾文件。所以一般不推荐这种方式。
将需要对镜像进行的操作全部写到一个Dockerfile名字的文件中,然后使用docker build命令从这个文件中创建镜像。这种方法可以使镜像的创建变得透明和独立化,并且创建过程可以被重复执行。Dockerfile文件以行为单位,行首为Dockerfile命令,命令都是大写形式,其后紧跟着的是命令的参数。
先创建一个空目录mkdir /usr1/xmla_python,然后在目录下创建Dockerfile文件
# 基础镜像FROM python:3.6# 作者信息MAINTAINER xingxingzaixian "942274053@qq.com"# 设置工作目录WORKDIR /app# 拷贝本地requirements.txt文件到镜像的/app目录下ADD requirements.txt /app# 把scrapyd配置文件拷贝到镜像指定目录ADD scrapyd.conf ~/.scrapyd.conf# 创建scrapyd数据目录,设置时区,保证镜像时间正常,安装python环境库RUN mkdir /scrapyd && pip install -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com -r requirements.txt# 开放端口,主要是scrapyd端口EXPOSE 6800 80# docker容器启动时执行scrapyd命令,启动scrapydCMD ["scrapyd", "redis-server"]
创建requirements.txt,主要是用来初始化python环境
scrapy==1.5.0scrapyd==1.2.0redis==2.10.6scrapy-redis==0.6.8lxml==4.2.1requests==2.18.4
创建scrapyd.conf文件,主要是配置scrapyd环境,在我们的Dockerfile文件中使用ADD
[scrapyd]# 项目的eggs存储位置eggs_dir = /scrapyd/eggs# scrapy日志的存储目录。如果要禁用存储日志,请将此选项设置为空,logs_dir=logs_dir = /scrapyd/logs# scrapyitem将被存储的目录,默认情况下禁用此项,如果设置了值,会覆盖scrapy的FEED_URI配置项items_dir =# 每个蜘蛛保持完成的工作数量。默认为5jobs_to_keep = 5# 项目数据库存储的目录dbs_dir = /scrapyd/dbs# 并发scrapy进程的最大数量,默认为0,没有设置或者设置为0时,将使用系统中可用的cpus数乘以max_proc_per_cpu配置的值max_proc = 0# 每个CPU启动的进程数,默认4max_proc_per_cpu = 4# 保留在启动器中的完成进程的数量。默认为100finished_to_keep = 100# 用于轮询队列的时间间隔,以秒为单位。默认为5.0poll_interval = 5.0# webservices监听地址bind_address = 0.0.0.0# 默认 http 监听端口http_port = 6800# 是否调试模式debug = off# 将用于启动子流程的模块,可以使用自己的模块自定义从Scrapyd启动的Scrapy进程runner = scrapyd.runnerapplication = scrapyd.app.applicationlauncher = scrapyd.launcher.Launcherwebroot = scrapyd.website.Root[services]schedule.json = scrapyd.webservice.Schedulecancel.json = scrapyd.webservice.Canceladdversion.json = scrapyd.webservice.AddVersionlistprojects.json = scrapyd.webservice.ListProjectslistversions.json = scrapyd.webservice.ListVersionslistspiders.json = scrapyd.webservice.ListSpidersdelproject.json = scrapyd.webservice.DeleteProjectdelversion.json = scrapyd.webservice.DeleteVersionlistjobs.json = scrapyd.webservice.ListJobsdaemonstatus.json = scrapyd.webservice.DaemonStatus
主要是eggsdir、logsdir、dbs_dir三个目录配置,其他的可以默认,这三个目录的主目录/scrapyd,我们在Dockerfile文件的RUN命令中添加mkdir /scrapyd来创建
以上创建完以后我们就可以使用docker build命令来构建镜像了
执行docker build -t scrapy_python .命令构建镜像,其中-t参数指定镜像名,.则为Dockerfile文件的路径
数据库就不安装在docker里面了,我们只需要在一台机器上安装redis和MongoDB就行了,没必要在每台机器上都部署,这块我们暂时不做集群处理,以后再优化。
安装完docker后就可以启动了:docker run -it /bin/bash -p 6800:6800
-p:映射容器端口到主机
本文分享自 python爬虫实战之路 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!