使用 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 install
在 node_modules
、public_lib
、public_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/
我正在使用 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 install
在 node_modules
、public_lib
、public_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/