docs/coding/sandboxed-dev-environment.md

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