一、前言
二、部署步骤
1、部署MySQL
2、部署redis
3、从github下载binux/pyspider文件制作镜像
4、修改Dockerfile文件
5、制作镜像
6、制作docker-compose.yaml
三、遇到的几个问题

一、前言

前面讲过最简单安装pyspider的方法 docker安装pyspider方法1:pyspider最简单的安装方法,只要一句命令就可以安装完使用了。
还讲过使用Mysql+rabbitmq+pyspider(python2)来进行部署 docker安装pyspider方法2:mysql+rabbitmq+pyspider(python2)

这两种安装方法要么太简单不适合生产环境,要么架构还不够完善,这里就讲一下第三种部署方法:mysql+redis+HAProxy+pyspider(python3)

前面两种方法都可以直接使用docker下载pyspider镜像来使用,但这个镜像比较老。

所以我们现在就从https://github.com/binux/pyspider下载代码文件,自己来制作镜像。

部署继续使用docker结合docker-compose的形式来进行安装。

二、部署步骤

1、部署MySQL

# docker run  --name pymysql \
-v /data/pyspider/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=haibing483 -d mysql

--name pymysql:给容器取名pymysql
-v /data/pyspider/mysql/data:/var/lib/mysql:把MySQL数据库文件目录/var/lib/mysql映射在宿主机的/data/pyspider/mysql/data目录上
-e MYSQL_ROOT_PASSWORD=haibing483:给MySQL的root用户设置一个密码haibing483

2、部署redis

# docker run --name pyredis -d -v /data/pyspider/redis:/data  redis
--name pyredis:给容器取名pyredis
-v /data/pyspider/redis:/data:把redis数据文件目录/data/映射到主机/data/pyspider/redis目录上

3、从github下载binux/pyspider文件制作镜像

从github下载文件来制作镜像,这上面的pyspider版本比较新。

# git clone https://github.com/binux/pyspider
# ls
pyspider
# cd pyspider/
# ls
config_example.json  docker-compose.yaml  docs    MANIFEST.in  pyspider   requirements.txt  setup.py tools
data                 Dockerfile           LICENSE  mkdocs.yml  README.md  run.py            tests     tox.ini
 

下载的文件里面有Dockerfile和docker-compose.yaml文件。

4、修改Dockerfile文件

原Dockerfile文件内容:
# cat Dockerfile

FROM python:3.6
MAINTAINER binux <roy@binux.me>

# install phantomjs
RUN mkdir -p /opt/phantomjs \
        && cd /opt/phantomjs \
        && wget -O phantomjs.tar.bz2 https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 \
        && tar xavf phantomjs.tar.bz2 --strip-components 1 \
        && ln -s /opt/phantomjs/bin/phantomjs /usr/local/bin/phantomjs \
        && rm phantomjs.tar.bz2
# Fix Error: libssl_conf.so: cannot open shared object file: No such file or directory
ENV OPENSSL_CONF=/etc/ssl/

# install nodejs
ENV NODEJS_VERSION=8.15.0 \
    PATH=$PATH:/opt/node/bin
WORKDIR "/opt/node"
RUN apt-get -qq update && apt-get -qq install -y curl ca-certificates libx11-xcb1 libxtst6 libnss3 libasound2 libatk-bridge2.0-0 libgtk-3-0 --no-install-recommends && \
    curl -sL https://nodejs.org/dist/v${NODEJS_VERSION}/node-v${NODEJS_VERSION}-linux-x64.tar.gz | tar xz --strip-components=1 && \
    rm -rf /var/lib/apt/lists/*
RUN npm install puppeteer express

# install requirements
COPY requirements.txt /opt/pyspider/requirements.txt
RUN pip install -r /opt/pyspider/requirements.txt

# add all repo
ADD ./ /opt/pyspider

# run test
WORKDIR /opt/pyspider
RUN pip install -e .[all]

# Create a symbolic link to node_modules
RUN ln -s /opt/node/node_modules ./node_modules

#VOLUME ["/opt/pyspider"]
ENTRYPOINT ["pyspider"]

EXPOSE 5000 23333 24444 25555 22222

Dockerfile中有几个地方需要修改一下才能用。

………

本文隐藏内容全文需 点击文章最后链接查看

前往微信公众号查看全文: https://mp.weixin.qq.com/s/NHgIzKjozQ0q8m_Y792GQQ


其它相关文章:
1.docker安装pyspider方法1:pyspider最简单的安装方法
2.docker安装pyspider方法2:mysql+rabbitmq+pyspider(python2)
3.docker安装pyspider方法3:mysql+redis+HAProxy+pyspider(python3)
4.pyspider的简单使用​