v1.1.0: Alpine 轻量级 Docker 开发环境 + 敏感凭证清理
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
# WorkPod - 容器化开发环境
|
||||
|
||||
> 基于 Alpine 3.23 的轻量级开发容器,支持多项目隔离部署。
|
||||
|
||||
## 是什么
|
||||
|
||||
WorkPod 是一套 **Docker 容器化的全栈开发环境**,每个项目运行在独立容器中,通过 Web 终端(ttyd)或 SSH 访问。
|
||||
|
||||
## 核心特性
|
||||
|
||||
| 特性 | 说明 |
|
||||
|------|------|
|
||||
| 轻量镜像 | ~436MB(Alpine 多阶段构建) |
|
||||
| 开箱即用 | Node.js 24 + Claude Code + ttyd + tmux |
|
||||
| 工具外挂 | Rust/Go/Python 安装到 /root,自动检测 PATH |
|
||||
| 项目隔离 | 每个项目独立容器、独立端口、独立网络 |
|
||||
| 会话管理 | tmux session 支持 URL 参数 / 交互菜单 |
|
||||
|
||||
## 快速开始
|
||||
|
||||
```bash
|
||||
# 1. 构建基础镜像
|
||||
docker compose -f instances/base/docker-compose.yml build
|
||||
|
||||
# 2. 启动基础实例
|
||||
docker compose -f instances/base/docker-compose.yml up -d
|
||||
|
||||
# 3. 打开 Web 终端
|
||||
# http://localhost:7681 (用户: jc, 密码: 1234567)
|
||||
|
||||
# 或 SSH 连接
|
||||
# ssh root@localhost -p 2222 (密码: workpod123)
|
||||
```
|
||||
|
||||
## 目录结构
|
||||
|
||||
```
|
||||
workpod/
|
||||
├── Dockerfile # 基础镜像构建
|
||||
├── entrypoint.sh # 统一入口脚本
|
||||
├── ttyd-session.sh # tmux 会话管理
|
||||
├── instances/ # ★ 实例配置(每个项目一个目录)
|
||||
│ ├── registry.yaml # 全局实例注册表
|
||||
│ ├── base/ # 基础实例
|
||||
│ ├── flux/ # Flux 项目实例
|
||||
│ └── .template/ # 新建实例模板
|
||||
├── docs/ # 文档体系
|
||||
└── data/ # 运行时数据
|
||||
```
|
||||
|
||||
## 文档索引
|
||||
|
||||
| 文档 | 位置 | 说明 |
|
||||
|------|------|------|
|
||||
| 实例管理指南 | `instances/README.md` | 端口规则、新建流程 |
|
||||
| 实例注册表 | `instances/registry.yaml` | 所有实例的端口/状态 |
|
||||
| 端口分配规则 | `docs/00-规范/端口分配规则.md` | 详细端口规划 |
|
||||
| 实例创建流程 | `docs/00-规范/实例创建流程.md` | 步骤教程 |
|
||||
| 架构设计 | `docs/01-架构/` | C4 图 + 组件关系 |
|
||||
| 问题记录 | `docs/02-技术文档/ISSUES.md` | 历史问题与解决方案 |
|
||||
| 部署指南 | `docs/03-运维/` | 本机 + 测试服部署 |
|
||||
| 测试服实例 | `docs/03-运维/测试服实例.md` | 远程实例配置 |
|
||||
| 审核报告 | `docs/04-审核/` | 安全/架构/Docker/Shell 审核 |
|
||||
|
||||
## 相关链接
|
||||
|
||||
- 基础镜像:`workpod-alpine:latest`(基于 alpine:3.23)
|
||||
- AI 工具:Claude Code (@anthropic-ai/claude-code)
|
||||
- Web 终端:ttyd (Alpine apk)
|
||||
- 会话管理:tmux + ttyd-session.sh
|
||||
@@ -0,0 +1,118 @@
|
||||
# 实例创建流程
|
||||
|
||||
> 为新项目创建 WorkPod 开发容器的标准步骤。
|
||||
|
||||
---
|
||||
|
||||
## 前置条件
|
||||
|
||||
- Docker 已安装并运行
|
||||
- 基础镜像已构建:`docker images \| grep workpod-alpine`
|
||||
|
||||
---
|
||||
|
||||
## 标准流程(3 步)
|
||||
|
||||
### Step 1: 创建实例目录
|
||||
|
||||
```bash
|
||||
cd E:/wk-lab/workpod
|
||||
mkdir -p instances/{name}
|
||||
cp instances/.template/docker-compose.yml instances/{name}/
|
||||
```
|
||||
|
||||
### Step 2: 编辑 compose 文件
|
||||
|
||||
打开 `instances/{name}/docker-compose.yml`,修改占位符:
|
||||
|
||||
| 占位符 | 改为 | 示例 |
|
||||
|--------|------|------|
|
||||
| `{name}` | 实例名 | `suke` |
|
||||
| `{SSH_PORT}` | SSH 端口 | `2211` |
|
||||
| `{WEB_PORT}` | Web 端口 | `7711` |
|
||||
| `{PROJECT_PATH}` | 项目路径 | `E:/wk-suke` |
|
||||
|
||||
按需取消注释:
|
||||
- **Java 项目** → 取消注释 JDK/Maven volume 和 JAVA_HOME/MAVEN_HOME env
|
||||
- **home 持久化** → 确保 `../../data/home/{name}:/root` 已配置
|
||||
|
||||
### Step 3: 注册并启动
|
||||
|
||||
编辑 `instances/registry.yaml`,在 `local:` 下添加新条目:
|
||||
|
||||
```yaml
|
||||
- name: ws-{name}-dev
|
||||
display: {中文名}
|
||||
type: project
|
||||
project: {name}
|
||||
project_path: E:/wk-{name}
|
||||
image: ws-{name}-dev:latest
|
||||
ssh_port: {SSH_PORT}
|
||||
web_port: {WEB_PORT}
|
||||
network: workpod-{name}-network
|
||||
status: starting
|
||||
compose: instances/{name}/docker-compose.yml
|
||||
```
|
||||
|
||||
启动:
|
||||
|
||||
```bash
|
||||
cd instances/{name} && docker compose up -d --build
|
||||
```
|
||||
|
||||
验证:
|
||||
|
||||
```bash
|
||||
docker ps --filter name=ws-{name}
|
||||
# 应看到端口映射正确
|
||||
```
|
||||
|
||||
更新状态:`registry.yaml` 中 `status: starting` → `running`
|
||||
|
||||
---
|
||||
|
||||
## 可选:自定义镜像
|
||||
|
||||
如果项目需要额外工具(如 JDK),创建 `instances/{name}/Dockerfile`:
|
||||
|
||||
```dockerfile
|
||||
FROM workpod-alpine:latest
|
||||
|
||||
LABEL org.opencontainers.image.title="ws-{name}-dev" \
|
||||
org.opencontainers.image.description="{描述}"
|
||||
|
||||
EXPOSE 22 7681
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
```
|
||||
|
||||
compose 中添加 build 配置:
|
||||
|
||||
```yaml
|
||||
build:
|
||||
context: ../../
|
||||
dockerfile: instances/{name}/Dockerfile
|
||||
image: ws-{name}-dev:latest
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 完整示例:创建 suke 实例
|
||||
|
||||
```bash
|
||||
# 1. 创建目录 + 复制模板
|
||||
mkdir -p instances/suke
|
||||
cp instances/.template/docker-compose.yml instances/suke/
|
||||
|
||||
# 2. 替换占位符(手动或 sed)
|
||||
# {name} → suke, {SSH_PORT} → 2211, {WEB_PORT} → 7711, {PROJECT_PATH} → E:/wk-suke
|
||||
|
||||
# 3. 注册到 registry.yaml(添加 local 条目)
|
||||
|
||||
# 4. 启动
|
||||
cd instances/suke && docker compose up -d --build
|
||||
|
||||
# 5. 验证
|
||||
docker ps --filter name=ws-suke
|
||||
# curl -s http://localhost:7711 | head -5 # ttyd 可访问
|
||||
```
|
||||
@@ -0,0 +1,61 @@
|
||||
# 端口分配规则
|
||||
|
||||
> 最后更新:2026-04-07
|
||||
|
||||
---
|
||||
|
||||
## 规则总览
|
||||
|
||||
### 本机端口
|
||||
|
||||
```
|
||||
SSH: 22xx (容器内统一为 22)
|
||||
Web: 77xx (容器内统一为 7681)
|
||||
```
|
||||
|
||||
| 类型 | SSH 前缀 | Web 前缀 | 范围 | 示例 |
|
||||
|------|---------|---------|------|------|
|
||||
| 基础/通用 | 220-221 | 768-769 | 2201-2210 / 7681-7690 | base=2222/7681 |
|
||||
| **项目开发** | **221-229** | **770-779** | **2211-2290 / 7701-7790** | flux=2201/7701 |
|
||||
|
||||
### 测试服端口 (flux_dev @ 39.99.243.191)
|
||||
|
||||
复用本机规则,Web 端口做偏移避免冲突:
|
||||
|
||||
| 实例 | SSH | Web | 域名 |
|
||||
|------|-----|-----|------|
|
||||
| workpod-1 | 2221 | 7681 | wk.1216.top |
|
||||
| workpod-alpine | 2222 | 7683 | wk2.1216.top |
|
||||
| workpod-ada | 2224 | 7685 | ada.1216.top |
|
||||
| workpod-yxl | 2226 | 7686 | yxl.1216.top |
|
||||
|
||||
---
|
||||
|
||||
## 已分配端口表
|
||||
|
||||
### 本机
|
||||
|
||||
| # | 实例 | SSH | Web | 网络 | 状态 |
|
||||
|---|------|-----|-----|------|------|
|
||||
| 1 | workpod-alpine (base) | 2222 | 7681 | workpod-alpine-network | running |
|
||||
| 2 | workpod-test | 2223 | 7682 | workpod-test-network | running |
|
||||
| 3 | ws-flux-dev | 2201 | 7701 | workpod-flux-network | running |
|
||||
|
||||
### 预留
|
||||
|
||||
| # | 项目 | SSH | Web | 技术栈 |
|
||||
|---|------|-----|-----|--------|
|
||||
| 4 | suke | 2211 | 7711 | Java + Flutter |
|
||||
| 5 | case | 2212 | 7712 | Java + Vue |
|
||||
| 6 | hszd | 2213 | 7713 | Vue |
|
||||
| 7 | pm | 2214 | 7714 | 待确认 |
|
||||
| 8 | me | 2215 | 7715 | 待确认 |
|
||||
|
||||
---
|
||||
|
||||
## 分配原则
|
||||
|
||||
1. **项目实例从 2211 开始** — 2201-2210 保留给 base/test 等通用实例
|
||||
2. **SSH 和 Web 同编号** — flux 用 2201/7701,suke 用 2211/7711,便于记忆
|
||||
3. **测试服 Web 偏移** — 同一实例测试服 Web = 本机 Web + 偏移值(通常 +2)
|
||||
4. **注册后再占用** — 新增前先查 registry.yaml 和 `netstat -ano \| grep :22xx`
|
||||
Reference in New Issue
Block a user