创建Docker自己的node_modules

Mr_*_*een 5 docker devops

我是Docker的新手。我有一个项目设置如下:

app/
dist/
node_modules/       
package.json
Dockerfile           
docker-compose.yml  
.dockerignore        
Run Code Online (Sandbox Code Playgroud)

Docker文件

FROM node:10.16.2

WORKDIR /app

RUN sed -i '/jessie-updates/d' /etc/apt/sources.list

RUN apt-get update
RUN rm -rf /var/lib/apt/lists/*
RUN npm install --quiet
RUN npm install -g gulp

EXPOSE 3000
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml

version: '2'

services:
  web:
    build: .
    command: gulp
    ports:
      - "3000:3000"
    volumes:
      - .:/app
  package:
    build: .
    command: ./package.sh
    volumes:
      - ./package:/app/package
Run Code Online (Sandbox Code Playgroud)

.dockerignore

# add git-ignore syntax here of things you don't want copied into docker image

.git
*Dockerfile*
*docker-compose*
package-lock.json
node_modules/
Run Code Online (Sandbox Code Playgroud)

当我运行时docker-compose build --no-cache web && docker-compose up web,它实际上不是在创建它自己的,node_modules而是使用本地系统的。我node_modules在运行docker时需要docker自己的。请帮忙。

我确实知道,我正在将所有文件从本地复制到docker安装程序,但我想排除node_modules,并使其安装自己的node_modules。

ale*_*orf 0

问题是您在docker-compose.yml. 然而,这个问题已经解决了同样的问题。

node_modules您可以通过执行以下操作手动覆盖卷中的:

volumes:
    - '.:/app'
    - /app/node_modules/
Run Code Online (Sandbox Code Playgroud)

这样,node_modules 应该是空的。

编辑:

这种方法似乎不再起作用了。相反,在您的计算机上创建一个空文件夹,例如empty.d并挂载此目录:

volumes:
    - '.:/app'
    - 'empty.d/:/app/node_modules/'
Run Code Online (Sandbox Code Playgroud)

但是,由于您的容器名称是build,也许您应该考虑删除卷COPY或.ADDDockerfile