Docker Containerization/Build Process
Brief description of feature (~1 paragraph).
Motivation
Why will this be worthwhile feature for GridLAB-D™? Why now? Who will it help (developers or users)? How will it help them?
Feature Objective
What problem will this feature solve?
Developer Goals
What do the developers want to see out of this feature?
User Goals
What do the users hope to see out of this feature?
Functionality
How will devs/users interact with this feature? Will it be behind-the-scenes, a new module, method, or interface?
Class/Sequence Diagrams
If apropriate, document the feature using class or sequence diagrams.
classDiagram
GLD <|-- GLDModel
GLDModel <|-- GLDObjHolder
GLDObjHolder <|-- GLDObj
GLD: gld - GridLAB-D™
GLD: wd - Path
GLD: sim_running - bool
GLD: sim_time - DateTime
GLD:get_model()
GLD:set_install_root(path|str) -> None
GLD:get_install_root() -> str
GLD:get_executable_path() -> str
class GLDModel{
model: _GLDObjHolder
extendable: bool
_load_model() -> None
}
class GLDObjHolder{
_model: dict[_GLDObj]
extendable: bool
__init__()
__setitem__(key: str, value: Any) -> str
__getitem__(key: str) -> _GLDObj
__delitem__(key: str) -> str
__iter__()
__reversed__()
__contains__(key: str)
__repr__() -> str
}
class GLDObj{
_data = dict
__init__()
__setitem__(key: str, value: Any) -> str
__getitem__(key: str) -> Any
__iter__()
__reversed__()
__contains__(key: str)
__repr__() -> str
}
Itemized Subfeatures
- Determine expected release approach (Docker, binary, both?) - December 31, 2025 - revised to January 31, 2026
- Initial Docker build/setup - February 13, 2026 - revised to February 27, 2026
- Q: is GridLAB-D™ currently distributed in any way outside of a user cloning the github repo? If so, how is it currently done? If going with docker, are we wanting to put the Docker image into a registry like Docker Hub for distribution?
- A: Right now, we do technically offer precompiled binaries/installers for Windows/Mac/Linux, but that's been becoming especially challenging on Mac (and building from source is recommended). With a Docker image, my hope is we will publish it to a common repo like the Docker Hub.
- Integration of Docker publish/final release process into automation/CI/CD pipeline - March 15, 2026