Automation Slim 是一个专为轻量化、高性能自动化任务设计的 Docker 工控平台。
相比于传统的臃肿桌面镜像,本项目移除了 60% 以上的冗余组件(如 Firefox、Office 等),使用极简的 Openbox 窗口管理器替代了 XFCE。它在一个极其精简的容器内集成了 Google Chrome、AutoKey、Python (Selenium/Playwright) 以及一套可视化的 Web 任务调度面板。
非常适合用于:网页爬虫、RPA 自动化、定时签到、浏览器操作录制等场景。
fonts-wqy-microhei),完美解决 Chrome 中文乱码问题。autocutsel 驱动)。你需要一台安装了 Docker 和 Docker Compose 的服务器(Linux/Windows/Mac 均可)。
在你的服务器上执行:
mkdir -p automation/data automation/logs automation/Downloads
cd automation
创建名为 docker-compose.yml 的文件,并填入以下内容:
version: '3.8'
services:
automation-slim:
image: ghcr.io/workerspages/automation:slim
container_name: Automation-Slim
ports:
- "8080:8080"
environment:
- VNC_RESOLUTION=1360x768 # 远程桌面分辨率 (PaaS优化: 降低至1360x768节省内存)
- TZ=Asia/Shanghai # 容器时区
- VNC_PW=admin
- SECRET_KEY=your-secret-key-change-this
- ADMIN_USERNAME=admin
- ADMIN_PASSWORD=admin123
- DISPLAY=:1 # 显示面画在编号为 1 的虚拟显示器上 (请误修改)
- MAX_SCRIPT_TIMEOUT=600 # 全局环境变量-如果你代码里的 sleep 时间超过了 600 秒,Flask 后端会认为任务卡死
- SWAP_SIZE_MB=1024 # Swap 交换空间大小 (MB)
# === 数据库配置 (可选:连接外部 MariaDB) ===
# --- 数据库 (可选,留空默认使用内置 SQLite) ---
# 如需外接 MariaDB/MySQL,请填写以下变量:
# - MARIADB_HOST= # 例如: 192.168.1.100
# - MARIADB_PORT=3306
# - MARIADB_USER=root
# - MARIADB_PASSWORD=root
# - MARIADB_DB=automation_slim
# - DB_SSL_ENABLED=true # (可选) 极简模式 (仅需开启 SSL,使用默认系统证书)
# - DB_SSL_CA_PATH=/etc/ssl/certs/ca-certificates.crt # (可选) 自定义 CA 证书路径 推荐
# =======================================
# === Telegram 通知配置 ===
- TELEGRAM_BOT_TOKEN=
- TELEGRAM_CHAT_ID=
# === 邮件通知配置 ===
# 开启邮件通知:true 关闭邮件通知:false
- ENABLE_EMAIL_NOTIFY=false
- SMTP_HOST=smtp.gmail.com
- SMTP_PORT=587
- [email protected]
- SMTP_PASSWORD=your_app_password
- [email protected]
- [email protected]
# === Cloudflare Tunnel 配置 ===
# 必须提供 Token,否则脚本会报错并跳过启动 开启:true 关闭:false
- ENABLE_CLOUDFLARE_TUNNEL=false
- CLOUDFLARE_TUNNEL_TOKEN=your-tunnel-token-here
- APP_PUBLIC_DOMAIN= # Cloudflare Tunnel后台配置的域名
volumes:
- ./Downloads:/home/headless/Downloads
- ./data:/app/data
- ./logs:/app/logs
- ./scripts:/home/headless/.config/autokey/data/MyScripts # autokey脚本文件目录
restart: unless-stopped
shm_size: '2gb'
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:8080/health" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
docker-compose up -d
等待几秒钟,服务即可启动。
打开浏览器访问 http://<服务器IP>:8080。
adminadmin123docker-compose.yml 中设置了 ADMIN_PASSWORD,每次容器重启时,系统都会强制将 Admin 用户的密码重置为该环境变量指定的值。点击面板右上角的 "🖥️ 远程桌面" 按钮进入 NoVNC 界面。
界面布局:
tint2),显示当前打开的窗口和时间。如何打开菜单?
📋 剪贴板如何同步?
Ctrl+V。test_chrome.py)。from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
options = Options()
options.add_argument("--no-sandbox")
# 注意:在 Openbox 环境下,可以设为 False 观察浏览器动作
browser = webdriver.Chrome(options=options)
browser.get("https://www.baidu.com")
print(browser.title)
time.sleep(5)
browser.quit()
# 输入 Hello World 并回车
keyboard.send_keys("Hello World")
keyboard.send_keys("<enter>")
为了极致压缩体积,镜像中未预装 Playwright 自带的庞大浏览器二进制包。 如果你使用 Playwright,必须在代码中指定使用系统安装的 Chrome:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(
executable_path="/usr/bin/google-chrome-stable", # 👈 必须指定此路径
headless=False
)
page = browser.new_page()
page.goto("http://example.com")
print(page.title())
browser.close()
Q: 为什么启动后看不到“开始菜单”? A: 这是 Openbox 的特性。它没有开始菜单。请在桌面空白处 点击鼠标右键 呼出菜单。
Q: Chrome 启动时崩溃或报错 "Crashpad"?
A: 请检查 docker-compose.yml 中是否配置了 shm_size: '2gb'。现代浏览器在 Docker 中需要较大的共享内存空间。
Q: 为什么没有 Firefox 了? A: 这是 Ultra-Slim (极致瘦身) 版本。为了将镜像体积控制在最小,我们移除了 Firefox。如果你必须使用 Firefox,请使用本项目的旧版分支或自行修改 Dockerfile 安装。
Q: 如何查看脚本的运行日志?
A: 在 Web 面板的任务卡片上,会显示最后一次运行的状态。你可以通过 SSH 进入容器查看详细日志:/app/data/automation.log。
Q: 部署到 PaaS 平台(Railway/Zeabur/Koyeb)很卡怎么办? A: 本项目已针对 PaaS 平台进行优化。如仍卡顿,请确保:
Q: shm_size 在 PaaS 上不生效怎么办?
A: 本镜像已内置 --disable-dev-shm-usage 参数绕过此限制,无需额外配置。
如果你想自己构建镜像:
克隆代码:
git clone https://github.com/workerspages/automation.git
准备依赖文件:
构建前必须确保 browser-configs/chrome.zip 存在(可以是个空的 zip,但在构建时必须要有):
mkdir -p browser-configs && touch browser-configs/dummy && zip browser-configs/chrome.zip browser-configs/dummy
构建镜像:
docker build -t automation .
构建多架构镜像 (AMD64 + ARM64):
docker buildx build --platform linux/amd64,linux/arm64 -t automation --push .
Content type
Image
Digest
sha256:df69defb9…
Size
729.2 MB
Last updated
about 1 month ago
docker pull yesyunxin/automation