Split chapter 20

This commit is contained in:
Baohua Yang
2026-02-22 15:33:20 -08:00
parent 24d26c0797
commit 4ca47b0ea1
30 changed files with 365 additions and 325 deletions

53
21_case_devops/ide.md Normal file
View File

@@ -0,0 +1,53 @@
# 21.5 IDE 中使用 Docker
使用 IDE 进行开发往往要求本地安装好工具链一些 IDE 支持 Docker 容器中的工具链这样充分利用了 Docker 的优点而无需在本地安装
本节关注一个核心目标**开发依赖放进容器源码编辑体验留在本地 IDE**
## 21.5.1 适用场景
* 团队希望统一开发环境Go/Node/Python 版本系统依赖编译链
* 本地系统不方便安装依赖例如 Windows公司管控环境
* 项目依赖较重例如需要 `gcc`数据库客户端特定系统库
不太适合的场景强依赖本机 GPU/USB 设备或需要非常低延迟文件 IO 的工程此时可能需要额外调优挂载/同步策略
## 21.5.2 最小可用模式docker compose + 开发容器
下面用一个长期运行的开发容器作为例子 Go 为例你可以替换为 Node/Python
1. 在项目中创建 `compose.yaml`或复用你已有的 compose 文件
```yaml
services:
dev:
image: golang:1.22
working_dir: /work
volumes:
- ./:/work
command: sleep infinity
```
1. 启动开发容器
```bash
docker compose up -d
```
1. 进入容器安装依赖/执行命令
```bash
docker compose exec dev bash
go version
go test ./...
```
这个模式的优点是简单直接IDE 无关缺点是 IDE 需要额外配置
例如配置远程解释器/语言服务或使用 VS Code Dev Containers
## 21.5.3 目录挂载与权限建议
* Linux 下如果遇到容器内写文件权限问题优先确保容器内用户与宿主机 UID/GID 对齐
VS Code Dev Containers 支持自动处理手写 Dockerfile/compose 时也可以显式设置用户
* 如果遇到文件变更监听不生效常见于 macOS/Windows 的虚拟化文件系统
优先使用语言/工具支持的轮询模式或提高 watcher 限制