Node.js 如何在没有Docker compose的情况下将节点_模块安装到Docker映像中并在以后使用?

Node.js 如何在没有Docker compose的情况下将节点_模块安装到Docker映像中并在以后使用?,node.js,docker,dockerfile,node-modules,Node.js,Docker,Dockerfile,Node Modules,如何创建预装了node\u模块的docker映像,而没有docker compose 我知道这是可能的(请参阅“安装依赖项”),但仅使用直接Docker是否可能 以下是我(在CI上)努力实现的大致目标: 获得新的提交 当前分支是否有Docker映像?(从DockerHub中提取标签) 是=>自从上一个映像生成以来,package.json是否有更改? 是=>重建映像(执行npm i);使用新标签将其推送到DockerHub 否=>从DockerHub中提取最后生成的映像并使用该映像 否=>

如何创建预装了
node\u模块的docker映像,而没有
docker compose

我知道这是可能的(请参阅“安装依赖项”),但仅使用直接Docker是否可能

以下是我(在CI上)努力实现的大致目标:

  • 获得新的提交
  • 当前分支是否有Docker映像?(从DockerHub中提取标签)
    • 是=>自从上一个映像生成以来,
      package.json
      是否有更改?
      • 是=>重建映像(执行npm i
  • );使用新标签将其推送到DockerHub
  • 否=>从DockerHub中提取最后生成的映像并使用该映像
  • 否=>从DockerHub中提取上次生成的
    master
    映像并使用该映像
  • 将当前源代码从提交装载到映像(新建或拉取)
  • 不必执行npm安装(因为已经完成了)即可执行测试/挂线/任何操作
  • 我已经设置了我的CI来完成所有这些,但是构建/拉取的映像在运行测试/linting/任何东西时,在工作目录中没有
    node\u modules
    。这就是我需要弄清楚的


    这是迄今为止我的
    Dockerfile

    FROM node:8.1.2-alpine
    
    RUN apk --update add --no-cache git
    ADD git-branch /tmp/git-branch
    RUN (cd /tmp/git-branch && npm install --silent --progress=false)
    RUN mkdir -p /var/app && mv /tmp/git-branch/node_modules /var/app
    RUN rm -rf /tmp/git-branch
    

    卷用于将文件/文件夹链接到本地文件系统,为什么不使用“复制”并发布docker映像以在另一个文件系统中使用它?因为当我在“另一个文件系统”中使用它时,当我添加包含源代码的目录时,
    node\u modules
    将消失。看,这个问题令人困惑。最终目标是什么?要始终使用图像中的
    node\u模块
    ,而从不使用已装入的应用程序文件夹?@AndyShinn我编辑了我的问题,希望能让问题更清楚。基本上是的,工作目录中的
    节点\u模块
    应该始终来自容器,而不是来自主机。