Alle Credentials und Konfigurationswerte werden zentral in einer einzigen Datei verwaltet:
config/shared/docker/.env
Diese Datei ist NICHT unter Git-Kontrolle (.gitignore) und enthält alle sensitiven Daten.
Die Template-Datei unter Git-Kontrolle:
config/shared/docker/.env.template
Kopiere diese Datei zu .env und passe die Werte an:
cp config/shared/docker/.env.template config/shared/docker/.env
postgres_admin_user=postgres_admin
postgres_admin_password=<your-password>
postgres_admin_database=postgres
postgres_jeeeraaah_host=localhost
postgres_jeeeraaah_port=5432
postgres_jeeeraaah_user=<your-username>
postgres_jeeeraaah_password=<your-password>
postgres_jeeeraaah_database_jeeeraaah=jeeeraaah
postgres_jeeeraaah_database_lib_test=lib_test
postgres_keycloak_host=localhost
postgres_keycloak_port=5433
postgres_keycloak_user=<your-username>
postgres_keycloak_password=<your-password>
postgres_keycloak_database=keycloak
keycloak_admin_user=admin
keycloak_admin_password=admin
test_user=<your-test-user>
test_password=<your-test-password>
docker-compose.yml lädt .env automatisch:
environment:
POSTGRES_USER: ${postgres_jeeeraaah_user}
POSTGRES_PASSWORD: ${postgres_jeeeraaah_password}
bom/pom.xml konfiguriert Resource Filtering:
<build>
<filters>
<filter>${project.basedir}/../config/shared/docker/.env</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
Dann in persistence.xml:
<property name="jakarta.persistence.jdbc.user" value="${postgres_jeeeraaah_user}"/>
<property name="jakarta.persistence.jdbc.password" value="${postgres_jeeeraaah_password}"/>
In microprofile-config.properties:
# Values are replaced during Maven build via resource filtering
database.username=${postgres_jeeeraaah_user}
database.password=${postgres_jeeeraaah_password}
@Inject
@ConfigProperty(name = "database.username")
String dbUsername;
✅ Single Point of Truth: Nur eine Datei zu pflegen
✅ Keine Duplikation: Kein Copy-Paste von Credentials
✅ Git-sicher: .env ist in .gitignore
✅ Template: .env.template zeigt die Struktur
✅ Automatisch: Maven ersetzt Platzhalter beim Build
.env.template eintragen.env aus .env.template erstellen.env das Projekt neu bauen:
cd ~/develop/github/java/main/root
mvn clean install
# In target-Verzeichnis schauen:
cat target/classes/META-INF/microprofile-config.properties
cat target/classes/META-INF/persistence.xml
Problem: Platzhalter wie ${postgres_jeeeraaah_user} bleiben stehen
Lösung:
.env existiertmvn clean install ausbom/pom.xmlProblem: Tests schlagen fehl mit “password authentication failed”
Lösung:
.envmvn clean install ausruu-docker-restartproject/
├── config/
│ └── shared/
│ └── docker/
│ ├── .env ← Single Point of Truth (NICHT in Git)
│ ├── .env.template ← Template (IN Git)
│ └── docker-compose.yml ← Nutzt .env
├── bom/
│ └── pom.xml ← Konfiguriert Resource Filtering
└── */
└── src/main/resources/
├── META-INF/
│ ├── persistence.xml ← ${...} wird ersetzt
│ └── microprofile-config.properties ← ${...} wird ersetzt
└── ...
config/shared/docker/.env.template - Template-Dateiconfig/shared/docker/docker-compose.yml - Docker-Konfigurationbom/pom.xml - Maven Resource Filtering Konfigurationconfig.properties.template - Legacy-Konfiguration (wird noch migriert)