Docker部署Python爬虫项目的方法步骤
作者:_invoker 发布时间:2023-03-27 14:45:21
标签:Docker,Python,爬虫
1) 首先安装docker:
# 用 yum 安装并启动
yum install docker -y && systemctl start docker
2) 下载自定义镜像需要用到的基础镜像:
# 这里以centos7为例
docker pull centos:centos7
3) 基础镜像已经准备好了,接下来准备好需要部署的环境服务,以及python项目:
### 创建 dockerfile 文件
mkdir dockerfile && cd dockerfile
### 下载 python(这里以3.7为例)
wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
### 将 python 项目复制到此目录
cp ~/test.py .
### 以及 python 项目的依赖库
cp ~/requirements.txt .
4) 需要自定义docker镜像的大致内容准备好了,接下来编写dockerfile:
vim Dockerfile
### 以centos:centos7来作为基础镜像
FROM centos:centos7
### 下载编译需要用到的软件
RUN yum install -y gcc gcc-c++ autoconf automake libtool make zlib* libffi-devel
### 将dockerfile目录下的python-3.7.3.tgz复制到docker容器内
COPY Python-3.7.3.tgz /usr/local/src
### 编译安装 python
WORKDIR /usr/local/src
RUN tar -xf Python-3.7.3.tgz
WORKDIR Python-3.7.3
RUN ./configure --prefix=/usr/local/python37 && make && make install
ENV PATH /usr/local/python37/bin:$PATH
### 创建工作目录
RUN mkdir /spider
### 将python项目复制到 /spider工作目录下
ADD test.py /spider
ADD requirements.txt /spider
### 设置 /spider 为工作目录
WORKDIR /spider
### 下载 python 项目的依赖库
RUN pip3 install -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com -r requirements.txt
### 在创建个爬取的数据存放的目录,这个需要根据自己代码里面设置的目录来创建,例如:
VOLUME /data
### 最后一步,运行docker镜像时运行自己的python项目
### 可以多个参数: CMD ["python3","a","main.py"]
CMD ["python3","test.py"]
5) 接下来构建镜像:(就在此目录下运行)
### docker build -t 镜像名:版本号 镜像名:版本号 均为自定义 别忘了末尾的点“.”
docker build -t pythonspider:v1 .
6) 运行镜像:
### 通过 docker images命令就可以看到刚刚创建的镜像
docker images
### 运行
docker run -d --name spider -v /data:/data pythonspider:v1
### -d为后台运行,--name 后面设置容器名,-v 是目录共享,主机目录和docker容器内目录共享。创建dockerfile的时候,有这一句 VOLUME /data 就是作为共享目录使用的,“:”前的目录为主机目录,后面的目录为容器内目录。。。 最后一个参数 pythonspider:v1 镜像名
cd /data
### 到此目录下你就会看到产生的数据
来源:https://segmentfault.com/a/1190000021617187


猜你喜欢
- 本文实例讲述了Python整型运算之布尔型、标准整型、长整型操作。分享给大家供大家参考,具体如下:#coding=utf8def integ
- 1 概述在日常 Web 端产品的使用中,一般都会支持扫码登录,这种方式操作简单,相对传统的手机号登录等方式速度更快、安全性更高,还可以增加自
- 实例如下:import sysdef print_all(module_): modulelist = dir(module_)
- 问题你想使用一个简单的REST接口通过网络远程控制或访问你的应用程序,但是你又不想自己去安装一个完整的web框架。解决方案构建一个REST风
- 集合内建函数和内建方法(1)标准类型函数 len():把集合作为参数
- 一、数据库编程的必备条件编程语言: 如Java、C++、C、Python等数据库: 如Oracle、MySQL、SQL Server等数据库
- 本文实例讲述了JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法。分享给大家供大家参考,具体如下:直接上例子,如下
- 前言我们知道当文件不存在的时候,open()方法的写模式与追加模式都会新建文件,但是对文件进行判断的场景还有很多,比如,在爬虫下载图片的时候
- 本文实例讲述了JS实现为排序好的字符串找出重复行的方法。分享给大家供大家参考,具体如下:实现这样一个需求,在一个Editplus文档中,有很
- <%'该函数作用:按指定参数格式化显示时间。'numformat=1:将时间转化为yyyy-mm-dd h
- 这句话后面的1200是什么单位来的啊?delete from online where datediff(""s&quo
- 最近因为想要看漫画,无奈下载的漫画是jpg的格式,网上的转换器还没一个好用的,于是乎就打算用python自己DIY一下:这里主要用了repo
- 如何更改CentOS系统下的MySQL数据库目录位置1、首先我们需要关闭MySQL,命令如下:service mysqld stop2、然后
- 本文介绍了Python小波分析库Pywavelets,分享给大家,具体如下:# -*- coding: utf-8 -*- import n
- 一.主键:1.1)主键字段定义:在数据库表中,如果有一组字段能够唯一确定一条记录,则可以把它们设计成表的主键字段。例子:如果要创
- 什么是Canvas<canvas> 是一个新的 HTML 元素,这个元素在 HTML5&
- hello,我是小小炽,这是我写的第一篇博客,写博客一直都想在写,但是苦于能力尚浅,在各位大牛面前那既然是关公面前耍大刀了,但是其实想来每一
- 之前我们在入门jdbc的时候,常用这种方法连接数据库:package util;import java.sql.Connection;imp
- 误区 #30:有关备份的30个误区全是错的在开始有关备份的误区之前,如果你对备份的基础没有了解,请看之前我在TechNet Magazine
- 比如一个详细的简历信息页面分 1、个人资料 2、工作经验 3、项目经验 4、其他信息 4个表单。 一般的需求是允许用户单独提交其中任何一个表