Zum Inhalt springen
BeispielWerk
English

Konfigurationsdateien Beispiele: Docker, CI, tsconfig

Hier stehen kurze Konfigurationsdateien, wie sie in Webprojekten vorkommen: Container und CI, Node-Projektdateien, INI und Properties, Zeitpläne, Server- und Editor-Einstellungen sowie OpenAPI-Beschreibungen. Jedes Snippet ist ein Ausgangspunkt zum Anpassen. Versionsangaben gelten zum Erstellungszeitpunkt und sollten vor der Nutzung geprüft werden.

35 Varianten auf einer Seite, jede mit eigenem Kopier- oder Download-Knopf.

  • INI: Abschnitte, Schlüssel und Kommentare

    ; Kommentar mit Semikolon
    # Kommentar mit Raute
    [allgemein] …
  • INI: Werte mit Leerzeichen, Anführungszeichen und Gleichheitszeichen

    [pfade]
    arbeitsordner = C:\Daten\Beispiel Ordner
    name = "mit Anführungszeichen" …

    INI hat keinen Standard: Anführungszeichen, Kommentare nach dem Wert und Zeilen ohne = behandelt jeder Parser anders.

  • INI: Werte mit Liste und Mehrfachschlüssel

    [server]
    port = 8080
    port = 8081 …

    Doppelter Schlüssel: Python configparser meldet standardmäßig einen Fehler, andere Parser nehmen den letzten Wert.

  • Java Properties: Schlüssel mit Punkten

    # Kommentar
    ! Kommentar mit Ausrufezeichen
    app.name=Beispielanwendung …
  • Java Properties: Doppelpunkt, Escapes, Fortsetzungszeilen

    schluessel:wert mit Doppelpunkt
    mit\ leerzeichen=Schlüssel mit Leerzeichen
    umlaut=\u00e4\u00f6\u00fc …

    Klassische .properties-Dateien sind ISO-8859-1, deshalb \uXXXX für Umlaute.

  • Cron: Crontab mit Umgebung und Protokoll

    SHELL=/bin/bash
    PATH=/usr/local/bin:/usr/bin:/bin
    MAILTO="" …

    Cron startet mit sehr kleinem PATH; deshalb SHELL und PATH setzen und volle Pfade verwenden.

  • Cron: Zeitplan in GitHub Actions

    on:
      schedule:
        - cron: '30 4 * * 1-5'   # Mo bis Fr um 04:30 UTC …

    GitHub rechnet in UTC. Geplante Läufe können sich bei hoher Last verzögern.

  • Cron: Kubernetes CronJob

    apiVersion: batch/v1
    kind: CronJob
    metadata: …

    Image-Name ist erfunden. Der Zeitplan gilt in der Zeitzone des Clusters, außer spec.timeZone ist gesetzt.

  • systemd: Timer-Unit mit täglichem Lauf

    [Unit]
    Description=Beispiel-Backup täglich
     …

    Persistent=true holt verpasste Läufe nach dem Start nach. Dazu gehört eine gleichnamige .service-Datei.

  • systemd: Service-Unit für eine Node-Anwendung

    [Unit]
    Description=Beispielanwendung
    After=network.target …
  • Dockerfile: Node.js mit mehrstufigem Build

    FROM node:22-alpine AS build
    WORKDIR /app
    COPY package*.json ./ …

    Pfade (dist/server.js) an das eigene Projekt anpassen.

  • Dockerfile: Python-Anwendung

    FROM python:3.12-slim
    WORKDIR /app
    ENV PYTHONUNBUFFERED=1 …
  • Dockerfile: statische Seite mit nginx

    FROM nginx:1.27-alpine
    COPY dist/ /usr/share/nginx/html/
    COPY nginx.conf /etc/nginx/conf.d/default.conf …
  • .dockerignore: typische Ausschlüsse

    node_modules
    .git
    .gitignore …
  • docker-compose.yml: Anwendung mit PostgreSQL

    services:
      app:
        build: . …

    Passwörter sind Platzhalter nur für lokale Entwicklung.

  • docker-compose.yml: Redis und Mailpit für die Entwicklung

    services:
      redis:
        image: redis:7-alpine …
  • GitHub Actions: Node.js-CI mit Test und Build

    name: CI
    
    on: …

    Aktionsversionen (v4) gelten zum Erstellungszeitpunkt; auf aktuelle Hauptversionen prüfen.

  • GitHub Actions: Secret als Umgebungsvariable nutzen

    jobs:
      deploy:
        runs-on: ubuntu-latest …

    Das Secret DEPLOY_TOKEN legt man in den Repository-Einstellungen an, nie in der Datei.

  • .htaccess: Weiterleitung und Fehlerseite

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] …
  • package.json: kleines Projekt mit Skripten

    {
      "name": "beispiel-projekt",
      "version": "1.0.0", …
  • package.json: Next.js-Anwendung

    {
      "name": "beispiel-shop",
      "version": "0.1.0", …

    Versionsbereiche zum Erstellungszeitpunkt plausibel gewählt; vor Nutzung auf aktuelle Versionen prüfen.

  • tsconfig.json: Node.js-Projekt (streng)

    {
      "compilerOptions": {
        "target": "ES2022", …
  • tsconfig.json: React-Anwendung mit Vite

    {
      "compilerOptions": {
        "target": "ES2022", …
  • Makefile: übliche Ziele für ein Projekt

    .PHONY: install test build clean
    
    install: …

    Rezeptzeilen müssen mit einem Tabulator beginnen, nicht mit Leerzeichen.

  • .gitignore: Node.js und Editoren

    node_modules/
    dist/
    build/ …
  • .gitignore: Python

    __pycache__/
    *.py[cod]
    .venv/ …
  • .gitattributes: Zeilenenden vereinheitlichen

    * text=auto eol=lf
    *.bat text eol=crlf
    *.png binary …
  • .editorconfig: gemeinsame Editor-Einstellungen

    root = true
    
    [*] …
  • .prettierrc: Prettier-Einstellungen

    {
      "semi": false,
      "singleQuote": true, …
  • eslint.config.js: Grundkonfiguration (Flat Config)

    import js from '@eslint/js'
    
    export default [ …
  • logrotate: wöchentliche Rotation

    /var/log/beispiel/*.log {
        weekly
        rotate 8 …
  • robots.txt: Bereiche sperren und Sitemap angeben

    User-agent: *
    Disallow: /admin/
    Disallow: /intern/ …

    robots.txt ist eine Bitte an Crawler, kein Zugriffsschutz.

  • OpenAPI 3.0: minimale Beschreibung mit einer Route

    openapi: 3.0.3
    info:
      title: Beispiel-API …
  • OpenAPI 3.0: POST mit Request-Body und Fehlerantwort

    paths:
      /kunden:
        post: …

    Ausschnitt: gehört unter die Wurzel einer vollständigen OpenAPI-Datei, KundeNeu muss unter components.schemas stehen.

  • OpenAPI 3.0: Bearer-Authentifizierung

    components:
      securitySchemes:
        bearerAuth: …

Weitere Themen in Datenformate & Snippets