Docker 本地开发指南
使用 Docker 与 Docker Compose 在 localhost 运行 MySQL、Redis、PostgreSQL、Nginx 等,统一本地开发环境。
Docker 通过容器隔离依赖,是现代本地开发最常用的环境方案。数据库、缓存、反向代理均可映射到 localhost 端口,与宿主机上的 Node、PHP、Python 应用联调。
典型 localhost 映射
| 服务 | 容器内端口 | 宿主机访问 |
|---|---|---|
| MySQL | 3306 | localhost:3306(TCP) |
| PostgreSQL | 5432 | localhost:5432 |
| Redis | 6379 | localhost:6379 |
| Nginx | 80 | http://localhost:8080 |
| Node 应用 | 3000 | http://localhost:3000 |
映射格式 -p 宿主机端口:容器端口,例如 -p 8080:80 表示浏览器访问 http://localhost:8080 进入容器内 80 端口的 Nginx。
Docker Compose 示例
docker-compose.yml:
services:
db:
image: mysql:8
ports:
- '3306:3306'
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: app
redis:
image: redis:7
ports:
- '6379:6379'
web:
build: .
ports:
- '3000:3000'
depends_on:
- db
- redis启动:
docker compose up -d应用连接字符串使用 宿主机视角:数据库主机填 localhost(或 127.0.0.1),端口为映射后的端口。
与 XAMPP 对比
| 项 | Docker | XAMPP |
|---|---|---|
| 隔离 | 容器级,多项目互不干扰 | 全局安装,易版本冲突 |
| 启动 | docker compose up | 控制面板 Start |
| 适用 | 全栈、微服务、团队统一环境 | 快速 PHP/MySQL 入门 |
常用命令
docker ps # 运行中的容器
docker compose logs -f web # 查看日志
docker compose down # 停止并删除容器
docker exec -it <id> bash # 进入容器常见问题
端口已被占用
修改 ports 左侧宿主机端口,如 3307:3306;或停止本机已有的 MySQL/XAMPP 服务。
Mac/Windows 文件挂载慢
大量小文件项目可将 node_modules 放入 named volume,或使用 Dev Containers。
容器内访问宿主机
Linux 可用 host.docker.internal(Docker Desktop 亦支持)访问宿主机上运行的 API。
小结
Docker 将服务映射到 localhost 各端口,是替代「本机装一堆数据库」的现代方案;配合 Compose 可一键复现团队生产环境。