我正在使用以下Dockerfile
为我的Node.js应用程序构建一个docker docker镜像:
FROM keymetrics/pm2:latest
RUN apk add --no-cache --update alpine-sdk python
# Bundle APP files
COPY package.json .
# Install app dependencies
ENV NPM_CONFIG_LOGLEVEL warn
RUN npm install
RUN npm rebuild bcrypt --build-from-source
COPY . .
# Show current folder structure in logs
RUN ls -al
EXPOSE 3000
VOLUME /app/uploads
CMD [ "pm2-docker", "start", "pm2.json" ]
问题是从此映像创建的docker容器中不存在node_modules
文件夹,因此应用程序遇到错误将无法运行。
我的node_modules
文件中有.dockerignore
,但由于我在构建过程(RUN npm install
)中安装了必要的软件包,因此不会导致问题。
答案 0 :(得分:0)
那么为什么不在构建时创建这个目录(即在Dockerfile
之前在RUN npm install
中添加以下行?)
RUN mkdir <workdir>/node_modules
(将<workdir>
替换为keymetrics/pm2
图片的实际默认工作目录)
答案 1 :(得分:0)
我会说这是目录问题。 您将要设置
ENV ROOT /usr/src/app
WORKDIR ${ROOT}
之前
# Bundle APP files
COPY package.json .
示例:
FROM node:8
ENV ROOT /usr/src/app
WORKDIR ${ROOT}
COPY package*.json ./
RUN yarn -i --quiet
# Bundle app source
COPY . .
ENV NODE_ENV development
CMD yarn run start:dev
EXPOSE 3000
答案 2 :(得分:0)