web-dev-qa-db-de.com

Warum dauert die Ausführung von Docker-Builds so lange?

Ich arbeite mit Docker Build und die Ausführung dauert schrecklich lange. Tatsächlich ist es nicht vollständig und ich muss STRG + C drücken, um es zu beenden.

Letzte Nacht hat alles gut geklappt. Als ich zum Computer zurückkehrte und versuchte, ihn neu aufzubauen, verhielt er sich merkwürdig.

Hier ist mein Befehl:

docker build -t mywebsite/backend .

Als ich es lief, bemerkte ich Folgendes:

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

Ich habe keine Ahnung, warum die Dateigröße 213,8 ​​war. Das einzige große Verzeichnis ist node_modules und enthält .dockerignore, daher sollte es dieses Verzeichnis nicht berühren.

Nachdem das gelaufen ist, hatte ich einen Fehler, also habe ich ihn behoben und erneut ausgeführt:

docker build -t mywebsite/backend .

Diesmal hing es einfach. Und das auch weiterhin.

Hier ist meine 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

Das Verzeichnis, in dem ich mich beim Ausführen des Befehls befinde, enthält die Docker-Datei:

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

Ich verwende Docker auf Ubuntu 14.04

8
love2node

Ich habe keine Ahnung, warum die Dateigröße 213,8 ​​war. Das einzige Verzeichnis, das groß ist, ist node_modules und enthält .dockerignore, daher sollte es dieses Verzeichnis nicht berühren.

So funktioniert .dockerignore nicht. Die .dockerignore-Datei sollte sich im selben Verzeichnis wie Ihre Dockerfile befinden und die zu ignorierenden Muster auflisten. Erstellen Sie in backend eine Datei mit dem Namen .dockerignore, die einfach die Zeile node_modules enthält.

Weitere Informationen finden Sie hier: https://docs.docker.com/engine/reference/builder/#dockerignore-file

8
slugonamission

Was @sulogonamission sagt, ist perfekt.

  1. Erstellen Sie eine Datei mit dem Namen .dockerignore in dem Verzeichnis, in dem sich die Docker-Datei befindet
  2. Fügen Sie der Datei /node_modules (oder dem genauen Pfad des Verzeichnisses node_modules) den folgenden Text hinzu.
  3. Speichern Sie die Datei und führen Sie docker build erneut aus.
0
deepakssn