我正在尝试创建一个Docker容器来充当我的应用程序的测试环境。我正在使用以下Dockerfile:
FROM node:14.4.0-alpine
WORKDIR /test
COPY package*.json ./
RUN npm install .
CMD [ "npm", "test" ]
如您所见,这非常简单。我只想安装所有依赖项,但不复制代码,因为我将使用以下命令运行该容器:docker run -v `pwd`:/test -t <image-name>
但是问题是当我使用node_modules
挂载卷时,-v
目录被删除了。任何解决此问题的方法? 最佳答案
当您将装载测试目录与$ PWD绑定(bind)时,您的容器测试目录将被$ PWD覆盖/装载。因此,您将不再将node_modules放入测试目录。
要解决此问题,您可以使用两个选项。
npm install
,并将代码安装在测试目录中,并像export NODE_PATH=/node/node_modules
一样导出node_path env那么Dockerfile就像:
FROM node:14.4.0-alpine
WORKDIR /node
COPY package*.json ./
RUN npm install .
WORKDIR /test
CMD [ "npm", "test" ]
FROM node:14.4.0-alpine
WORKDIR /node
COPY package*.json ./
RUN npm install .
WORKDIR /test
COPY Entrypoint.sh ./
ENTRYPOINT ["Entrypoint.sh"]
而Entrypoint.sh就像#!/bin/bash
cp -r /node/node_modules /test/.
npm test
关于docker - 如何避免node_modules文件夹被删除,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64525907/