Private
Public Access
Developer Guide hinzugefügt
+121
@@ -0,0 +1,121 @@
|
||||
# Developer Guide
|
||||
|
||||
This page describes the internal project structure and development workflow.
|
||||
|
||||
---
|
||||
|
||||
## Main Project Directories
|
||||
|
||||
```text
|
||||
romexis-base/
|
||||
Runtime base image.
|
||||
|
||||
romexis-payload/
|
||||
Windows installer payload extraction.
|
||||
|
||||
romexis-firebird-payload/
|
||||
macOS Firebird SQL payload extraction.
|
||||
|
||||
romexis/
|
||||
Final Romexis Server image.
|
||||
|
||||
migration-service/
|
||||
Migration Web UI, REST API, SFTP and restore orchestration.
|
||||
|
||||
migration-client/
|
||||
Source-side migration helper client.
|
||||
|
||||
docs/
|
||||
Extended markdown documentation.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Development Principles
|
||||
|
||||
- Keep proprietary binaries out of Git.
|
||||
- Keep installer extraction in payload images.
|
||||
- Keep runtime dependencies in the base image.
|
||||
- Keep final server image focused on assembly and runtime logic.
|
||||
- Keep MSSQL and Firebird initialization separated.
|
||||
- Use the wrapper script only for backend routing.
|
||||
- Prefer explicit validation over silent incomplete images.
|
||||
|
||||
---
|
||||
|
||||
## Database Init Scripts
|
||||
|
||||
```text
|
||||
init-romexis-db.sh
|
||||
Routes to backend-specific init script.
|
||||
|
||||
init-romexis-mssql-db.sh
|
||||
Handles SQL Server initialization.
|
||||
|
||||
init-romexis-firebird-db.sh
|
||||
Handles Firebird initialization.
|
||||
```
|
||||
|
||||
Do not put backend-specific required variables in the wrapper.
|
||||
|
||||
Example:
|
||||
|
||||
```bash
|
||||
MSSQL_SA_PASSWORD="${MSSQL_SA_PASSWORD:?MSSQL_SA_PASSWORD is required}"
|
||||
```
|
||||
|
||||
must only be in the MSSQL script, not in the wrapper.
|
||||
|
||||
---
|
||||
|
||||
## Version-Aware Database Updates
|
||||
|
||||
The database init scripts use an explicit Romexis update order.
|
||||
|
||||
This is required because markers do not sort numerically.
|
||||
|
||||
Example:
|
||||
|
||||
```text
|
||||
600, 610, 63, 64, 651, 652, 653
|
||||
```
|
||||
|
||||
The script resolves the target marker from `/opt/romexis/version` and runs updates until that marker.
|
||||
|
||||
---
|
||||
|
||||
## Testing Image Contents
|
||||
|
||||
```bash
|
||||
docker run --rm --entrypoint find \
|
||||
gitea.buchhorster.de/patrick/romexis-server:<tag> \
|
||||
/opt -maxdepth 3 -type f | sort
|
||||
```
|
||||
|
||||
Open shell:
|
||||
|
||||
```bash
|
||||
docker run --rm -it --entrypoint bash \
|
||||
gitea.buchhorster.de/patrick/romexis-server:<tag>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Local Debug Compose Override
|
||||
|
||||
```yaml
|
||||
services:
|
||||
romexis:
|
||||
entrypoint:
|
||||
- /bin/bash
|
||||
- -c
|
||||
- sleep infinity
|
||||
stdin_open: true
|
||||
tty: true
|
||||
```
|
||||
|
||||
Then:
|
||||
|
||||
```bash
|
||||
docker compose exec romexis bash
|
||||
```
|
||||
Reference in New Issue
Block a user