diff --git a/docker.md b/docker.md index c4835ac..bc98a03 100644 --- a/docker.md +++ b/docker.md @@ -13,10 +13,46 @@ - démarrer containeur: `docker start` - lister tous les conteneur `docker ps -a` - delete conteneur: `docker rm 2cdc +- run a commad in container: `docker exec ` - créer et lancer un conteneur `docker run -d --name node-app -p 3000:3000 -v $(pwd):/app node:0.12.4 node /app/server.js` - -d lance en tant que daemon - --name permet de nommer le conteneur - -p associe le port au port de l'hote (1er port pour l'hote et second pour le conteneur) - -v $(pwd):/app : cette option permet de partager un dossier avec votre conteneur, ici, nous partageons le dossier courant (où se trouve notre fichier server.js) avec le dossier /app dans le conteneur (attention si vous êtes sur Mac ou Windows uniquement votre 'home' est partagé). - node:0.12.4 : l'image Docker que vous voulez utiliser. - - node /app/server.js : la commande à exécuter dans le conteneur. \ No newline at end of file + - node /app/server.js : la commande à exécuter dans le conteneur. + +## dockerfile + +``` +#FROM permet de définir notre image de base, vous pouvez l'utiliser seulement une fois dans un Dockerfile. +FROM debian + + +#RUN permet d'exécuter une commande à l'intérieur de votre image comme si vous étiez devant un shell unix. +RUN apt-get update \ +&& apt-get install -y curl \ +&& rm -rf /var/lib/apt/lists/* + +RUN curl -LO "https://nodejs.org/dist/v0.12.5/node-v0.12.5-linux-x64.tar.gz" \ +&& tar -xzf node-v0.12.5-linux-x64.tar.gz -C /usr/local --strip-components=1 \ +&& rm node-v0.12.5-linux-x64.tar.gz +#ADD permet d'ajouter des fichiers locaux ou distants à l'intérieur de votre image, il est le plus souvent utilisé pour importer les sources de votre projet ou des fichiers de configuration. +ADD package.json /app/ +#WORKDIR permet de changer le répertoire courant de votre image, toutes les commandes qui suivront seront exécutées à partir de ce répertoire. +WORKDIR /app +RUN npm install +#ajoute le répertoire a projet a l'image +ADD . /app/ + +#EXPOSE et VOLUME permettent respectivement d'indiquer quel port et quel dossier nous souhaitons partager. +EXPOSE 3000 + +VOLUME /app/log + +#instruction qui doit s'exécuter au lancement du conteneur +CMD node server.js +``` + +le .dockerignore permet comme un .gitignore de ne pas inclure certain fichiers dans l'image Docker, +