Mettre à jour 'docker.md'

This commit is contained in:
vincent 2019-05-15 18:42:24 +02:00
parent 1e6ab9e47e
commit 800db14cda

View File

@ -14,6 +14,7 @@
- lister tous les conteneur `docker ps -a` - lister tous les conteneur `docker ps -a`
- delete conteneur: `docker rm 2cdc - delete conteneur: `docker rm 2cdc
- run a commad in container: `docker exec ` - 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` - 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 - -d lance en tant que daemon
- --name permet de nommer le conteneur - --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" \ 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 \ && 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 && 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. #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.
ADD package.json /app/ 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 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 WORKDIR /app
RUN npm install RUN npm install
#ajoute le répertoire a projet a l'image #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 et VOLUME permettent respectivement d'indiquer quel port et quel dossier nous souhaitons partager.
EXPOSE 3000 EXPOSE 3000
VOLUME /app/log 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 #instruction qui doit s'exécuter au lancement du conteneur
CMD node server.js 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, 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 .` - lancer la build du fichier: `docker build -t nomducontainer .`
- -t permet de nommer votre image docker, - -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 lensemble 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 lensemble 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.