# TP02 : Docker App JS Express ## Compléter le Dockerfile afin de builder correctement l’application contenu dans src/ capture du Dcockerfile ### Une option de npm vous permet de n’installer que ce qui est nécessaire. Quelle est cette option ? Quelle bonne pratique Docker permet t-elle de respecter ? ***L'option permettant de pouvoir installer seulement les dépendances nécéssaires est : --production.*** Lien vers l'explication : https://docs.npmjs.com/cli/v8/commands/npm-install > With the **--production** flag (or when the NODE_ENV environment variable is set to production), npm will not install modules listed in devDependencies. To install all modules listed in both dependencies and devDependencies when NODE_ENV environment variable is set to production, you can use --production=false > ### A l’aide de la commande docker build, créer l’image ma_super_app Commande qui permet de créer l'image ma_super_app : "docker build -t ma_super_app ." ### Compléter le fichier docker-compose.yml afin d’éxécuter ma_super_app avec sa base de données. `/!\ Utiliser correctement les variables d’environnement afin de configurer la base de données et l’application /!\` * fichier "docker-compose.yml" : ```bash= jere@LAPTOP-ADMIN:~/cours-cloud/conteneur-cours/repo-tp-conteneurisation/tp02/TP-2-Docker/tp-docker-2$ cat docker-compose.yml version: '3.9' services: node: image: nod environment: - NODE_ENV=${NODE_ENV} - PORT=${PORT_NODE} ports: - "${PORT_NODE}:${PORT_NODE}" depends_on: - mysql mysql: image: mysql:8.0 environment: - MYSQL_DATABASE=${MYSQL_DATABASE} - MYSQL_USER=${MYSQL_USER} - MYSQL_PASSWORD=${MYSQL_PASSWORD} ports: ``` * fichier ".env" : ```bash= jere@LAPTOP-ADMIN:~/cours-cloud/conteneur-cours/repo-tp-conteneurisation/tp02/TP-2-Docker/tp-docker-2$ cat .env #var env NODE NODE_ENV=production PORT_NODE=8080 #var env MYSQL MYSQL_DATABASE=tp02 MYSQL_USER=jere MYSQL_PASSWORD=jere MYSQL_PORT= ``` ### Arborescence du projet ```bash jere@LAPTOP-ADMIN:~/cours-cloud/conteneur-cours/repo-tp-conteneurisation/tp02$ tree -a . ├── .env ├── Dockerfile ├── docker-compose.yml ├── package.json └── src └── index.js ```