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服务驾驶舱/
-由Create-React应用程序引导frontend/
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