FROM python:3.11-slim ENV DEBIAN_FRONTEND=noninteractive \ PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ TZ=Asia/Shanghai # 仅保留 ABOT 运行所需的系统依赖: # 1. 不再在应用镜像中内置 MariaDB / Redis,避免单容器承载过多职责; # 2. 生产部署交由 docker-compose 管理独立基础设施服务; # 3. 补充常用字体依赖,降低图片生成与渲染场景中的缺字风险。 RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ curl \ bash \ tzdata \ ffmpeg \ libgl1 \ libglib2.0-0 \ fonts-noto-cjk \ fonts-noto-color-emoji \ && rm -rf /var/lib/apt/lists/* WORKDIR /app COPY requirements.txt /app/requirements.txt RUN pip install --no-cache-dir -r /app/requirements.txt COPY . /app COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh RUN chmod +x /usr/local/bin/docker-entrypoint.sh # 统一使用 ABOT_* 命名作为默认环境变量前缀: # 1. 与 config.example.yaml 保持一致,降低新用户理解成本; # 2. WECHAT_* 继续用于生成 wechat_ipad/config.toml; # 3. 默认值仅用于容器首次启动兜底,正式环境建议在 .env 中显式配置。 ENV ABOT_ENVIRONMENT=production \ ABOT_PLUGIN_DIR=plugins \ ABOT_DB_HOST=127.0.0.1 \ ABOT_DB_PORT=3306 \ ABOT_DB_NAME=message_archive \ ABOT_DB_USER=root \ ABOT_DB_PASSWORD= \ ABOT_REDIS_HOST=127.0.0.1 \ ABOT_REDIS_PORT=6379 \ ABOT_REDIS_DB=0 \ ABOT_REDIS_PASSWORD= \ WECHAT_SERVER_URL=http://127.0.0.1:8059/ \ WECHAT_SERVER_IP=127.0.0.1 \ WECHAT_SERVER_PORT=8059 \ WECHAT_SERVER_KEY= \ WECHAT_WXID= \ WECHAT_DEVICE_NAME=ABOTPad \ WECHAT_DEVICE_ID= \ ABOT_DASHBOARD_USERNAME=admin \ ABOT_DASHBOARD_PASSWORD=ChangeThisPassword_2026! \ ABOT_DASHBOARD_SECRET_KEY= \ ABOT_TRENDRADAR_WEBHOOK_TOKEN=please_change_this_token \ DASHBOARD_HOST=0.0.0.0 \ DASHBOARD_PORT=8888 EXPOSE 8888 ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] CMD ["python", "main.py"]