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

标签 node.js docker docker-compose rsync

我正在使用 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 但没有帮助

最佳答案

使用this answer我修改了 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/

关于node.js - 使用 docker-sync 时合并容器文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44811901/

相关文章:

node.js - npm install 未获取软件包的最新次要版本

json - 在Node.js中从 Elasticsearch 获取对象

docker - 在多阶段构建的 docker 容器中使用 golang

mongodb - Windows Docker mongo 容器不适用于卷安装

php - docker-compose使用旧卷

主机重启后未挂载 Docker 卷

javascript - 我在 forEach 中更新的变量返回到它们的原始值

javascript - 在 javascript 中使用 Public 关键字时出现意外标记

sql-server - 通过名称从另一个容器连接到SQL Server容器

springboot中docker连接Mongodb报错