Skip to content

docker: add canonical docker images, devcontainer support, and offline export workflow#82

Merged
jgoppert merged 1 commit intomainfrom
pr_docker_ci
Mar 12, 2026
Merged

docker: add canonical docker images, devcontainer support, and offline export workflow#82
jgoppert merged 1 commit intomainfrom
pr_docker_ci

Conversation

@jgoppert
Copy link
Member

@jgoppert jgoppert commented Mar 11, 2026

Closes #80

Summary

This PR adds the first complete Docker packaging stack for Rumoca and wires it into CI
and release workflows without bloating the main CI path.

It introduces a canonical image hierarchy:

  • foundation: minimal shared base layer
  • core: Rumoca runtime with Tier 1 backend dependencies
  • ci: core plus OpenModelica and CI-only validation tooling
  • dev: developer image with Rust, Node, wasm tooling, Jupyter, and OMC

It also adds:

  • VS Code devcontainer wiring
  • committed smoke tests for foundation, core, ci, dev, and offline dev round-trip
  • offline export/load scripts, with dev as the default exported target
  • a dedicated Docker publish workflow for nightly/manual/release publishing to GHCR
  • release tarball upload for the canonical offline dev image

What changed

Images

  • Added packaging/docker/Dockerfile
  • Added packaged entrypoint and Docker docs under packaging/docker/
  • Added image targets:
    • foundation
    • core
    • ci
    • dev

Runtime/tooling content

  • core includes Tier 1 backend runtimes:
    • CasADi
    • Julia / SciML / ModelingToolkit
    • ONNX / ONNX Runtime
    • PyTorch
    • SymPy
  • ci adds OpenModelica
  • dev adds:
    • Rust nightly toolchain
    • rustfmt, clippy, rust-src
    • wasm32-unknown-unknown
    • wasm-bindgen-cli
    • wasm-pack
    • Node/npm
    • Jupyter / Notebook / ipykernel
    • contributor native build tools

Smoke coverage

  • Added committed smoke scripts for:
    • foundation
    • core
    • ci
    • dev
    • offline dev export/load round-trip
  • ci smoke includes a real offline OpenModelica compile/simulate check
  • core smoke includes:
    • Python backend import/runtime checks
    • Julia ModelingToolkit/SciML DAE smoke

Devcontainer

  • Added .devcontainer/devcontainer.json
  • Points at the packaged dev image target
  • Configures Python, Julia, shell, and baseline VS Code extensions

Offline workflow

  • Added:
    • packaging/docker/export-image.sh
    • packaging/docker/load-image.sh
  • Default export target is dev
  • Supports canonical export/import of foundation, core, ci, and dev

CI / publishing

  • Added Docker verification job in ci.yml for packaged ci smoke
  • Added separate docker-publish.yml workflow for:
    • nightly/manual branch image publishing
    • tagged release image publishing
    • release dev tarball upload
  • Kept Docker publishing out of the main CI/release critical path

Size notes

Measured image sizes during validation:

  • foundation: ~156 MB
  • core: ~4.30 GB
  • ci: ~4.99 GB
  • dev: ~6.59 GB

The stack is intentionally split so the heavier tooling does not inflate the baseline
runtime image.

Validation

Ran locally during this series:

  • bash packaging/docker/smoke/foundation.sh
  • bash packaging/docker/smoke/core.sh
  • bash packaging/docker/smoke/ci.sh
  • bash packaging/docker/smoke/dev.sh
  • bash packaging/docker/smoke/offline-dev.sh

Also validated:

  • docker-publish.yml and ci.yml workflow syntax
  • offline export/import of the canonical dev image
  • real OMC execution inside the ci image

Not in this PR

  • multi-arch image support
  • GPU-specific dev image
  • GHCR/release refinements beyond the current nightly/manual/tagged flow

Those are deferred to later roadmap slices.

@jgoppert jgoppert self-assigned this Mar 11, 2026
Signed-off-by: James Goppert <james.goppert@gmail.com>
@jgoppert jgoppert merged commit 768fdc9 into main Mar 12, 2026
18 checks passed
@jgoppert jgoppert deleted the pr_docker_ci branch March 12, 2026 02:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature: Docker ci/ dev container support for template ci testing (casadi, jax, julia, onnx, etc.)

1 participant