我是Docker的新手。我有一个项目设置如下:
app/
dist/
node_modules/
package.json
Dockerfile
docker-compose.yml
.dockerignore
Run Code Online (Sandbox Code Playgroud)
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)
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)
# 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。
问题是您在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
| 归档时间: |
|
| 查看次数: |
250 次 |
| 最近记录: |