Skip to content
Snippets Groups Projects
Commit f8822031 authored by Pierre Michiels's avatar Pierre Michiels
Browse files

Update TP5 log.txt

parent 479fbcd5
No related branches found
No related tags found
No related merge requests found
...@@ -26,5 +26,51 @@ Utiliser le compilateur pour compiler le fichier puis après avoir crée le bina ...@@ -26,5 +26,51 @@ Utiliser le compilateur pour compiler le fichier puis après avoir crée le bina
on supprime les fichiers du compilateur. on supprime les fichiers du compilateur.
Après quelques heures de recherche, j'ai abandonné l'utilisation de python pour réduire la tailel de l'image en essayant d'avoir une image qui ne contient que les fichiers nécessaires à l'exécution sans avoir de compilateur.
Le problème est que Python est configuré pour se compiler et s'exécuter avec la même commande => "python" ou "python3".
Dès lors les fichiers nécessaire pour pouvoir exécuter la commande "python" ou "python3" ne peuvent être enlevés.
D'autre part, il m'est impossible d'exécuter un fichier python compilé (.pyc) avec un interpreteur "sh" ou "bash".
Dès lors, exécuter un fichier python compilé depuis l'image scratch m'est impossible.
La seule possibilité pour réduire l'image à laquelle je suis arrivé c'est de choisir dès le départ une image python qui ne contient que le strict nécessaire: python:3.7-alpine.
A la fin du processus, j'ai une image de 41MB au lieu d'avoir une image de 880MB avec l'image python:3.
Par la suite j'ai donc utilisé le langage go comme démontré dans la présentation du prof.
Du coup, mon Dockerfile pour un serveur go:
#va récupérer l'image golang:alpine sur le hub de Docker
FROM golang:alpine AS builder
# copie le fichier main.go dans le dossier /app
COPY main.go /app/
# se déplace dans le dossier /app
WORKDIR /app
#compile le fichier main.go
RUN CGO_ENABLED=0 go build -ldflags="-w -s" main.go
#Depuis une image qui ne sert qu'a exécuter un script via sh
FROM scratch AS runner
# on copie le fichier compilé precédemment
COPY --from=builder /app/main /app/main
#on exécute le fichier compilé "main"
ENTRYPOINT ["/app/main"]
Pour construire l'image "go_server":
#dockebuild -t go_server .
Pour construire le container de l'image "go_server",
le rendre accessible depuis le port 8080 sur la mach. hôte et y insérer une variable d'environnement HOSTNAME:
#dockebuild -t go_server .
#docker run --rm -ti -p 8080:80 -e HOSTNAME=$(hostname) go_server
Au final l'image contenant le fichier compilé "main" aura une taille de 4.55MB.
Load balancing Load balancing
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment