web-dev-qa-db-fra.com

Pourquoi la construction de docker prend-elle si longtemps à fonctionner?

J'exécute Docker Build et cela prend énormément de temps à courir. Enfait, ça ne se termine pas et je dois CTRL + C pour arrêter.

La nuit dernière, les choses fonctionnaient bien. Lorsque je suis retourné à l'ordinateur et que j'ai essayé de le reconstruire, il a commencé à se comporter de manière étrange.

Voici ma commande:

docker build -t mywebsite/backend .

Quand j'ai couru, j'ai remarqué ceci:

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

Je ne sais pas pourquoi la taille du fichier était de 213,8. Le seul répertoire volumineux est node_modules et contient .dockerignore. Il ne doit donc pas toucher à ce répertoire.

Après cela, j'ai eu une erreur, je l'ai donc corrigée et j'ai rediffusé:

docker build -t mywebsite/backend .

Cette fois, ça a juste été suspendu. Et continue à le faire.

Voici ma 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

Le répertoire dans lequel je me trouve lorsque j'exécute la commande est celui qui contient le fichier Dockerfile:

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

J'exécute docker sur Ubuntu 14.04

8
love2node

Je ne sais pas pourquoi la taille du fichier était de 213,8. Le seul répertoire volumineux est node_modules et contient .dockerignore. Il ne doit donc pas toucher à ce répertoire.

Ce n'est pas comme ça que .dockerignore fonctionne. Le fichier .dockerignore doit se trouver dans le même répertoire que votre Dockerfile et répertorie les modèles à ignorer. Créez un fichier dans backend appelé .dockerignore qui contient simplement la ligne node_modules.

Voir ici pour plus d'informations: https://docs.docker.com/engine/reference/builder/#dockerignore-file

8
slugonamission

Ce que @sulogonamission dit est parfait.

  1. Créez un fichier avec le nom .dockerignore dans le répertoire où se trouve le fichier Docker
  2. Ajoutez le texte suivant au fichier /node_modules (ou au chemin exact du répertoire node_modules)
  3. Enregistrez le fichier et exécutez à nouveau la génération de docker.
0
deepakssn