-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Updating DMOD Install Process and Docs #456
Changes from all commits
4a8cb63
a3ccaa4
73178ad
1890799
0fdd2ba
801b010
efcb20a
1b2ccb1
6bdc7d2
dd67e72
650a121
b56f23c
87deb09
33bc25a
5d59303
f0001d3
78e99f5
fa82eac
075f0ce
0ded5f9
0d77d07
30bc55d
07428be
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
nwm: | ||
version: | ||
2: '127.0.0.1:5000/nwm:2.0' | ||
latest: '127.0.0.1:5000/nwm:latest' | ||
reservoir: '127.0.0.1:5000/nwm-conus-reservoir' | ||
domains: | ||
croton_NY: | ||
local: './domains/example_case/NWM' | ||
run: '/nwm/domains' | ||
SixMileXCreek: | ||
local: './domains/SixMileCreek' | ||
run: './domains/SixMileCreek' | ||
test-domain: | ||
local: './domains' | ||
run: './domains' | ||
output: | ||
local: 'docker_host_volumes/output' | ||
run: '/nwm/output' | ||
|
||
ngen: | ||
version: | ||
1: '127.0.0.1:5000/ngen:latest' | ||
domains: | ||
local: './domains/ngen/data/' | ||
example-domain-A: | ||
run: '/ngen/data' | ||
|
||
output: | ||
local: 'docker_host_volumes/output' | ||
run: '/ngen/output' | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,25 +7,28 @@ The DMOD project has two related sets of dependencies: | |
|
||
## Usage Dependencies | ||
|
||
| Dependency | Constraints | Notes | | ||
|-------------------------|:--------------------|:----------------------------------------------------------------------------------------------------------------------------------------:| | ||
| Docker Engine | \>=20.10.16 | Docker Swarm support required (i.e., alternatives without this, like Podman, are insufficient) | | ||
| Docker Compose | \>=2.0.x | [See issue #133](https://github.com/NOAA-OWP/DMOD/issues/133); _deployx_ plugin now required as noted below | | ||
| Dependency | Constraints | Notes | | ||
|-------------------------|:--------------------|:--------------------------------------------------------------------------------------------------------------------------------------:| | ||
| Docker Engine | \>=20.10.16 | Docker Swarm support required (i.e., alternatives without this, like Podman, are insufficient) | | ||
| Docker Compose | \>=2.0.x | [See issue #133](https://github.com/NOAA-OWP/DMOD/issues/133); _deployx_ plugin now required as noted below | | ||
| _deployx_ Docker plugin | \>=0.0.1 | Available [here](https://github.com/aaraney/deployx). Results in some transitive dependencies not explicitly enumerated here (e.g., Go) | | ||
| Bash | \>=3.2.57 | | | ||
| OpenSSL / LibreSSL | \>=3.0.0 / \>=2.8.3 | | | ||
| Bash | \>=3.2.57 | | | ||
| OpenSSL / LibreSSL | \>=3.0.0 / \>=2.8.3 | | | ||
| MinIO CLI client | | | | ||
|
||
## Development Dependencies | ||
| Dependency | Constraints | Notes | | ||
|-------------------------------------------|:--------------------------------------------|:--------------------------------------------------:| | ||
| [Usage Dependencies](#usage-dependencies) | Same as above | | | ||
| Python | \>=3.8.x | | | ||
| Python Packages | See [requirements.txt](../requirements.txt) | Recommend installing in Python virtual environment | | ||
| Dependency | Constraints | Notes | | ||
|-------------------------------------------|:--------------------------------------------|:----------------------------------------------------------------------:| | ||
| [Usage Dependencies](#usage-dependencies) | Same as above | | | ||
| Python | \>=3.8.x | | | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Might want to bump that up to 3.9.x - we've got 3.9 somewhere in the pipeline (don't remember where). It's probably the github action. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The (perhaps unofficial) rule of thumb has been for DMOD to support all the versions of Python that are currently, officially supported, which includes 3.8 for now. Given ecosystems like RHEL's that aren't as quick to move to new versions, I think this could make a difference in community adoption (which this particular PR is also geared toward). I could have sworn we had a matrix in the Github Actions to support testing on a handful of different Python versions, including 3.8 and 3.9. Maybe I'm mixing that up with somewhere else and we should add it here. Regardless, if there is something specific for which we need to consider breaking with the current approach, then let's open a separate issue and formally consider it. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Ah, looks like I was remembering what Nels had set up in the ngen-cal project. We probably should adopt something similar. |
||
| Python Pip | Analogous to installed Python version | | | ||
| Python Development Headers/Libs | Analogous to installed Python version | Required for building certain Python dependency wheels; e.g., *pandas* | | ||
| C++ Compiler | | Required for building certain Python dependency wheels; e.g., *pandas* | | ||
| Python Packages | See [requirements.txt](../requirements.txt) | Recommend installing in Python virtual environment | | ||
|
||
## Dependency Caveats | ||
The strictness of these dependencies can vary in different situations, in a way that is hard to define concisely. E.g., one could probably avoid installing Bash by manually performing all the tasks handled by Bash scripts [^1]. Also, OpenSSL is not needed (locally) if all required SSL certificates can be provided from elsewhere. | ||
|
||
As a general rule, however, it is highly recommended these be regarded as strict dependencies unless a user fully understands where and why any exception applies. | ||
The strictness of these dependencies can vary in different situations, in a way that is hard to define concisely. E.g., one could probably avoid installing Bash by manually performing all the tasks handled by Bash scripts [^1]. Also, OpenSSL is not needed (locally) if all required SSL certificates can be provided from elsewhere. And somewhat related: multi-node deployments probably don't need ***all*** dependencies on the non-primary node(s). | ||
|
||
As a general rule, however, it is highly recommended to begin by installing all documented dependencies, until a user understands where and why any exception applies. | ||
|
||
[^1]: Or, even better, by writing other automation tools, which could then be contributed :-) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is probably worth tracking that both
ngen
andnwm
image names these are hard coded inservice.py
at the moment. Im sure we will refactor this in the future to be more flexible.