🚀 一键将应用打包成 Docker 镜像的可视化平台
支持 Java(JAR)、Node.js、Python、Go、静态网站等多种应用类型,提供 Web 界面操作,无需编写 Dockerfile。
⚡ 快速开始
使用 Docker 镜像(推荐)
docker run -d \
--name app2docker \
-p 8000:8000 \
-v $(pwd)/data:/app/data \
-v /var/run/docker.sock:/var/run/docker.sock \
registry.cn-shanghai.aliyuncs.com/51jbm/app2docker:latest访问:http://localhost:8000
默认账号:admin / admin
📦 核心功能
1. 镜像构建
分步构建流程:
- 支持 Java(JAR)、Node.js、Python、Go、静态网站
- 选择数据源(文件上传或 Git 数据源)
- 确认分支(Git 源)
- 选择项目类型和模板
- 选择服务(多服务构建)
- 选择资源包(可选)
- 填写镜像名称和标签
- 实时查看构建日志
2. 流水线管理(CI/CD)
- Webhook 触发:支持 GitHub、GitLab、Gitee
- 分支策略:
- 使用推送分支构建(所有分支都触发)
- 只允许匹配分支触发(使用推送分支构建)
- 使用配置分支构建(所有分支都触发)
- 分支标签映射:不同分支自动使用不同标签(如 master→latest, dev→dev)
- 定时触发:支持 Cron 表达式定时构建
- 构建历史:查看历史构建记录和日志
3. 导出镜像
- 单个镜像导出
- Docker Compose 批量导出
- 支持 Gzip 压缩
4. 任务管理
- 查看所有构建和导出任务
- 实时查看任务日志
- 任务状态跟踪(等待中/进行中/已完成/失败)
- 任务清理功能
5. 配置管理
- Docker 仓库配置:支持多个仓库,可设置激活仓库
- 仓库认证测试:测试仓库登录是否正常
- 自动推送:构建完成后自动推送到激活仓库
6. 部署任务
- 统一任务管理:部署任务与构建/导出任务统一在任务管理中查看
- 多执行通道:支持 Agent、SSH、Portainer 三种目标连接方式
- 两种部署模式:支持
docker_run与docker_compose - 能力检测:根据目标主机能力限制 Compose 模式(
docker-compose/docker-stack) - 全程可追踪:实时查看部署日志、状态流转,支持失败后重试
🎯 使用流程
快速构建
- 登录系统
- 选择镜像构建标签
- 按照步骤提示操作:
- 选择数据源(文件上传或 Git 数据源)
- 确认分支(Git 源)
- 选择项目类型和模板
- 选择服务(多服务构建)
- 选择资源包(可选)
- 填写镜像名称和标签
- 点击开始构建
配置流水线
- 进入流水线管理
- 点击新建流水线
- 配置基本信息(名称、Git 地址、分支)
- 配置构建参数(项目类型、镜像名称、标签)
- 配置 Webhook 设置:
- 选择分支策略
- 配置分支标签映射(可选)
- 保存后获取 Webhook URL
- 在 Git 平台配置 Webhook
🚀 部署任务使用指南
1. 平台与 Agent/SSH/Portainer 的关系
- 平台负责:创建部署任务、编排执行、记录状态和日志
- 目标连接负责:在目标主机真正执行 Docker 部署命令
- 你可以按场景选择连接方式:
- Agent:适合长期在线主机,状态回传及时,运维体验更好
- SSH:无需额外安装 Agent,适合快速接入已有 Linux 主机
- Portainer:适合已经用 Portainer 管理环境的团队
2. 建立连接(先连通,再部署)
- 进入部署管理或主机管理,新增目标主机
- 选择连接类型并填写信息:
- Agent:先在平台生成连接密钥,再在目标主机部署 Agent 容器
- SSH:填写地址、端口、账号和认证信息
- Portainer:填写地址、访问令牌和目标环境
- 点击测试连接,确认目标可访问 Docker
- 连接成功后,检查主机能力信息(例如 Compose 模式支持情况)
建议:生产环境优先使用稳定的长期连接方式,并为目标主机配置最小权限账号。
Agent 的 Docker 部署方式
- 在平台的 Agent 主机管理中生成或选择一个连接密钥(用于
AGENT_SECRET_KEY) - 在目标主机执行以下命令部署 Agent:
docker run -d \ --name app2docker-agent \ --restart=always \ -e AGENT_SECRET_KEY=<你的密钥> \ -e SERVER_URL=ws://<平台IP或域名>:8000 \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /proc:/host/proc:ro \ -v /sys:/host/sys:ro \ registry.cn-shanghai.aliyuncs.com/51jbm/app2docker-agent:latest
- 回到平台“待加入主机”或主机列表,确认 Agent 上线并完成接入
说明:
SERVER_URL建议使用可从目标主机访问的地址,容器内不要使用localhost- 如果平台走 HTTPS/WSS,请改为
wss://<域名> docker.sock挂载后 Agent 才能在主机上执行 Docker 部署命令
3. 部署项目(一步步)
- 准备镜像
- 使用平台构建产物,或填写已有镜像地址与标签
- 新建部署配置
- 选择部署模式:
docker_run或docker_compose - 填写容器参数、端口、环境变量、卷挂载等信息
- 选择部署模式:
- 选择目标主机并执行
- 系统会根据主机能力限制可选 Compose 模式
- 在任务管理查看过程
- 关注状态:等待中 / 进行中 / 已完成 / 失败
- 实时查看日志并定位错误
- 失败后处理
- 修正配置后重试任务,或切换目标主机再次执行
4. 部署任务执行链路(架构图)
flowchart LR
User[用户] --> DeployUI[部署任务界面]
DeployUI --> DeployApi["/deploy-tasks 接口"]
DeployApi --> TaskMgr[统一任务管理]
TaskMgr --> DeployEngine[部署执行编排]
DeployEngine --> AgentExec[Agent执行器]
DeployEngine --> SshExec[SSH执行器]
DeployEngine --> PortainerExec[Portainer执行器]
AgentExec --> AgentHost[Agent主机]
SshExec --> SshHost[SSH主机]
PortainerExec --> PortainerHost[Portainer环境]
AgentHost --> TaskState[状态与日志回传]
SshHost --> TaskState
PortainerHost --> TaskState
TaskState --> TaskPanel[任务管理]
5. 常见排错方向
- 连接失败:检查主机网络连通性、凭据、端口与防火墙
- 无 Docker 权限:确认执行账号具备 Docker 操作权限
- 镜像拉取失败:检查仓库地址、认证配置与镜像标签
- Compose 模式不可选:查看主机能力检测结果,确认是否支持对应模式
⚙️ 配置说明
Docker 仓库配置
点击右上角 ⚙️ 配置 → Docker 配置:
- Registry 地址:docker.io 或私有仓库地址
- 镜像前缀:自动添加到镜像名前
- 账号/密码:仓库认证信息
- 测试登录:验证仓库认证是否正常
🔒 安全建议
- 首次使用必须修改管理员密码
- 配置 Docker 仓库认证信息
- 生产环境建议:
- 使用 HTTPS(前置 Nginx 反向代理)
- 限制访问 IP
- 定期备份
data/目录
📂 数据持久化
重要:必须映射 data/ 目录,否则配置和模板会丢失!
目录内容:
config.yml- 配置文件templates/- 用户自定义模板uploads/- 上传的文件(临时)exports/- 导出的镜像
❓ 常见问题
Q: 构建失败怎么办?
查看构建日志,常见原因:
- Docker 服务未运行
- 文件格式不正确
- 模板配置有误
Q: 如何推送到私有仓库?
- 在 Docker 配置中添加仓库信息
- 设置该仓库为激活仓库
- 镜像名使用完整路径(如
registry.example.com/myapp) - 勾选"构建完成后推送镜像"
Q: Webhook 不触发怎么办?
- 检查 Webhook URL 是否正确
- 检查分支策略配置
- 查看后端日志确认是否收到请求
- 检查流水线是否已启用
📄 开源协议
MIT License - 详见 LICENSE
开始使用吧! 🐳



