Vai al contenuto principale

Docker e docker-compose

L'installazione di A-Parser su Linux e MacOS tramite Docker è il metodo consigliato; abbiamo preparato un'immagine che include tutte le dipendenze e le librerie necessarie per il funzionamento di A-Parser e Headless Chrome.

Prima dell'installazione

Download della distribuzione

Scarica e decomprimi la distribuzione di A-Parser:

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
nota

Il download avviene tramite un link monouso per Linux. È possibile ottenerlo nell'Area membri, scheda A-Parser -> Download

Avvio tramite Docker

Avvio in modalità foreground

Avvia A-Parser in modalità foreground per visualizzare i log nel terminale:

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

L'opzione -foreground visualizza il contenuto del file di log direttamente nel terminale:

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

Dopo l'avvio, A-Parser sarà disponibile all'indirizzo http://127.0.0.1:9091

Avvio in background

Per avviare il contenitore in background, usa il comando:

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

Ottimizzazione dei thread all'avvio tramite Docker

Per impostazione predefinita, all'interno del container è presente un limite al numero di file/socket aperti. Per aumentare il limite a 10240 durante l'avvio tramite Docker, usa l'opzione --ulimit:

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

Inoltre, si consiglia di eseguire l'ottimizzazione di Linux per un numero maggiore di thread sul sistema host.

Aggiornamento di A-Parser nel container Docker

Ferma il contenitore:

docker stop aparser

Aggiorna A-Parser:

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

Al termine dell'aggiornamento, avvia A-Parser

nota

Puoi anche usufruire dell'aggiornamento tramite l'interfaccia o tramite link monouso

Avvio in modalità Headful

Per lo scraping di siti che richiedono l'avvio del browser in modalità headful (con display virtuale), utilizzare l'immagine aparser/runtime:headful.

Per passare dall'immagine standard a quella headful:

Arrestare il contenitore:

docker stop aparser

Scaricare l'immagine headful:

docker pull aparser/runtime:headful

Avviare A-Parser con la nuova immagine:

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

Per docker-compose, sostituire l'immagine in docker-compose.yml:

image: aparser/runtime:headful

Quindi eseguire:

docker compose up -d
nota

Dopo l'avvio, nelle impostazioni dello scraper, abilitare Chrome headless: 0. Nel log all'avvio di Chrome dovrebbe apparire Headful. Il server novnc è disponibile sulla porta 5900 per il controllo visivo, la password viene impostata tramite la variabile VNC_PASSWORD (predefinita: docker).

Avvio tramite docker-compose

Esempio docker-compose.yml

Crea il file docker-compose.yml:

version: '3'

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

Avvio tramite docker-compose

Avvia A-Parser:

docker compose up -d

Ottimizzazione dei thread in docker-compose

Quando si avvia tramite docker-compose, all'interno del container si applica una restrizione sul numero di file/socket aperti. Per aumentare il limite a 10240, aggiungere al servizio a-parser il blocco ulimits:

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

Si raccomanda inoltre di eseguire l'ottimizzazione di Linux per un numero maggiore di thread sul sistema host.