Hoppa till huvudinnehåll

Docker och docker-compose

Att installera A-Parser på Linux och MacOS via Docker är det rekommenderade sättet, vi har förberett en bild som innehåller alla nödvändiga beroenden och bibliotek för att köra A-Parser och Headless Chrome

Före installation

Ladda ner distributionen

Ladda ner och packa upp A-Parser-distributionen:

curl -O https://a-parser.com/members/onetime/ce42f308eaa577b5/aparser-linux-x64.tar.gz
tar zxf aparser-linux-x64.tar.gz
rm -f aparser-linux-x64.tar.gz
anteckning

Nedladdningen sker via en engångslänk för Linux. Denna hämtas i Medlemsområdet, fliken A-Parser -> Nedladdningar

Starta via Docker

Starta i förgrundsläge

Starta A-Parser i förgrundsläge för att se loggar i terminalen:

docker run --rm --name aparser -v $(pwd)/aparser:/app -p 9091:9091 -t aparser/runtime ./aparser -foreground

Alternativet -foreground skriver ut loggfilens innehåll direkt i terminalen:

Apr 27 07:06:53.10427 [master] foreground mode
Apr 27 07:06:54.06409 [master] Found local Chromium: /app/dist/nodejs/node_modules/puppeteer/.local-chromium/linux-856583/chrome-linux/chrome
Apr 27 07:06:55.36487 [master] NodeJS console: [Rank::CMS] total loaded 1446 apps
Apr 27 07:07:19.01377 [master] Start ProxyChecker nocheck
Apr 27 07:07:19.24418 [master] Start ProxyChecker default
Apr 27 07:07:19.62635 [master] A-Parser v1.2.1176-linux-x64 started, tasks: 0 / 2, memory total: 1989 MB, available: 610 MB

Efter start kommer A-Parser att vara tillgänglig på adressen http://127.0.0.1:9091

Starta i bakgrunden

För att starta containern i bakgrunden, använd kommandot:

docker run --rm --name aparser -v $(pwd)/aparser:/app -p 9091:9091 -t -d aparser/runtime ./aparser

Optimering av trådar vid start via Docker

Som standard finns en begränsning för antalet öppna filer/sockets inuti containern. För att öka gränsen till 10240 vid start via Docker, använd alternativet --ulimit:

docker run --rm --name aparser -v $(pwd)/aparser:/app -p 9091:9091 --ulimit nofile=10240:10240 -t -d aparser/runtime ./aparser

Dessutom rekommenderas att utföra optimering av Linux för fler trådar på värdsystemet.

Uppdatering av A-Parser i Docker-container

Stoppa containern:

docker stop aparser

Uppdatera A-Parser:

docker run --rm --name aparser -v $(pwd)/aparser:/app -p 9091:9091 -t aparser/runtime ./aparser -foreground -doupdate

När uppdateringen är klar, starta A-Parser

anteckning

Du kan också använda uppdatering via gränssnittet eller via en engångslänk

Start i Headful-läge

För dataskrapning av webbplatser som kräver att webbläsaren körs i headful-läge (med en virtuell display), använd imagen aparser/runtime:headful.

För att byta från en vanlig image till headful:

Stoppa containern:

docker stop aparser

Ladda ner headful-imagen:

docker pull aparser/runtime:headful

Starta A-Parser med den nya imagen:

docker run --rm --name aparser -v $(pwd)/aparser:/app -p 9091:9091 -t -d aparser/runtime:headful ./aparser

För docker-compose, byt ut imagen i docker-compose.yml:

image: aparser/runtime:headful

Kör sedan:

docker compose up -d
anteckning

Efter start, aktivera Chrome headless: 0 i scraperns inställningar. I loggen vid start av Chrome bör Headful visas. novnc-servern är tillgänglig på port 5900 för visuell kontroll, lösenordet ställs in via variabeln VNC_PASSWORD (standard: docker).

Körning via docker-compose

Exempel på docker-compose.yml

Skapa filen docker-compose.yml:

version: '3'

services:
a-parser:
image: aparser/runtime:latest
command: ./aparser
restart: always
volumes:
- ./aparser:/app
ports:
- 9091:9091

Körning via docker-compose

Starta A-Parser:

docker compose up -d

Trådoptimering i docker-compose

Vid körning via docker-compose finns en begränsning för antalet öppna filer/sockets inuti containern. För att öka gränsen till 10240, lägg till blocket ulimits i tjänsten a-parser:

services:
a-parser:
image: aparser/runtime:latest
command: ./aparser
restart: always
volumes:
- ./aparser:/app
ports:
- 9091:9091
ulimits:
nofile:
soft: 10240
hard: 10240

Det rekommenderas även att utföra Linux-optimering för fler trådar på värdsystemet.