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
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
Ce que @sulogonamission dit est parfait.
.dockerignore
dans le répertoire où se trouve le fichier Docker/node_modules
(ou au chemin exact du répertoire node_modules)