Files
docker_practice/21_case_devops/21.5_ide.md
2026-02-22 16:04:41 -08:00

54 lines
2.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 限制