Ir al contenido principal

Docker y docker-compose

La instalación de A-Parser en Linux y MacOS a través de docker es el método recomendado, hemos preparado una imagen que incluye todas las dependencias y librerías necesarias para el funcionamiento de A-Parser y Headless Chrome

Antes de la instalación

Descarga de la distribución

Descargue y descomprima la distribución de 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

La descarga se realiza mediante un enlace de un solo uso para Linux. Debe obtenerlo en el Área de clientes, pestaña A-Parser -> Descargas

Ejecución a través de Docker

Ejecución en modo foreground

Ejecute A-Parser en modo foreground para ver los registros en la terminal:

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

La opción -foreground muestra el contenido del archivo de registro directamente en la terminal:

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

Después del inicio, A-Parser estará disponible en la dirección http://127.0.0.1:9091

Ejecución en segundo plano

Para ejecutar el contenedor en segundo plano, use el comando:

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

Ajuste de hilos al ejecutar a través de Docker

Por defecto, dentro del contenedor existe una restricción en el número de archivos/sockets abiertos. Para aumentar el límite a 10240 al ejecutar a través de Docker, utilice la opción --ulimit:

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

Adicionalmente, se recomienda realizar la optimización de Linux para un mayor número de hilos en el sistema host.

Actualización de A-Parser en un contenedor Docker

Detenga el contenedor:

docker stop aparser

Actualice A-Parser:

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

Al finalizar la actualización, inicie A-Parser

nota

También puede realizar la actualización a través de la interfaz o mediante un enlace de un solo uso

Ejecución en modo Headful

Para la extracción de datos de sitios que requieren ejecutar el navegador en modo headful (con pantalla virtual), utilice la imagen aparser/runtime:headful.

Para cambiar de la imagen normal a headful:

Detenga el contenedor:

docker stop aparser

Descargue la imagen headful:

docker pull aparser/runtime:headful

Inicie A-Parser con la nueva imagen:

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

Para docker-compose, reemplace la imagen en docker-compose.yml:

image: aparser/runtime:headful

Luego ejecute:

docker compose up -d
nota

Después del inicio, en la configuración del extractor active Chrome headless: 0. En el registro (log) al iniciar Chrome debería mostrarse Headful. El servidor novnc está disponible en el puerto 5900 para el control visual, la contraseña se establece a través de la variable VNC_PASSWORD (por defecto: docker).

Ejecución mediante docker-compose

Ejemplo de docker-compose.yml

Cree el archivo docker-compose.yml:

version: '3'

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

Ejecución mediante docker-compose

Inicie A-Parser:

docker compose up -d

Ajuste de hilos en docker-compose

Al ejecutar mediante docker-compose, dentro del contenedor se aplica una restricción en el número de archivos/sockets abiertos. Para aumentar el límite a 10240, añada el bloque ulimits al servicio 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

También se recomienda realizar el ajuste de Linux para un mayor número de hilos en el sistema host.