代码之家  ›  专栏  ›  技术社区  ›  Bartłomiej Gładys

docker容器中的空白node_模块

  •  0
  • Bartłomiej Gładys  · 技术社区  · 8 年前

    我有以下Dockerfile文件:

    FROM node:8.2.1
    RUN mkdir -p /app
    WORKDIR /app
    COPY package.json ./package.json
    RUN npm -q install
    COPY . /app
    RUN npm -q install nodemon babel-cli node-gyp create-react-app react-scripts babel-preset-es2015 -g
    
    EXPOSE 3000
    EXPOSE 3001
    CMD ["npm", "run", "startServer"]
    

    和docker撰写。yml:

    version: "2"
    services:
      web:
        build: .
        volumes:
          - ./:/app
        ports:
          ["3000:3000", "3001:3001"]
        links:
          [ mongo ]
      mongo:
        image: mongo
        ports:
          [ "27017:2701" ]
    

    当我进入我看到的web\u容器时,node\u modules文件夹是空白的。我曾尝试更改Dockerfile中命令的顺序,但没用。我还尝试直接在容器中运行“npm安装”,这是可行的,但我不想在每次构建后都这样做。任何帮助都将不胜感激。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Johannes Merz    8 年前

    我认为compose文件中的volume命令让您感到困惑。由于基本上是用宿主文件覆盖整个项目,dockerfiles中的命令没有任何效果,因为之后会装入卷并替换内容。

    试着在没有音量部分的情况下运行整个程序,你会看到它在工作。

    您仍然可以使用这些卷,但需要在主机上安装node_模块。

    推荐文章