# 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
```