From a0bd8f7756b6e96ced2a4b5a27cff0639b507a06 Mon Sep 17 00:00:00 2001
From: Florentin Labelle <florentin.labelle@student-cs.fr>
Date: Sun, 5 Jun 2022 14:34:12 +0200
Subject: [PATCH] Docker updates

---
 Docker.md                                    | 18 ++++++++++++++++++
 README.md                                    | 18 ++++++++++++++++--
 solutions/dockerfiles/Dockerfile.back.alpine |  4 +++-
 solutions/dockerfiles/Dockerfile.back.debian |  4 +++-
 4 files changed, 40 insertions(+), 4 deletions(-)

diff --git a/Docker.md b/Docker.md
index 099be0e..332bc49 100644
--- a/Docker.md
+++ b/Docker.md
@@ -59,6 +59,24 @@ ENTRYPOINT ma commande 1 && ma commande 2
 ```
 nécessaire lorsque l'on a plusieurs commande à faire tourner de façon séquentielle.
 
+
+### Le multi-stage build
+Parfois on a pas besoin d'une image différent pour pouvoir build l'application et pour distribuer cette application. On utilise alors un multi-stage build. Voilà un petit exemple.
+```Dockerfile
+FROM golang:1.16
+WORKDIR /go/src/github.com/alexellis/href-counter/
+RUN go get -d -v golang.org/x/net/html  
+COPY app.go ./
+RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .
+
+FROM alpine:latest  
+RUN apk --no-cache add ca-certificates
+WORKDIR /root/
+COPY --from=0 /go/src/github.com/alexellis/href-counter/app ./
+CMD ["./app"]  
+```
+Seul le dernier stage est conservé dans l'image construite.
+
 ## Construire une image à partir d'un Dockerfile
 Une image se construit à partir d'un Dockerfile et d'un contexte (c'est un dossier qui correspond au **.** que tu as mis dans to Dockerfile). Souvent le contexte c'est `.` et il n'y a pas besoin de spécifier l'emplacement du Dockerfile, si il s'appelle `Dockefile` et est à la racine du contexte. Pour constuire l'image on utilise alors:
 ```bash
diff --git a/README.md b/README.md
index 717a2c0..28de28c 100644
--- a/README.md
+++ b/README.md
@@ -71,7 +71,11 @@ Le front est fait en React: vous deverez donc faire un **multi-stage** build:
   - Stage 1: Servir le site avec une image Nginx.  
 
 #### Tester l'image
-Test ton image Docker (docker run...)
+Test ton image Docker:
+```bash
+docker run -p 8080:80 vroum-front
+```
+Vérifie ensuite dans ton navigateur que tu peux bien voir le front de Vroum
 
 #### Challenge supplémentaire (Facultatif)  
 Il est souvent considéré comme une mauvaise pratique d'avoir des conteneurs qui tournent avec l'utilisateur **root** en production.  
@@ -85,7 +89,17 @@ Ton objectif est de créer un Dockerfile et de construire une image avec pour en
 Le back est fait en Django: je te souhaite bon courage.  
 
 #### Tester l'image 
-Test l'image Docker et tout avec MySQL...
+Pour tester que le back fonctionne bien il va falloir d'abord mettre en place une base de donnée mysql, pour que le back s'y connecte.
+```
+docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql
+```
+Puis faire tourner le back:
+```
+docker run -p 8000:8000 --env-file .env vroum-back
+```
+Attention à bien remplir le .env avec les bonnes valeur pour se connecter à la BDD.
+
+Faire des curl pour tester que tout marche à peu près bien.
 
 #### Challenge supplémentaire (Facultatif et plus dur que pour le front)  
 Il est souvent considéré comme une mauvaise pratique d'avoir des conteneurs qui tournent avec l'utilisateur **root** en production.  
diff --git a/solutions/dockerfiles/Dockerfile.back.alpine b/solutions/dockerfiles/Dockerfile.back.alpine
index 573ac01..f235325 100644
--- a/solutions/dockerfiles/Dockerfile.back.alpine
+++ b/solutions/dockerfiles/Dockerfile.back.alpine
@@ -12,4 +12,6 @@ RUN pip install -r requirements.txt
 RUN apk del build-deps
 
 COPY ./ /back/
-ENTRYPOINT python3 manage.py migrate && python3 manage.py runserver 0.0.0.0:8000
+ENTRYPOINT python3 manage.py makemigrations \
+           && python3 manage.py migrate \
+           && python3 manage.py runserver 0.0.0.0:8000
\ No newline at end of file
diff --git a/solutions/dockerfiles/Dockerfile.back.debian b/solutions/dockerfiles/Dockerfile.back.debian
index c65e434..8930872 100644
--- a/solutions/dockerfiles/Dockerfile.back.debian
+++ b/solutions/dockerfiles/Dockerfile.back.debian
@@ -5,4 +5,6 @@ COPY requirements.txt /back/
 RUN pip install -r requirements.txt
 
 COPY ./ /back/
-ENTRYPOINT python3 manage.py migrate && python3 manage.py runserver 0.0.0.0:8000
+ENTRYPOINT python3 manage.py makemigrations \
+           && python3 manage.py migrate \
+           && python3 manage.py runserver 0.0.0.0:8000
-- 
GitLab