我的文件夹结构如下:
project/
-backend/
Dockerfile
package.json
- docker-compose.yml
我的Dockerfile长这样
FROM node:14-alpine as base
WORKDIR /src
COPY ./package*.json /src
EXPOSE 3000
FROM base as dev
ENV NODE_ENV=development
RUN npm install -g nodemon && npm install
COPY . /
CMD ["npm run start:dev"]
仅仅是一个简单的Dockerfile,没有什么复杂的东西。
我的Docker Compose文件如下:
version: '3'
services:
web:
build:
context: ./backend
target: dev
volumes:
- .:/src
command: npm run start:dev
ports:
- "3000:3000"
environment:
NODE_ENV: development
DEBUG: nodejs-docker-express:*
当我运行docker-compose up时,会出现一个错误提示。
web_1 | npm ERR! code ENOENT
web_1 | npm ERR! syscall open
web_1 | npm ERR! path /src/package.json
web_1 | npm ERR! errno -2
web_1 | npm ERR! enoent ENOENT: no such file or directory, open '/src/package.json'
web_1 | npm ERR! enoent This is related to npm not being able to find a file.
web_1 | npm ERR! enoent
web_1 |
web_1 | npm ERR! A complete log of this run can be found in:
web_1 | npm ERR! /root/.npm/_logs/2021-05-22T20_54_52_629Z-debug.log
这意味着package.json没有被复制,我知道。 但我不知道如何修复它。 我认为错误在dockerfile中,但我无法解决。
有人能告诉我我做错了什么吗?
volumes:
指令会用主机系统中的内容替换Dockerfile构建到映像中的所有内容,包括package.json
文件。删除volumes:
块能改善情况吗?您是在构建映像时遇到错误的吗(仅使用docker-compose build
工作)还是在运行时遇到错误的? - David Mazedocker compose up
时,出现了错误。 - Andresvolumes: - ./backend:/src
然后它就可以工作了。 谢谢。 - Andres