gpt4 book ai didi

node.js - Docker - 覆盖链接卷的内容

转载 作者:太空宇宙 更新时间:2023-11-03 21:56:14 28 4
gpt4 key购买 nike

拥有简单的 Node.js docker 容器

docker-compose.yml:

app:
build: ./dockerfiles/app
volumes:
- /Users/home/work/app:/usr/app

Dockerfile:

FROM node:6.7-slim

COPY package.json /tmp
RUN cd /tmp && npm install

RUN mkdir -p /usr/app
WORKDIR /usr/app

CMD ["node", "./src/app.js"]

我想要实现的是容器,其中有 package.json 并安装了 Node 模块(npm install)。我复制 package.json 并在容器内安装模块的部分非常简单,但是当我想在链接的应用程序内使用这些 node_modules 时,就会出现问题。我找不到任何方法,如何将/tmp/node_modules 复制到/usr/app/node_modules

有什么 Docker 方法可以做到这一点吗?如果没有,我可以告诉我的 Node 应用程序在根目录之外的其他位置查找node_modules吗?

最佳答案

您可以通过在 Dockerfile 或 docker-compose.yml 文件中更改启动容器时使用的 CMD 来实现您想要的效果。

您想要做两件事,而不是仅仅启动 node ./src/app.js:

  1. 复制node_modules
  2. 启动 Node

使用docker-compose.yml,我会执行以下操作:

app:
build: ./dockerfiles/app
volumes:
- /Users/home/work/app:/usr/app
command: >
bash -c "

rm -rf /usr/app/node_modules
&& cp -R /tmp/node_modules /usr/app/node_modules
&& node ./src/app.js
"

这将删除映射卷上的现有 Node 模块,然后从容器中复制这些模块,最后启动 Node 应用程序。每次容器启动时都会发生这种情况。

关于node.js - Docker - 覆盖链接卷的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39958655/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com