2.7 KiB
Einrichtung einer containerisierten Entwicklungsumgebung am Beispiel von VS Code und PyCharm
Diese Anleitung geht von einer unveränderlichen Linux Distribution wie Fedora Atomic Desktops aus. In dieser ist der Einsatz isolierter Software bereits inhärent und Best Practice, die Entwicklungsumgebung vom Rest des Betriebssystems zu isolieren hat aber auch in klassischen Distributionen einige Vorteile:
- Software Stack wird klar vom Rest des Systems getrennt. Hierdurch wird das Basissystem nicht mit der Vielzahl an Paketen belastet welche unter Umständen auch zu Konflikten führen können (z.B. verschiedene Python Versionen)
- Die Entwicklungsumgebung ist wiederrum nicht durch die restlichen Pakete des Basissystems beeinflusst und damit einfach reproduzierbar.
Komponenten
Die Softwarestack wird hier am Beispiel einer Python Entwicklungsumgebung demonstriert. Hierbei stellen wir die beiden verbreiteten IDEs Visual Studio Code und PyCharm Community gegenüber. Das Ziel ist die vollständige Einrichtung für ein Python Projekt zu demonstrieren, daher werden im Anschluss auch Python Pakete installiert um dies zu demonstrieren. Diese sind für die Einrichtung anderer Sprachen natürlich nicht erfolderlich und entsprechend gekennzeichnet.
Containerisierte Entwicklungsumgebuing
| Komponente | VS Code Setup | PyCharm Setup | Beschreibung |
|---|---|---|---|
| IDE | VS Code (Flatpak) | PyCharm Community (Flatpak) | Entwicklungsumgebung |
| Flatpak Berechtigungen | Flatseal (Flatpak) | Flatseal (Flatpak) | Verwalten von Flatpak Berechtigungen |
| Container-Client | Podman Remote (Flatpak) | Docker Plugin (integriert) | Container-Anbindung |
| Dev Container Support | Dev Containers (VS Code Extension) | Dev Containers (integriert) | Containerbasierte Entwicklung |
| Container-Shell | Toolbox | SSH Remote Development | Shell-Zugang zu Containern |
Python Komponenten (optional)
| Komponente | Beschreibung |
|---|---|
| Python 3 | Programmiersprache |
| pip | Paketmanager für Python |
| Python-Entwicklungstools | Nötig für native Paketmanager |
| PySide6 | Qt GUI-Toolkit für Python |
| Dependency Injector | Dependency Injection Library |
| Linter & Formatter | Code-Qualität & Formatierung |