docker_TP/README.md
2024-03-19 23:08:54 +01:00

184 lines
4.4 KiB
Markdown

# TP 1
# TP 2
# TP 4
**Étape 1** : Créer deux dossiers : "web" et "nginx"
**Étape 2** : Mettre le fichier ``index.php`` dans le dossier web et le fichier ``default.conf`` dans le dossier nginx
**Étape 3** : Pour déployer le server REDIS il faut ajouter ceci dans le fichier ``docker-compose.yml``
```yaml
services:
redis:
image: redis/redis-stack
ports:
- "6379:6379"
volumes:
- redis_data:/data
restart: always
```
**Étape 4** : Pour déployer le server REDISINSIGHT il faut ajouter ceci dans le fichier ``docker-compose.yml``
```yml
services:
redisinsight:
image: redis/redisinsight
ports:
- "5540:5540"
restart: always
volumes:
- redisinsight_data:/db
```
⚠️ Attention ne pas oublier de mettre à la fin du ficher un bloc volumes
```yml
volumes:
redis_data:
redisinsight_data:
```
**Étape 5** : Pour déployer le server PHP il faut ajouter ceci dans le fichier ``docker-compose.yml``
```yml
services:
php:
image: windok/php-redis
restart: always
volumes:
- ./web:/usr/share/nginx/html
environment:
NOM : "moguljak"
PRENOM : "tom"
deploy:
replicas: 2
```
**Étape 6** : Pour déployer le server NGINX il faut ajouter ceci dans le fichier ``docker-compose.yml``
```yml
services:
nginx :
image: nginx
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./web:/usr/share/nginx/html
- ./nginx:/etc/nginx/conf.d
```
**Étape 7** : Pour initialiser la base de données deux méthodes s'offrent à nous. La première en se connectant directement au serveur REDIS et la deuxième en utilisant l'interface REDISINSIGHT.
- **Première solution**
- Démarrer docker avec la commande ``docker compose up -d``
- Effectuer la commande ``docker ps`` afin de lister tous conteneurs
- Maintenant qu'on sait sur quel docker on veut se connecter (celui de REDIS) on peut effectuer la commande suivante nous permettant d'ouvrir un Shell directement dans le docker. ``docker exec -it tp4-redis-1 /bin/bash``
- Maintenant effectuer cette commande ``redis-cli`` elle va nous permettre de définir la clef
- Et ensuite pour définir la clef on effectue ``set code 12345``
- Maintenant vous pouvez voir les changements en allant sur la page
"http://localhost/index.php"
- **Deuxième solution**
# TP 5/6
**Étape 1** : Il faut utiliser de nouveau ce qu'on a fait lors du TP4 afin de faire la mise en réseau.
Pour cela nous allons tout d'abord ajouter ceci :
```yml
networks:
- back
```
Sur le service REDIS, REDISINSIGHT
```yml
networks:
- front
```
Sur le service NGINX
```yml
networks:
- front
- back
```
Sur le service PHP
Et un bloc networks à la fin du fichier :
```yml
networks:
front:
back:
```
**Étape 2** : On va commencer par faire un docker compose contenant les services de cadvisor et de node exporter.
Pour la partie cadvisor on va mettre
```yml
services:
cadvisor:
image: google/cadvisor:latest
ports:
- "8080:8080"
restart: unless-stopped
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro*
```
Et pour la partie node exporter
```yml
services:
node-exporter:
image: prom/node-exporter:latest
ports:
- "9100:9100"
restart: unless-stopped
```
**Étape 3** : Maintenant on va faire un docker compose pour le service de prometheus
```yml
services:
prometheus:
image: prom/prometheus:latest
restart: unless-stopped
volumes:
- ./prometheus/:/etc/prometheus/
ports:
- "9090:9090"
```
⚠️ Attention, il ne faut pas oublier de faire le fichier de configuration de prometheus (prometheus.yml) et ensuite de la mettre dans un dossier prometheus
```yml
global:
scrape_interval: 1m
evaluation_interval: 1m
scrape_configs:
- job_name: 'prometheus'
scrape_interval: 1m
static_configs:
- targets: ['localhost:9090']
- job_name: 'node'
static_configs:
- targets: ['node-exporter:9100']
- job_name: 'cadvisor'
static_configs:
- targets: ['cadvisor:8080']
```
Ce fichier de configuration va nous permettre de faire le lien entre le service prometheus et les services cadvisor et node exporter
**Étape 4** : Maintenant il ne reste plus qu'à faire le docker compose pour le service Grafana.
```yml
services:
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
restart: unless-stopped
```
**Étape 5** :