- Document key changes from public to air-gapped environment - Include build instructions with proxy configuration - Add verification commands and security considerations - Reference related files and SBOM generation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Entire-Checkpoint: 01M6PCAZ0X5197XH30FG4FXHRE
88 lines
2.9 KiB
Markdown
88 lines
2.9 KiB
Markdown
# Air-Gapped Environment Adaptation
|
|
|
|
This document summarizes the adaptations made to the Qt6 framework Dockerfile for air-gapped environments.
|
|
|
|
## Key Changes from Public to Air-Gapped Environment
|
|
|
|
### 1. Repository Configuration
|
|
- **Before**: Default Ubuntu repositories
|
|
- **After**: Internal Nexus repositories
|
|
- APT: `http://remote-repo.sl.defence-elec.de:8081/repository/ubuntu`
|
|
- PyPI: `http://remote-repo.sl.defence-elec.de:8081/repository/proxypipy/`
|
|
|
|
### 2. Proxy Configuration
|
|
```bash
|
|
http_proxy="http://10.198.80.130:3128"
|
|
no_proxy="localhost,127.0.0.1,defence-elec.de,.defence-elec.de,sl.defence-elec.de,10.198.80.0/23,192.168.133.0/24,141.200.0.0/16,10.184.0.0/15,10.199.101.35,10.199.101.36,10.199.101.158"
|
|
```
|
|
|
|
### 3. Security Infrastructure
|
|
- CA certificates installed from `http://10.198.80.75/rme/SL-Netz.crt`
|
|
- APT signing keys from `http://10.198.80.75/rme/deb_and_rpm_signage_key.pub`
|
|
|
|
### 4. User Management
|
|
- User `ctc` (uid 1445, gid 1445) with home `/shd/CTC/TOOLS`
|
|
- User `rme` (uid 1001, gid 1001) with home `/home/rme`
|
|
|
|
### 5. Base Image
|
|
- **Before**: `ubuntu:26.04`
|
|
- **After**: `harbor.sl.defence-elec.de/proxydockerhub/library/ubuntu:26.04`
|
|
|
|
### 6. Python Environment
|
|
- Uses Python virtual environment (`/opt/venv`) instead of system pip
|
|
- Prevents conflicts with system packages
|
|
- Ensures reproducible aqtinstall version
|
|
|
|
### 7. Runtime Mount Points
|
|
- ArcGIS SDK: `/opt/ArcGIS/MapsSDK_Qt_300.0.0` (via `ARCGIS_SDK_ROOT`)
|
|
- RTI Connext DDS: `/opt/RTI` (via `DDS_PATH`)
|
|
|
|
## Build Instructions
|
|
|
|
### Standard Build
|
|
```bash
|
|
docker build -t legatus-qt6-framework:6.10.2 \
|
|
--build-arg RME_USERPASS=your_password \
|
|
external-dependencies/qt6-framework/
|
|
```
|
|
|
|
### Air-Gapped Build with Proxy
|
|
```bash
|
|
docker build -t legatus-qt6-framework:6.10.2 \
|
|
--build-arg RME_USERPASS=your_password \
|
|
--build-arg http_proxy="http://10.198.80.130:3128" \
|
|
--build-arg https_proxy="http://10.198.80.130:3128" \
|
|
external-dependencies/qt6-framework/
|
|
```
|
|
|
|
### Runtime Usage
|
|
```bash
|
|
docker run -it \
|
|
-v /path/to/ArcGIS:/opt/ArcGIS \
|
|
-v /path/to/rti:/opt/RTI \
|
|
legatus-qt6-framework:6.10.2
|
|
```
|
|
|
|
## Verification
|
|
|
|
After building, verify the installation:
|
|
```bash
|
|
docker run --rm legatus-qt6-framework:6.10.2 qmake6 --version
|
|
docker run --rm legatus-qt6-framework:6.10.2 cmake --find-package \
|
|
-DNAME=Qt6 -DCOMPILER_ID=GNU -DLANGUAGE=CXX -DMODE=EXIST
|
|
```
|
|
|
|
## Security Considerations
|
|
|
|
1. **Password Management**: Use Docker secrets or environment variables for `RME_USERPASS`
|
|
2. **Certificate Validation**: Ensure CA certificates are valid and up-to-date
|
|
3. **Network Isolation**: Container runs as non-root user `ctc`
|
|
4. **SBOM Generation**: Run `generate-sbom.sh` after build for compliance
|
|
|
|
## Related Files
|
|
|
|
- `Dockerfile` - Main Dockerfile with air-gapped configuration
|
|
- `Jenkinsfile` - CI/CD pipeline with SBOM generation
|
|
- `README.md` - Usage documentation
|
|
- `../scripts/generate-sbom.sh` - SBOM generation script
|