Почему docker build так долго работает?

я запускаю docker build, и для запуска требуется ужасно много времени. Infact, он не завершен, и мне нужно 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

я запускаю docker на Ubuntu 14.04

2 ответов


Я понятия не имею, почему размер файла был 213.8. Единственный большой каталог-node_modules, который содержит .dockerignore поэтому ее не следует трогать каталога.

не так .dockerignore строительство. The .dockerignore файл должен находиться в том же каталоге, что и ваш Dockerfile и перечисляет шаблоны для игнорирования. Создайте файл в backend под названием .dockerignore который просто содержит строку node_modules.

см. здесь для получения дополнительной информации: https://docs.docker.com/engine/reference/builder/#dockerignore-file


то, что @sulogonamission говорит, идеально.

  1. создайте файл с именем .dockerfile в каталоге, где существует Dockerfile
  2. добавить следующий текст в файл /node_modules (или точный путь к каталогу node_modules)
  3. сохраните файл и снова запустите docker build.