Docker compose:node_模块作为卷移动

Docker compose:node_模块作为卷移动,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我有一个具有以下服务的应用程序: 驾驶舱/-用作无头CMS服务 frontend/-由Create-React应用程序引导 我有一个关于frontend frontend/Dockerfile docker compose.yml 问题是/app/node_modules与/frontend/node_modules:/app/node_modules的含义相同 如果没有,区别是什么?/app/node\u modules在容器内创建一个目录,Docker引擎会自动为此创建一个匿名卷(即,该

我有一个具有以下服务的应用程序:

  • 驾驶舱/
    -用作无头CMS服务
  • frontend/
    -由Create-React应用程序引导
我有一个关于
frontend

frontend/Dockerfile
docker compose.yml

问题是
/app/node_modules
/frontend/node_modules:/app/node_modules
的含义相同


如果没有,区别是什么?

/app/node\u modules
在容器内创建一个目录,Docker引擎会自动为此创建一个匿名卷(即,该卷可能为空)。这是“简短语法”部分中关于编写文件规范的内容

/frontend/node_modules:/app/node_modules
创建一个。主机上的
/frontend/node_modules
目录将与容器共享


以下是关于为什么使用
/app/node_模块
有效,而其他语法无效的后续说明:


您的
warn install
命令在Docker映像内创建一个
node\u modules
文件夹。此创建的文件夹与尝试使用
/frontend/node\u模块:/app/node\u模块运行时本地拥有的现有
前端/node\u模块
文件夹冲突。指定
/app/node\u modules
时,容器将使用在生成步骤中创建的目录。

/app/node\u modules
工作正常,但
/frontend/node\u modules:/app/node\u modules
不工作。问题是什么?抱歉@WilliamWang从你的问题中我不明白一个有效,另一个无效。你能详细说明什么不起作用吗?docker compose服务是否无法启动?如果是,有哪些错误?1。我正在本地执行
docker compose up
,当我删除本地前端/节点_模块时,
/app/node_模块
起作用,但
/frontend/node_模块:/app/node_模块
不起作用。我正在使用节点sass,
/app/node_modules
可以正常工作,但是
/frontend/node_modules:/app/node_module
即使我在本地使用相同的节点版本,也会发生此错误。“Node Sass无法为您当前的环境找到绑定:Linux/musl 64位with Node.js 12.x”感谢您的澄清!您的
warn install
命令在Docker映像内创建一个
node\u modules
文件夹。此创建的文件夹与尝试使用
/frontend/node\u模块:/app/node\u模块运行时本地拥有的现有
前端/node\u模块
文件夹冲突。指定
/app/node_modules
时,容器将使用在生成步骤中创建的目录。
FROM node:12.16.3-alpine

RUN mkdir -p /app
WORKDIR /app

COPY package.json yarn.lock /app/

RUN yarn install --pure-lockfile
COPY . /app

CMD ["yarn", "run", "start"]
    frontend:
        ...
        volumes:
            - ./frontend:/app
            - /app/node_modules