如何将本地工作目录变更持续同步复制到Docker容器中
你需要的实时同步功能可以通过Docker的**绑定挂载(Bind Mount)**实现,不需要额外的同步命令,本地目录的所有变更会实时反映到容器内的对应目录。
你目前的Dockerfile是在镜像构建阶段就将Odoo源码克隆到了容器的/odoo目录,这部分文件是固化在镜像里的,本地修改不会同步到运行的容器中,只需要修改docker-compose配置添加挂载规则即可实现需求。
修改后的docker-compose配置示例
在你的odoo服务下新增volumes段即可:
version: '3.3' services: app: &app build: context: . dockerfile: ./docker/app/Dockerfile container_name: app tty: true db: image: postgres:9.2.18 environment: - POSTGRES_DB=test ports: - 5432:5432 volumes: - ./docker/db/pg-data:/var/lib/postgresql/data odoo: <<: *app command: python odoo.py -w odoo -r odoo ports: - '8069:8069' depends_on: - db # 新增挂载规则实现实时同步 volumes: # 冒号前为本地要同步的工作目录相对路径,可根据实际情况修改 # 冒号后为容器内对应的目录路径,你当前的代码存放在/odoo下所以写/odoo - ./odoo:/odoo
注意事项
- 挂载操作会用本地目录的内容覆盖容器内对应路径的原有内容,你可以先启动一次临时容器,执行
docker cp 容器ID:/odoo ./odoo把镜像内已经克隆好的代码复制到本地,避免运行时报错 - 绑定挂载默认是双向同步,你在容器内对
/odoo目录的修改也会同步到本地,开发时注意操作范围 - 生产环境不要使用绑定挂载同步代码,应该将代码构建到镜像内
- 如果需要同步多个目录,在
volumes下新增多行规则即可
内容的提问来源于stack exchange,提问作者user655941
相关产品推荐
相关产品推荐

