diff --git a/Docker.md b/Docker.md index 099be0e59db9c7b68564d9a534e91d23c6d03e31..332bc49cf06e05c13be0c7f998b27ac20f026d10 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 717a2c09528c018ea6d9ba68127e609b5a66bf6f..28de28cf3b3c9d8fdf71e60b0160a09f54760817 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 573ac01c6321bba742fb424f26ce1321697fecc3..f2353258dd316a330978edd9e4acb22a289c63db 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 c65e43484e1ba71e789ae12483fb526ad32c2ec4..893087295bfcab1d31c610e148fb097c06de9569 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