Scrapy學習過程之一:安裝

原文作者:朱敬志

原文鏈接:https://www.cnblogs.com/zhujingzhi/p/9766965.html

感謝原文作者朱敬志,非常好的一個構建過程,很快,構建出來的鏡像很小,親測有效。

一、下載alpine鏡像

[root@DockerBrian ~]# docker pull alpine
Using default tag: latest
Trying to pull repository docker.io/library/alpine ...
latest: Pulling from docker.io/library/alpine
4fe2ade4980c: Pull complete
Digest: sha256:621c2f39f8133acb8e64023a94dbdf0d5ca81896102b9e57c0dc184cadaf5528
Status: Downloaded newer image for docker.io/alpine:latest
[root@docker43 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/alpine latest 196d12cf6ab1 3 weeks ago 4.41 MB

二、編寫Dockerfile

創建scrapy目錄存放dockerfile文件

[root@DockerBrian ~]# mkdir /opt/alpineDockerfile/
[root@DockerBrian ~]# cd /opt/alpineDockerfile/
[root@DockerBrian alpineDockerfile]# mkdir scrapy  && cd scrapy && touch Dockerfile
[root@DockerBrian alpineDockerfile]# cd scrapy/
[root@DockerBrian scrapy]# ll
總用量 4
-rw-r--r-- 1 root root 1394 10月 10 11:36 Dockerfile

編寫dockerfile文件

# 指定創建的基礎鏡像
FROM alpine
  
# 作者描述信息
MAINTAINER alpine_python3_scrapy ([email protected])
  
# 替換阿里雲的源
RUN echo "http://mirrors.aliyun.com/alpine/latest-stable/main/" > /etc/apk/repositories && \
    echo "http://mirrors.aliyun.com/alpine/latest-stable/community/" >> /etc/apk/repositories
  
# 同步時間
  
# 更新源、安裝openssh 並修改配置文件和生成key 並且同步時間
RUN apk update && \
    apk add --no-cache openssh-server tzdata && \
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    sed -i "s/#PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config && \
    ssh-keygen -t rsa -P "" -f /etc/ssh/ssh_host_rsa_key && \
    ssh-keygen -t ecdsa -P "" -f /etc/ssh/ssh_host_ecdsa_key && \
    ssh-keygen -t ed25519 -P "" -f /etc/ssh/ssh_host_ed25519_key && \
    echo "root:h056zHJLg85oW5xh7VtSa" | chpasswd
 
 
# 安裝Scrapy依賴包(必須安裝的依賴包)
RUN apk add --no-cache python3 python3-dev gcc openssl-dev openssl libressl libc-dev linux-headers libffi-dev libxml2-dev libxml2 libxslt-dev openssh-client openssh-sftp-server
 
# 安裝環境需要pip包(這裏的包可以按照需求添加或者刪除)
RUN pip3 install --default-timeout=100 --no-cache-dir --upgrade pip setuptools pymysql pymongo redis scrapy-redis ipython Scrapy requests
 
# 啓動ssh腳本
RUN echo "/usr/sbin/sshd -D" >> /etc/start.sh && \
    chmod +x /etc/start.sh
 
# 開放22端口
EXPOSE 22
  
# 執行ssh啓動命令
CMD ["/bin/sh","/etc/start.sh"]

實現了容器可以SSH遠程訪問 基於Python3 環境安裝的Scrapy,通過start.sh腳本啓動SSH服務

三、創建鏡像

創建鏡像

[root@DockerBrian scrapy]# docker build -t scrapy_redis_ssh:v1 .

查看鏡像

[root@DockerBrian scrapy]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
scrapy_redis_ssh    v1                  b2c95ef95fb9        4 hours ago         282 MB
docker.io/alpine    latest              196d12cf6ab1        4 weeks ago         4.41 MB

四、創建容器

創建容器(名字爲scrapy10086 遠程端口是映射宿主機10086端口)

docker run -itd --restart=always --name scrapy10086 -p 10086:22 scrapy_redis_ssh:v1

查看容器

[root@DockerBrian scrapy]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
7fb9e69d79f5        b2c95ef95fb9        "/bin/sh /etc/star..."   3 hours ago         Up 3 hours          0.0.0.0:10086->22/tcp   scrapy10086

登錄容器

[root@DockerBrian scrapy]# ssh [email protected] -p 10086 
The authenticity of host '[127.0.0.1]:10086 ([127.0.0.1]:10086)' can't be established.
ECDSA key fingerprint is SHA256:wC46AU6SLjHyEfQWX6d6ht9MdpGKodeMOK6/cONcpxk.
ECDSA key fingerprint is MD5:6a:b7:31:3c:63:02:ca:74:5b:d9:68:42:08:be:22:fc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[127.0.0.1]:10086' (ECDSA) to the list of known hosts.
[email protected]'s password:                                                                # 這裏的密碼就是dockerfile中定義的 echo "root:h056zHJLg85oW5xh7VtSa" | chpasswd
Welcome to Alpine!
 
The Alpine Wiki contains a large amount of how-to guides and general
information about administrating Alpine systems.
See <http://wiki.alpinelinux.org>.
 
You can setup the system with the command: setup-alpine
 
You may change this message by editing /etc/motd.
 
7363738cc96a:~#

五、測試

創建個scrapy項目測試

7363738cc96a:~# scrapy startproject test
New Scrapy project 'test', using template directory '/usr/lib/python3.6/site-packages/scrapy/templates/project', created in:
    /root/test
 
You can start your first spider with:
    cd test
    scrapy genspider example example.com
7363738cc96a:~# cd test/
7363738cc96a:~/test# ls
scrapy.cfg  test
7363738cc96a:~/test# cd test/
7363738cc96a:~/test/test# ls
__init__.py     __pycache__     items.py        middlewares.py  pipelines.py    settings.py     spiders
7363738cc96a:~/test/test#

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章