Devcontainer anpassen
Der Devcontainer ist standardmässig nur mit Nginx ausgestattet. Es sind noch keine Programmiersprachen installiert. Dies wird für die meisten Projekte nicht reichen.
Es wurde jedoch das Tool mise installiert, mit
welchem sehr einfach beliebige Sprachen installiert werden können.
Mise ist ein universeller Packetmanager für Sprachen,
aber auch andere Tools.
📺 Video der Aufgabe
- Im Video verwende ich noch den Befehl
~/.local/bin/mise use - Neu könnt Ihr auch im Dockerfile
mise useverwenden!
Aufgaben
Branch mise-test erstellen
Die folgende Aufgabe soll jeder für sich machen und ist nur bedingt Projektbezogen. Um Mergekonflikte zu vermeiden, sollen diese in einem eigenen Branch geschehen. Dieser Branch müsst ihr nicht pushen. Einen Branch erstellt ihr mit folgendem Befehl:
git checkout -b mise-test
Node installieren
Startet ein Terminal im devcontainer und führt folgende Befehle aus
- Zuerst schauen wir ob
nodevorhanden ist (es sollte nicht)node
> bash: command not found: node - Dann installieren wir node lts
(long-term supported) global
(-g)
mise use node@lts -g - Nun prüfen wir nochmals ob
nodevorhanden ist (es sollte sein)node
Welcome to Node.js v22.10.0.
Type ".help" for more information.
>
Java installieren
Startet ein Terminal im devcontainer und führt folgende Befehle aus
- Zuerst schauen wir ob
javavorhanden ist (es sollte nicht)java
> bash: command not found: java - Dann installieren wir java lts (long-term supported) global (-g)
mise use java@lts -g - Nun prüfen wir nochmals ob
javavorhanden ist (es sollte sein)java --version
openjdk 21.0.2 2024-01-16
OpenJDK Runtime Environment (build 21.0.2+13-58)
OpenJDK 64-Bit Server VM (build 21.0.2+13-58, mixed mode, sharing)
Herausfinden was es für Versionen gibt
Mit dem Befehl mise list-all [sprache] [prefix] ist es möglich alle
verfügbaren Versionen aufzulisten
Zeige alle node Versionen an
mise list-all node
0.1.14
0.1.15
...
22.10.0
23.0.0
23.1.0
Zeige alle Java "openjdk" Versionen an
mise list-all java openjdk
openjdk-9.0.0
openjdk-9.0.1
...
openjdk-23.0.0
openjdk-23.0.1
Für alle Programmiersprachen bereitstellen
Um zu garantieren, dass alle im Team die selbe Umgebung haben, müssen die
Sprachen, nicht wie oben im Container, sondern im
.devcontainer/Dockerfile
installiert werden.
Dabei ist folgendes zu beachten:
- Öffne das Projekt im Devcontainer mit "Reopen in Container"
- Öffne die Datei
.devcontainer/Dockerfile - Suche folgenden Befehl
RUN curl https://mise.run | sh \- Damit wird das cli tool "mise" installiert.
- Um nun damit Programmiersprachen direkt im Image zu installieren, muss dies danach passieren.
- Füge nun den folgenden Befehl danach ins
Dockerfileein. (Er sollte bereits als Kommentar existieren)RUN mise use node@lts -g- Damit wird die "long-term supported" Version von Nodejs installiert
- Wenn das
.devcontainer/Dockerfilegeändert wurde, muss der Devcontainer neu gebaut werden. "Rebuild Container"
- Es macht durchaus Sinn zuerst im Devcontainer zu prüfen was möglich ist und
erst danach den Code ins
Dockerfilezu kopieren. - Auch macht es Sinn den devcontainer mit
docker compose build devcontainerzuerst zu bauen, da VS Code nicht so schöne Fehlermeldungen generiert.