Implementierung eines Crawler-Scrapy-Image, das von Dockerfile basierend auf Alpine erstellt wurde

Implementierung eines Crawler-Scrapy-Image, das von Dockerfile basierend auf Alpine erstellt wurde

1. Laden Sie das Alpenbild herunter

[root@DockerBrian ~]# docker pull alpine
Standard-Tag verwenden: latest
Es wird versucht, das Repository docker.io/library/alpine abzurufen ...
aktuell: Abrufen von docker.io/library/alpine
4fe2ade4980c: Ziehen abgeschlossen
Digest: sha256:621c2f39f8133acb8e64023a94dbdf0d5ca81896102b9e57c0dc184cadaf5528
Status: Neueres Image für docker.io/alpine:latest heruntergeladen
[root@docker43 ~]# Docker-Bilder
REPOSITORY TAG BILD ID ERSTELLT GRÖSSE
docker.io/alpine-latest 196d12cf6ab1 vor 3 Wochen 4,41 MB

2. Dockerfile schreiben

Erstellen Sie ein Scrapy-Verzeichnis zum Speichern der Dockerfile-Datei

[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
Gesamtdosis 4
-rw-r--r-- 1 root root 1394 10. Okt. 11:36 Dockerfile

Schreiben einer Docker-Datei

# Geben Sie das erstellte Basis-Image von Alpine an
 
# Informationen zur Autorenbeschreibung MAINTAINER alpine_python3_scrapy ([email protected])
 
# Ersetzen Sie die Alibaba Cloud-Quelle 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
 
# Zeit synchronisieren # Quelle aktualisieren, OpenSSH installieren, Konfigurationsdatei ändern, Schlüssel generieren und Zeit synchronisieren 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-Abhängigkeitspakete installieren (erforderliche Abhängigkeiten)
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
 
# Die Installationsumgebung erfordert Pip-Pakete (Pakete können hier nach Bedarf hinzugefügt oder gelöscht werden)
RUN pip3 install --default-timeout=100 --no-cache-dir --upgrade pip setuptools pymysql pymongo redis scrapy-redis ipython Scrapy-Anfragen
 
# Starten Sie das SSH-Skript RUN echo "/usr/sbin/sshd -D" >> /etc/start.sh && \
  chmod +x /etc/start.sh
 
# Port 22 öffnen EXPOSE 22
 
# Führen Sie den SSH-Startbefehl CMD ["/bin/sh","/etc/start.sh"] aus. 

Der Container kann über SSH remote auf in der Python3-Umgebung installiertes Scrapy zugreifen und den SSH-Dienst über das Skript start.sh starten.

3. Erstellen Sie ein Bild

Erstellen eines Images

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

Spiegel anzeigen

[root@DockerBrian scrapy]# Docker-Bilder
REPOSITORY TAG BILD ID ERSTELLT GRÖSSE
scrapy_redis_ssh v1 b2c95ef95fb9 vor 4 Stunden 282 MB
docker.io/alpine-latest 196d12cf6ab1 vor 4 Wochen 4,41 MB

4. Erstellen Sie einen Container

Erstellen Sie einen Container (mit dem Namen scrapy10086, der Remote-Port wird dem Host-Port 10086 zugeordnet)

Kopieren Sie den Code wie folgt:
docker run -itd --restart=always --name scrapy10086 -p 10086:22 scrapy_redis_ssh:v1

Container anzeigen

[root@DockerBrian scrapy]# docker ps
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
7fb9e69d79f5 b2c95ef95fb9 "/bin/sh /etc/star..." vor 3 Stunden Vor 3 Stunden 0.0.0.0:10086->22/tcp scrapy10086

Beim Container anmelden

[root@DockerBrian scrapy]# ssh [email protected] -p 10086 
Die Authentizität des Hosts '[127.0.0.1]:10086 ([127.0.0.1]:10086)' kann nicht festgestellt werden.
Der ECDSA-Schlüsselfingerabdruck ist SHA256:wC46AU6SLjHyEfQWX6d6ht9MdpGKodeMOK6/cONcpxk.
Der ECDSA-Schlüsselfingerabdruck lautet MD5:6a:b7:31:3c:63:02:ca:74:5b:d9:68:42:08:be:22:fc.
Möchten Sie die Verbindung wirklich fortsetzen (ja/nein)? ja
Warnung: „[127.0.0.1]:10086“ (ECDSA) wurde dauerhaft zur Liste der bekannten Hosts hinzugefügt.
[email protected]'s Passwort: # Das Passwort ist hier im Dockerfile echo "root:h056zHJLg85oW5xh7VtSa" | chpasswd definiert
Willkommen bei Alpine!
 
Das Alpine Wiki enthält eine große Anzahl von Anleitungen und allgemeinen
Informationen zur Administration von Alpine-Systemen.
Siehe <http://wiki.alpinelinux.org>.
 
Sie können das System mit dem Befehl einrichten: setup-alpine
 
Sie können diese Nachricht ändern, indem Sie /etc/motd bearbeiten.
 
7363738cc96a:~#

5. Testen

Erstellen Sie einen Scrapy-Projekttest

7363738cc96a:~# Scrapy Startprojekttest
Neues Scrapy-Projekt „Test“, unter Verwendung des Vorlagenverzeichnisses „/usr/lib/python3.6/site-packages/scrapy/templates/project“, erstellt in:
  /Wurzel/Test
 
Sie können Ihre erste Spinne wie folgt starten:
  CD-Test
  Scrapy Genspider Beispiel 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 einstellungen.py spiders
7363738cc96a:~/test/test#

Testerfolg

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Problemlösungsvorgänge für Alpine Docker-Bildschriftarten
  • Implementierung eines Tomcat-Images, das mit Dockerfile basierend auf Alpine erstellt wurde
  • So erstellen Sie ein php-nginx-alpine-Image von Grund auf in Docker
  • Perfekte Lösung für das Zeitzonenproblem des Docker Alpine-Image

<<:  Vergleich von mydumper und mysqldump in MySQL

>>:  Einige Fallstricke beim JavaScript Deep Copy

Artikel empfehlen

Der Button ist im IE auf beiden Seiten gestreckt

Wenn Sie Schaltflächen (Eingabe, Schaltfläche) sch...

Verwendung des Linux-Datumsbefehls

1. Befehlseinführung Mit dem Datumsbefehl wird di...

Detaillierte Erklärung zur Verwendung benutzerdefinierter Parameter in MySQL

Zu den MySQL-Variablen zählen Systemvariablen und...

So ändern Sie schnell das Root-Passwort unter CentOS8

Starten Sie die virtuelle Centos8-Maschine und dr...

Schritte zum Übertragen des neuen Kernels auf das Linux-System

1. Laden Sie das Ubuntu16.04-Image und den entspr...

Einige Kenntnisse über die absolute und relative Positionierung von Seitenelementen

Ab heute werde ich regelmäßig kleine Wissenspunkte...

Detaillierte Erklärung zur Verwendung von $emit in Vue.js

1. Übergeordnete Komponenten können Props verwend...

Vue-Grundlagen MVVM, Vorlagensyntax und Datenbindung

Inhaltsverzeichnis 1. Vue-Übersicht Offizielle Vu...