前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >docker虚拟化之订制python环境

docker虚拟化之订制python环境

作者头像
py3study
发布2020-01-08 14:51:54
1.5K0
发布2020-01-08 14:51:54
举报
文章被收录于专栏:python3

前面我们讲了python爬虫用到的工具及模块:phantomjs、beautifulsoup4、selenium、lxml等,如果我们想随时随地用到这个已经搭建好的python环境,这就有两个方案:一是利用vagrant打包python环境的box;二是创建一个python环境的docker镜像。

在此我们介绍下第二种方案,我们利用dockerfile直接创建docker镜像即可,当然前提是你能运行docker环境。

我们使用的是ubuntu16.04 1.安装docker

代码语言:javascript
复制
wget -qO- https://get.docker.com/ | sh

2.创建目录并创建python需要安装的模块

代码语言:javascript
复制
mkdir -p /docker/python
vim requirements.txt
beautifulsoup4
lxml
Selenium

3.创建Dockerfile文件

代码语言:javascript
复制
FROM ubuntu
MAINTAINER yanggd
RUN mkdir -p /app
WORKDIR /app
ADD requirements.txt requirements.txt
RUN apt-get update \
    #安装phantomjs依赖
    && apt-get install -y build-essential g++ flex bison gperf ruby perl libsqlite3-dev libfontconfig1-dev libicu-dev libfreetype6 libssl-dev libpng-dev libjpeg-dev libx11-dev libxext-dev python wget vim\
    #安装最新版本pip
    && wget -O /tmp/get-pip.py 'https://bootstrap.pypa.io/get-pip.py' \
    && python /tmp/get-pip.py \
    && rm /tmp/get-pip.py \
    #安装python模块beautifulsoup4 selenium lxml
    && pip install -r requirements.txt \
    && wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 -O /tmp/phantomjs.tar.bz2 \
    && tar -jxvf /tmp/phantomjs.tar.bz2 -C /usr/local/ \
    && ln -s /usr/local/phantomjs-2.1.1-linux-x86_64 /usr/local/phantomjs \
    && rm /tmp/phantomjs.tar.bz2 \
    #安装python模块mysqldb
    && apt-get install -y python-dev libmysqlclient-dev \
    && pip install MySQL-python

注意: (1)安装python mysqldb连接数据模块时,一定要安装python-dev libmysqlclient-dev,否则会出现mysql_config等错误;可以避免先安装 mysql的麻烦。 (2)dockerfile中的ADD COPY命令是添加当前目录下的文件到docker中的当前目录WORKDIR /app 下;另外若添加的是tar.gz等压缩文件时,会在docker中被认为是一个目录,而不是压缩文件,因此不可以在后续命令中用tar解压;但是wget的tar.gz会被认为是压缩文件,可以用tar解压

4.建立镜像

代码语言:javascript
复制
docker build -t ubuntu/python2.7 .

“.”表示Dockerfile所在当前目录,这样我们就创建了一个ubuntu/python2.7镜像

代码语言:javascript
复制
root@test ~/docker/python# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu/python2.7    latest              794e1613fe03        7 hours ago         741.2 MB
mysql               latest              b7dc06006192        2 weeks ago         385.6 MB
python              2.7                 4c5f5839b372        3 weeks ago         675.3 MB
ubuntu              latest              bd3d4369aebc        3 weeks ago         126.6 MB

创建完成后我们就可以在docker中编写python爬虫了:

代码语言:javascript
复制
docker run -it ubuntu/python2.7 /bin/bash

注意: 此时虽然安装了python爬虫的基础环境,但是有的工具默认是没有安装的如wget ping 等,我们在docker中安装这些工具后一定要docker commit下,否则退出docker重新登陆后,原来安装的工具就不存在了,需要重新安装,是多么蛋疼的啊。

总结: 虽然我们可以直接基于python:2.7镜像建立一个适合我们用的python环境,而且相对于ubuntu镜像建立更加轻量,但是毕竟python:2.7基础只有python,无法安装phantomjs工具及依赖,这我已经测试。 当然我们也可以通过vagrant的box来随时搭建python环境,但是这相对与docker比较重量级,见仁见智吧。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档