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

时间:2017-06-28 20:22:33

标签: node.js docker docker-compose rsync

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

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

Dockerfile:

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

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

搬运工-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,但没有帮助

1 个答案:

答案 0 :(得分:0)

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

<强>搬运工-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/