修改代码后如何同步Docker Volume变更,无需重新构建镜像?
解决方案
1. 修复挂载路径拼写错误
你运行容器时的挂载路径写成了/dasboard,但Dockerfile里的工作目录是/dashboard,这是导致挂载失效的核心原因——路径不匹配,本地代码根本没覆盖容器里的目标代码目录。
修改后的运行命令:
docker run --name cliente -v "C:\Users\DELL AL\OneDrive\Escritorio\Tareas_Arquitectura\cliente_ETL":/dashboard -p 0.0.0.0:5000:5000 --link dgraph:dgraph cliente
2. 优化Dockerfile(可选,进一步提升开发效率)
当前Dockerfile把代码ADD进镜像,开发阶段其实不需要这一步(挂载卷会覆盖目录内容),调整后可以利用Docker缓存减少重复构建时间:
# python版本 FROM python:3.8-alpine # 设置工作目录 WORKDIR /dashboard # 先安装系统依赖和Python依赖(依赖不变时会复用缓存) RUN apk --no-cache add musl-dev linux-headers g++ COPY requirements.txt . RUN pip install -r requirements.txt # 启动命令(代码由挂载卷提供) CMD ["python", "main.py"]
这样只有当requirements.txt变化时,才会重新执行依赖安装步骤,大幅节省构建耗时。
3. 确保代码变更实时生效
- 挂载路径修正后,本地修改代码会自动同步到容器的
/dashboard目录 - 如果你的Web框架(比如Flask)没有开启自动重载,需要手动开启debug模式:
- 方式一:通过环境变量启动
docker run --name cliente -e FLASK_DEBUG=1 -v "C:\Users\DELL AL\OneDrive\Escritorio\Tareas_Arquitectura\cliente_ETL":/dashboard -p 0.0.0.0:5000:5000 --link dgraph:dgraph cliente - 方式二:在代码中设置
if __name__ == '__main__': app.run(debug=True, host='0.0.0.0')
- 方式一:通过环境变量启动
内容的提问来源于stack exchange,提问作者Roberto Pacheco
相关产品推荐
相关产品推荐

