为什么docker build需要这么长时间才能运行?

时间:2016-05-22 12:07:52

标签: docker dockerfile

我正在运行docker build并且运行时间非常长。事实上,它没有完成,我必须按CTRL + C退出。

昨晚事情进展顺利。当我回到计算机并试图重建它时开始表现得很奇怪。

这是我的命令:

docker build -t mywebsite/backend .

当我跑步时,我注意到了这一点:

Sending build context to Docker daemon 213.8 MB
Step 1 : FROM ubuntu:14.04

我不知道为什么文件大小为213.8。唯一一个较大的目录是node_modules,其中包含.dockerignore,因此它不应该触及该目录。

在那之后我遇到了一个错误,所以我修复了它并重新:

docker build -t mywebsite/backend .

这次它只是挂了。并继续这样做。

这是我的Dockerfile

FROM ubuntu:14.04

# Set env. variables
ENV DEBIAN_FRONTEND noninteractive

# Application
ENV APP_PORT 3000

# Amazon
ENV AMAZON_BUCKET mybucket
ENV AMAZON_ACCESS_KEY_ID mykey
ENV AMAZON_SECRET_ACCESS_KEY mytoken

# Set working directory
WORKDIR ~/vms

# Install NodeJS
RUN apt-get update; apt-get install -y curl;
RUN curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
RUN apt-get install -y nodejs

# Install node dependencies
ADD package.json package.json
RUN npm install --production

# Copy files to the container
ADD src src

EXPOSE 3000

# Start application
RUN npm start

运行命令时我所在的目录是包含Dockerfile的目录:

- backend
  - node_modules
  - src
    - config
    - routes
    - views
    index.js
  Dockerfile
  package.json

我在Ubuntu 14.04上运行docker

2 个答案:

答案 0 :(得分:8)

  

我不知道为什么文件大小为213.8。唯一的目录是node_modules,它包含.dockerignore,因此它不应该触及该目录。

那不是.dockerignore的工作方式。 .dockerignore文件应与Dockerfile位于同一目录中,并列出要忽略的模式。在名为backend的{​​{1}}中创建一个文件,其中只包含.dockerignore行。

有关详细信息,请参阅此处:https://docs.docker.com/engine/reference/builder/#dockerignore-file

答案 1 :(得分:0)

@sulogonamission说的很完美。

  1. 在Dockerfile所在的目录中创建一个名称为.dockerignore的文件
  2. 将以下文本添加到文件/node_modules(或node_modules目录的确切路径)
  3. 保存文件并再次运行docker build。