307 字
2 分钟
一个镜像装下全套工具链:apktool 项目的 Docker 与安全隔离

单镜像:网页、apktool、Java、SDK 全在一起#

36.0.0
FROM python:3.11-slim-bookworm
# + apktool_3.0.3.jar,一次 RUN 装完,sdkmanager licenses 自动确认

版本全部 ARG 化:APKTOOL_VERSIONANDROID_BUILD_TOOLS_VERSION,升级只改两个数字。部署时:

Terminal window
docker compose up -d --build
# 打开 http://服务器IP:8090

安全隔离:签名密钥不出服务端#

这是我最在意的设计:

volumes:
- ./wallet.jks:/app/wallet.jks:ro # 只读挂载
- ./apks:/app/apks:ro # 固定 APK 只读
environment:
SIGN_KEYSTORE: "/app/wallet.jks"
SIGN_KEY_ALIAS: "wallet"
SIGN_PASSWORD: "abc1234"
  • .dockerignore 默认不把 wallet.jks 打进镜像,密钥只存在服务器目录
  • 客户页面只能选固定 APK、下点按钮,签名路径、别名、密码全部在服务端,HTML 里一个字都不出现
  • web_jobs/ 可写挂载做任务区,lab/ 做解包工作区,权限边界清晰

我的运维技能点#

  • 多工具链镜像:apt 体积控制(--no-install-recommends + 清 lists)、SDK 缓存清理,镜像不臃肿
  • 配置分离:.env / compose environment 管密码,仓库只有示例
  • 交付闭环:DOCKER_DEPLOY.md 写清本机测试 → 服务器上传清单 → 启动命令,客户照着敲就行

从 Python 后端、Android 打包链路到 Docker 交付,这就是我在 apktool 项目里的一条龙技能。更多实战,欢迎翻 Kanshi 板块其他文章。