Environnements pédagogiques Web pour la formation IT
Basé sur codercom/code-server, il expose un éditeur VSCode online, accessible depuis un navigateur web.
Cette image est publiée automatiquement sur le dépôt central Docker Hub à chaque commit sur la branche master de ce repo. (cf workflow Github)
# Pull de l'image depuis Docker Hub (facultatif, sera fait lors du run à défaut)
docker pull jimetevenard/code-env:base
# lancement d'un container et exposition du port 80 en local
docker run -d -p 127.0.0.1:80:80 jimetevenard/code-env:base
- Image de base :
jimetevenard/code-env:base
Les autres variantes se basent sur cette image - XML Relaxng :
jimetevenard/code-env:xml-relaxng
- Java - Spring Boot :
jimetevenard/code-env:java
Chaque environnement est construit à partir
- D'un
Dockerfile
(exemple) installant l'environnement spécifique du TP.
Il débute parFROM jimetevenard/code-env:base
pour exploiter l'image de base. - D'un fichier de consigne, affiché latéralement, au format Markdown. (exemple)
Il doit conventionnellement être nomméinstructions.md
pour être chargé et converti depuis le front.
-
le fait de spécifier l'hôte local dans le mapping de port
-p 127.0.0.1:80:80
restreint l'exposition du serveur à la machine hôte.- On aurait pu exploser ce port
80
à l'exterieur de l'hôte (si celui-ci est accessible depuis Internet ou un réseau) avec simplement-p 80:80
. - Cela n'est toutefois pas recommandé, on préferera utiliser un reverse proxy (avec chiffrement TLS pour servir en HTTPS) pour exposer notre container. L'usage d'un serveur en reverse proxy permet également de mapper un (sous-)domaine différent pour chacun des conteneurs.
- Code-server est néanmoins capable de gérer lui-même un certificat TLS auto-signé. (voir § Liste des args de code-server)
- On aurait pu exploser ce port
-
Le script de lancement spécifie l'option
--auth none
pour désactiver l'authentification par mot de passe de code-server (de façon à générer nous même l'authentification) -
Il peut être utile de faire un volume sur le répertoire du projet (pour le conserver à l'extérieur du container :
-v "/somwhere/on/host:/home/coder/workspace"
Pour tester une modification en local du Dockerfile ou des sources, vous pouvez builder vous-même l'image :
# build base image
docker build -t jimetevenard/code-env:base .
# build env-specific image
cd <env flavor> # e.g. cd xml-relaxng
docker build -t env-tag .
Peut être obtenu avec docker exec <CONTAINER_ID> code-server --help
.