Repository navigation
Oracle Container Images
This page covers the Oracle Autonomous Database (ADB) variant of the TMI server container image (Dockerfile.server-oracle). Oracle ADB is a fully supported database backend; OCI itself is no longer a supported deployment target (see Terraform-Deployment for AWS and Local-Development-Cluster for local clusters).
| Property | Value |
|---|---|
| Dockerfile | Dockerfile.server-oracle |
| Base | Oracle Linux 9 (builder), Oracle Linux 9-slim (runtime) |
| Database driver | godror via Oracle Instant Client 23ai (CGO, built with -tags oracle) |
| Runtime user | non-root tmi
|
| Port | 8080 |
| Wallet mount |
/wallet (read-only mount; wallet.zip is extracted at startup) |
The image is selected automatically by the build script when --db-backend oracle-adb is used. The Redis image is not Oracle-specific; it is built from Dockerfile.redis.
Container builds are managed by scripts/build-app-containers.py:
# Server image with Oracle ADB support, built locally
uv run scripts/build-app-containers.py --target local --db-backend oracle-adb --component server
# Same, with Grype vulnerability scan and Syft SBOM
uv run scripts/build-app-containers.py --target local --db-backend oracle-adb --component server --scanOptions: --target is local or aws; --component is server, redis, extractor, chunkembed, controller, or all; --arch is arm64, amd64, or both; --db-backend is postgresql (default) or oracle-adb; plus --registry, --push, --scan, --scan-only, and --no-cache. Multi-arch (--arch both) builds require --push.
Related Make targets: build-app, build-app-scan, build-app-aws, build-server-container, build-redis-container, build-all, and scan-containers. These use the default PostgreSQL backend; use the script directly for the Oracle variant.
| Variable | Required | Description |
|---|---|---|
TMI_DATABASE_URL |
Yes | e.g. oracle://user:password@tns_alias
|
TMI_ORACLE_WALLET_LOCATION |
No | Set automatically by the entrypoint to /tmp/wallet after extraction |
TMI_REDIS_URL |
Yes | e.g. redis://:password@localhost:6379/0 (or TMI_REDIS_HOST/TMI_REDIS_PORT/TMI_REDIS_PASSWORD/TMI_REDIS_DB) |
See Configuration-Reference for the full list.
docker run -p 8080:8080 \
-v /path/to/wallet:/wallet:ro \
-e TMI_DATABASE_URL=oracle://your_user:your_password@your_tns_alias \
-e TMI_REDIS_URL=redis://host.docker.internal:6379 \
<your-oracle-server-image>The entrypoint extracts wallet.zip from the /wallet mount to /tmp/wallet, rewrites the DIRECTORY path in sqlnet.ora, and sets TNS_ADMIN and TMI_ORACLE_WALLET_LOCATION. For a local dev server against Oracle ADB, make dev-up DB=oracle is also available (see Local-Development-Cluster).
- Download the wallet ZIP for your Autonomous Database from the Oracle Cloud Console (DB Connection > Download Wallet).
- Put
wallet.zipin a directory and mount it read-only at/wallet.
You can instead pre-extract the wallet; it should contain tnsnames.ora, sqlnet.ora, and cwallet.sso.
- Non-root runtime user; security patches applied during build; minimal runtime dependencies.
- Keep wallet files and database credentials out of images and version control; mount the wallet read-only.
- Scan images with
--scan(Grype + Syft SBOM) ormake scan-containers; reports (SARIF, text, CycloneDX) are written tosecurity-reports/.
- Verify the wallet is mounted at
/walletand containswallet.zip(the entrypoint logs the extraction). - Check the TNS alias in
TMI_DATABASE_URLmatchestnsnames.ora. - Ensure
TNS_ADMINpoints at the extracted wallet directory. - Verify the database user has the required permissions.
The Dockerfile auto-detects architecture (amd64/arm64). Cross-platform builds need Docker buildx.
- Database-Setup -- Database installation and configuration
- Deploying-TMI-Server -- General server deployment
- Terraform-Deployment -- AWS deployment
- Configuration-Reference -- Configuration variables
- Using TMI for Threat Modeling
- Accessing TMI
- Authentication
- Identity Linking
- Creating Your First Threat Model
- Surveys and Intake
- Understanding the User Interface
- Working with Data Flow Diagrams
- Managing Threats
- Collaborative Threat Modeling
- Using Notes and Documentation
- Timmy AI Assistant
- Metadata and Extensions
- Planning Your Deployment
- Terraform Deployment (AWS)
- Deploying TMI Server
- Oracle Container Images
- Deploying TMI Web Application
- Setting Up Authentication
- Database Setup
- Bootstrapping Production
- Component Integration
- Post-Deployment
- Branding and Customization
- Monitoring and Health
- Cloud Logging
- Configuring Local Development
- Managing Operational Settings
- Content Extractors - Limits and Overrides
- Database Operations
- Database Security Strategies
- Transaction Isolation
- Oracle Content Feedback FK Cleanup
- Security Operations
- Secret Rotation
- Performance and Scaling
- Maintenance Tasks
- Getting Started with Development
- Local Development Cluster
- Architecture and Design
- API Integration
- Testing
- Contributing
- Extending TMI
- Dependency Upgrade Plans
- DFD Graphing Library Reference
- Migration Instructions
- Issue Tracker Integration
- Webhook Integration
- Addon System
- MCP Integration
- Delegated Content Providers
- Setting Up Google Content Providers
- API Clients
- API Client Maintenance
- Database Tool Reference
- TMI Terraform Analyzer
- WebSocket Test Harness