Chuyển đến nội dung chính

Docker và docker-compose

Cài đặt A-Parser trên Linux và MacOS thông qua docker là phương pháp được khuyến nghị, chúng tôi đã chuẩn bị một image bao gồm tất cả các phụ thuộc và thư viện cần thiết để A-Parser và Headless Chrome hoạt động

Trước khi cài đặt

Tải xuống bản phân phối

Tải xuống và giải nén bản phân phối 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
ghi chú

Việc tải xuống được thực hiện qua một liên kết dùng một lần cho Linux. Bạn cần lấy nó trong Khu vực Thành viên, tab A-Parser -> Tải xuống

Chạy qua Docker

Chạy ở chế độ foreground

Chạy A-Parser ở chế độ foreground để xem log trong terminal:

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

Tùy chọn -foreground sẽ hiển thị nội dung tệp nhật ký trực tiếp trong 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

Sau khi khởi chạy, A-Parser sẽ khả dụng tại địa chỉ http://127.0.0.1:9091

Chạy ở chế độ nền

Để chạy container trong chế độ nền, hãy sử dụng lệnh:

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

Tối ưu hóa luồng khi chạy qua Docker

Theo mặc định, bên trong container có giới hạn về số lượng file/socket được mở. Để tăng giới hạn lên 10240 khi chạy qua Docker, hãy sử dụng tùy chọn --ulimit:

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

Ngoài ra, bạn nên thực hiện tối ưu hóa Linux để chạy nhiều luồng hơn trên hệ thống máy chủ.

Cập nhật A-Parser trong Docker container

Dừng container:

docker stop aparser

Cập nhật A-Parser:

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

Sau khi hoàn tất cập nhật, hãy khởi chạy A-Parser

ghi chú

Bạn cũng có thể thực hiện cập nhật thông qua giao diện hoặc bằng liên kết dùng một lần

Chạy ở chế độ Headful

Để cào dữ liệu các trang web yêu cầu chạy trình duyệt ở chế độ headful (với màn hình ảo), hãy sử dụng image aparser/runtime:headful.

Để chuyển từ image thông thường sang headful:

Dừng container:

docker stop aparser

Tải image headful:

docker pull aparser/runtime:headful

Khởi chạy A-Parser với image mới:

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

Đối với docker-compose, hãy thay đổi image trong docker-compose.yml:

image: aparser/runtime:headful

Sau đó thực hiện:

docker compose up -d
ghi chú

Sau khi khởi chạy, trong cài đặt của công cụ cào dữ liệu, hãy bật Chrome headless: 0. Trong nhật ký khi khởi chạy Chrome sẽ hiển thị Headful. Máy chủ novnc khả dụng trên cổng 5900 để kiểm soát trực quan, mật khẩu được đặt qua biến VNC_PASSWORD (mặc định: docker).

Chạy qua docker-compose

Ví dụ docker-compose.yml

Tạo tệp docker-compose.yml:

version: '3'

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

Chạy qua docker-compose

Khởi chạy A-Parser:

docker compose up -d

Tối ưu hóa luồng trong docker-compose

Khi chạy qua docker-compose, bên trong container sẽ có giới hạn về số lượng tệp/socket được mở. Để tăng giới hạn lên 10240, hãy thêm khối ulimits vào dịch vụ 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

Ngoài ra, bạn nên thực hiện tối ưu hóa Linux để có nhiều luồng hơn trên hệ thống máy chủ (host).