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 use
verwenden!
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
node
vorhanden 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
node
vorhanden 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
java
vorhanden 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
java
vorhanden 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
Dockerfile
ein. (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/Dockerfile
geä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
Dockerfile
zu kopieren. - Auch macht es Sinn den devcontainer mit
docker compose build devcontainer
zuerst zu bauen, da VS Code nicht so schöne Fehlermeldungen generiert.