【发布时间】:2019-05-03 02:24:20
【问题描述】:
我正在使用 Docker Compose 作为全栈 Javascript 项目的本地开发环境。
我的 Docker Compose 文件的一部分看起来像这样
version: "3.5"
services:
frontend:
build:
context: ./frontend/
dockerfile: dev.Dockerfile
env_file:
- .env
ports:
- "${FRONTEND_PORT_NUMBER}:${FRONTEND_PORT_NUMBER}"
container_name: frontend
volumes:
- ./frontend:/code
- frontend_deps:/code/node_modules
- ../my-shared-module:/code/node_modules/my-shared-module
我正在尝试开发一个名为my-shared-module 的自定义Node 模块,这就是我将- ../my-shared-module:/code/node_modules/my-shared-module 添加到Docker Compose 文件的原因。节点模块托管在私有 Git 存储库中,并在 package.json 中定义如下
"dependencies": {
"my-shared-module": "http://gitlab+deploy-token....@gitlab.com/.....git",
我的问题是,
当我使用 npm install 在 docker 容器中运行更新我的节点模块时,它会将 my-shared-module 从我的私人 Git 存储库下载到 /code/node_modules/my-shared-module,这会覆盖主机 ../my-shared-module 中的文件,因为它们是同步的。
所以我的问题是,是否可以在 Docker 中进行单向卷同步?
- 当主机改变时,更新容器
- 当容器发生变化时,不更新主机?
【问题讨论】:
-
复制图片中的文件时,是否可以选择移除 package.json 中的依赖关系?该模块仍然存在,因为它已被映射,只是构建不会尝试获取它。
-
最后,我意识到这是无法修复的,我们决定转而使用 Git 子模块而不是 NPM 模块。谢谢
标签: node.js docker docker-compose