Docker容器在运行时抛出错误

时间:2019-08-01 11:15:15

标签: node.js docker

我现在一直在学习docker,我制作了一个像这样的docker文件。

FROM node:10

# Create app directory
WORKDIR /app

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json /app/

RUN npm install
# If you are building your code for production
# RUN npm ci --only=production

# Bundle app source
ADD ./* /app/

EXPOSE 8080
CMD [ "npm", "start" ]

我的文件目录如下:

enter image description here

我的服务器在我的本地计算机上运行良好,但是,在使用docker容器运行时,抛出了错误。 错误是: enter image description here

有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

Dockerfile更新为以下内容并尝试:

FROM node:10

# Create app directory
WORKDIR /app/

# RUN apt-get update && apt-get install -y --no-install-recommends nano

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./

# RUN npm install
# If you are building your code for production
RUN npm install --only=production

COPY . .

CMD ["node", "server.js"]

EXPOSE 8080

设置WORKDIR to /app/时,当前目录将更新。因此,在复制过程中无需提及/app

答案 1 :(得分:1)

ADD ./* /app/与您可能认为的不一样。它根据Go的文件路径匹配(docs)匹配所有满足./*的文件,并将它们复制到/app/。有关详细信息,请参见this答案。

您应该做的是add . /app/add . .(这是等效的,因为您将工作目录更改为/app)。这样就可以将当前目录的内容准确地复制到容器文件系统中,并保持目录结构。