From 800db14cda520d2d00f2f51e680f8a4ddc555192 Mon Sep 17 00:00:00 2001 From: vincent Date: Wed, 15 May 2019 18:42:24 +0200 Subject: [PATCH] =?UTF-8?q?Mettre=20=C3=A0=20jour=20'docker.md'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker.md | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 67 insertions(+), 5 deletions(-) diff --git a/docker.md b/docker.md index f15c52d..32a48af 100644 --- a/docker.md +++ b/docker.md @@ -14,6 +14,7 @@ - lister tous les conteneur `docker ps -a` - delete conteneur: `docker rm 2cdc - run a commad in container: `docker exec ` +- voir stdout d'un container: `docker logs` - 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 @@ -37,20 +38,23 @@ RUN apt-get update \ RUN curl -LO "https://nodejs.org/dist/v12.2.0/node-v12.2.0-linux-x64.tar.xz" \ && tar -xJf node-v12.2.0-linux-x64.tar.xz -C /usr/local --strip-components=1 \ && rm node-v12.2.0-linux-x64.tar.xz -#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/ +#copy 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. +COPY 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/ - +COPY . /app/ +#ADD permet de rcupérer des source depuis un url ou d'extraire une archive #EXPOSE et VOLUME permettent respectivement d'indiquer quel port et quel dossier nous souhaitons partager. EXPOSE 3000 VOLUME /app/log +#USER permet de selectionner kl'utilisateur qui lancera le service +#ENTRYPOINT ["executable", "param1", "param2"] sets the command and parameters that will be executed first when a container is run. + #instruction qui doit s'exécuter au lancement du conteneur CMD node server.js ``` @@ -58,4 +62,62 @@ CMD node server.js le .dockerignore permet comme un .gitignore de ne pas inclure certain fichiers dans l'image Docker, - lancer la build du fichier: `docker build -t nomducontainer .` - - -t permet de nommer votre image docker, \ No newline at end of file + - -t permet de nommer l'image docker + +## docker compose + +permet de gérer plusieur container ensemble (IaS) +exemple de fichier de confid en yaml: +``` +version: 3 + +services: + #1 container postgress avec son image et ces variable d'environement + postgres: + image: postgres:10 + environment: + POSTGRES_USER: rails_user + POSTGRES_PASSWORD: rails_password + POSTGRES_DB: rails_db + + redis: + image: redis:3.2-alpine + + rails: + #lance une build en fontion du dockerfile locale + build: . + #n'est construit que lorsque les dependance dont ok + #depends_on crée un pointage au sein du réseau créé par Docker entre conteneur + depends_on: + - postgres + - redis + environment: + DATABASE_URL: 'postgres://rails_user:rails_password@postgres:5432/rails_db' + REDIS_HOST: 'redis:6379' + #monte le répertoire local sur /app + volumes: + - .:/app + + nginx: + image: nginx:latest + links: + - rails + ports: + - 3000:80 + #on ne monte ici que un fichier de configuration + volumes: + - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro +``` + + + +- `docker-compose up` démarre les services décrits dans docker-compose.yml et ne rend pas la main. +- `docker-compose up -d` fait la même chose mais rend la main une fois que les services sont démarrés. +- `docker-compose up –build` reconstruit les services avant de les lancer. +- `docker-compose down` stoppe les services. +- `docker-compose restart` redémarre l’ensemble des services. +- `docker-compose restart nginx` redémarre un des service (ici nginx). +- `docker-compose exec rails bash` fournit une console bash au sein du conteneur rails. +- `docker-compose logs` retourne l’ensemble des logs des services depuis le dernier démarrage et rend la main. +- `docker-compose logs -f` affiche les logs des services et continue à les « écouter » sansrendre la main. +- `docker-compose logs -f rails` fait la même chose pour le conteneur rails uniquement.