如何在 docker-compose 上挂载卷但保留映像中的现有子文件夹?

gfp*_*eco 7 docker-compose

我有一个节点项目,并且我的 docker 映像已经安装了依赖项。

我想使用我的项目文件夹运行 docker-compose ,以便与容器的文件夹同步,这样我就可以编辑本地文件,并且它们应该在容器内更改。

但我想保留图像文件夹内的所有内容node_modules

我知道这个问题告诉我如何在安装卷时忽略子文件夹,但这会删除已安装的依赖项。

有没有办法挂载我的项目的文件夹但保留容器的子node_modules文件夹?

小智 -1

尝试这个

Dockerfile

...
RUN mkdir -p /app/node_modules
VOLUMES /app/node_modules
VOLUMES /app
EXPOSE XX
...
Run Code Online (Sandbox Code Playgroud)

项目结构

project/
|--node_modules/
|----...
|--docker_node_modules/
|----...
|--docker-compose.yml
|--...
Run Code Online (Sandbox Code Playgroud)

Docker运行命令

docker run --it --rm \
    -p xx:xx \
    -v /host/path/project/docker_node_modules:/app/node_modules \
    -v /host/path/project:/app \
    nodeImageExample \
    commandToStartYourNodeApp
Run Code Online (Sandbox Code Playgroud)
  1. 运行时从您的主机npm install,它将安装在./node_modules (host)

  2. 运行时从容器中npm install (container),它将安装在/app/node_modules (container)./docker_node_modules/ (host)

通过这样做,您可以保存容器中的包,而不会影响您的node_modules