Skip to content
Snippets Groups Projects
Commit a0bd8f77 authored by Florentin Labelle's avatar Florentin Labelle
Browse files

Docker updates

parent 1dd46347
Branches
No related tags found
No related merge requests found
......@@ -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
......
......@@ -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.
......
......@@ -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
......@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment