Docker实现开发环境一键搭建的核心是将环境配置代码化,即通过Dockerfile定义单服务镜像、docker-compose.yml编排多服务(如Python Web+MySQL+Redis),配合bind mount实现热更新,并通过.dockerignore、端口检查、数据卷挂载等规避常见陷阱。

用 Docker 实现开发环境一键搭建,核心是把环境配置“代码化”——写进 Dockerfile 和 docker-compose.yml,再靠几条命令启动,无需手动装依赖、配路径、调端口。关键不在命令多,而在结构清晰、可复用、不踩坑。
一、从一个最小可用的 Python 环境开始
适合数据分析、API 开发等场景。不用装 Python、pip、numpy、Flask……全由容器包好。
- 新建项目目录,放入 requirements.txt(比如写上
flask==2.3.3) - 创建 Dockerfile:
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "app.py"]
- 写个简单
app.py测试用,然后执行:
docker run -p 5000:5000 my-py-env
服务就跑起来了,本地 http://localhost:5000 即可访问。
二、加个数据库,用 docker-compose 统一管理
单容器只够练手,真实开发常要 MySQL + Redis + 后端一起启。这时 docker-compose.yml 就是“一键开关”。
- 在同一目录下新建 docker-compose.yml:
services:
web:
build: .
ports: ["5000:5000"]
volumes: ["./app:/app"]
depends_on: [db]
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: dev123
volumes:
- ./mysql-data:/var/lib/mysql
- 运行:
docker-compose up -d,两个服务同时后台启动 - 停用:
docker-compose down,干净收尾,不留残留
三、让代码修改实时生效(开发态必备)
改一行代码不希望每次 rebuild 镜像。用 bind mount 把本地代码目录挂进容器,实现热更新。
- 在
docker run中加:-v $(pwd)/src:/app/src - 或在
docker-compose.yml的web服务里加:
- ./src:/app/src
- ./config:/app/config
这样你本地编辑 src/main.py,容器内立刻可见,配合 Flask 的 --reload 或 nodemon,体验接近本地直跑。
四、避免常见陷阱的实用建议
-
加 .dockerignore:排除
__pycache__、.git、venv等,加快构建、减小镜像体积 -
端口别冲突:启动前用
docker ps看是否已有容器占了 5000、3306 等端口 -
数据要持久化:MySQL 的
/var/lib/mysql、Redis 的/data必须用 volume 或 bind mount 挂载,否则容器删了数据就没了 -
Windows/macOS 用户注意:Docker Desktop 默认开启 WSL2 或 HyperKit,确保已启用,且文件挂载路径用正斜杠(
./src而非.\src)


















