使用 docker-sync 时合并容器文件

Merge container files when using docker-sync

我正在使用 docker-sync 来加速我的 node.js 应用程序上的开发环境文件更新。

现在我正在尝试通过将 package.json 移动到图像并在创建图像时 运行 npm install 来缓存 npm install 命令。

Dockerfile:

ADD ./package.json /app/user/
RUN npm install

然后我对 docker-sync 使用以下配置:

docker-sync.yml

version: "2"
options:
  verbose: true
syncs:
  appcode-rsync-sync:
    src: './'
    sync_host_ip: 'auto'
    sync_host_port: 10872
    sync_strategy: 'rsync'
    sync_excludes: [ 'public/lib/', 'public/dist/', 'node_modules/']

这里是 docker-compose.yml:

services:
  web:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - appcode-rsync-sync:/app/user:nocopy
    command: grunt

volumes:
  appcode-rsync-sync:
    external: true

问题是 npm installnode_modulespublic_libpublic_dist 目录中安装了所有必需的包,但是在安装 docker-sync 卷之后它将从容器中删除所有这些目录(即使它们在 sync_excludes.)

我有任何选项或解决方法来防止 docker-sync 删除容器上的文件吗?

-我已经尝试删除 nocopy 但没有帮助

使用 我修改了 docker-compose.yml 来解决问题。

docker-compose.yml:

services:
  web:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - /app/user/public/lib/
      - /app/user/public/dist/
      - /app/user/node_modules/
      - appcode-rsync-sync:/app/user:nocopy
    command: grunt

volumes:
  appcode-rsync-sync:
    external: true

如您所见,我添加了以下卷:

- /app/user/public/lib/
- /app/user/public/dist/
- /app/user/node_modules/