fix(docker): align compose examples with single-container dashboard pattern#36235
Open
hulet wants to merge 1 commit into
Open
fix(docker): align compose examples with single-container dashboard pattern#36235hulet wants to merge 1 commit into
hulet wants to merge 1 commit into
Conversation
…attern Commit 5671059 ("feat(docker): launch dashboard as side-process via HERMES_DASHBOARD=1") collapsed the documented dashboard deployment model into a single container — its message reads: - Rewrite the "Running the dashboard" doc section around the new single-container pattern. Drops the previously-documented dashboard-as-its-own-container setup — that pattern relied on the deprecated env vars for cross-container gateway-liveness detection, and without them the dashboard would permanently report the gateway as "not running". - Collapse the two-service Compose example (gateway + dashboard container) into a single service with HERMES_DASHBOARD=1. Removes the now-unnecessary bridge network and `depends_on`. The docs and entrypoint were updated, but docker-compose.yml and docker-compose.windows.yml were not. The user-guide docker page now states: "Running the dashboard as a separate container is not supported: its gateway-liveness detection requires a shared PID namespace with the gateway process." Both example compose files still ship a separate dashboard container, contradicting that. This finishes the collapse the original commit message promised: - Removes the standalone dashboard service from both files - Renames the remaining service from `gateway` to `hermes`, matching the canonical compose example shown in website/docs/user-guide/docker.md - Adds HERMES_DASHBOARD=1 to launch the supervised dashboard sibling - Linux: keeps the dashboard bound to 127.0.0.1 via HERMES_DASHBOARD_HOST to preserve the old loopback-only behavior - Windows: keeps the old `--insecure` opt-out via HERMES_DASHBOARD_INSECURE=1 so the dashboard doesn't fail closed at startup with the default 0.0.0.0 in-container bind - Fixes the local-build image tag in docker-compose.yml from the untagged `hermes-agent` to `nousresearch/hermes-agent`, matching the published image name so the example file actually works as-is - `--no-open` is now hardcoded in docker/s6-rc.d/dashboard/run, so it no longer needs to be on the compose command line Likely closes / reduces noise on several open issues that look like downstream consequences of users copying the stale two-service example: - NousResearch#26181 (dashboard reports gateway 'stopped' on Docker / PID-1) - NousResearch#34457, NousResearch#34480 (s6-log lock collision in multi-container setups with shared /opt/data) - NousResearch#23402 (HERMES_UID permissions issue with the separate dashboard) - NousResearch#20739 (dashboard chat unusable in Docker — four compounding bugs) Tested on a Debian Linux homelab host running the resulting docker-compose.yml against a fresh build of the image; the supervised dashboard came up on 127.0.0.1:9119 with the gateway visible as running. Windows variant not tested (no Windows host); the diff is the mirror of the Linux change minus network_mode: host plus the existing 127.0.0.1:9119:9119 port mapping.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Updates
docker-compose.ymlanddocker-compose.windows.ymlto use the single-container dashboard pattern that commit 5671059f6 introduced and the user-guide docs already document. Also fixes a brokenimage:tag indocker-compose.yml.Why
Commit 5671059 ("feat(docker): launch dashboard as side-process via HERMES_DASHBOARD=1") explicitly said in its message:
The docs, entrypoint script, and
s6-rc.d/dashboard/runsupervisor were updated in that commit, butdocker-compose.ymlanddocker-compose.windows.ymlwere not. The compose files still ship a separate dashboard container — contradicting the user-guide statement atwebsite/docs/user-guide/docker.md(still inmain):This PR finishes the collapse the original commit message promised.
Changes
dashboard:service from both files (no more bridge network, no moredepends_on).gateway→hermesto match the canonical compose example inwebsite/docs/user-guide/docker.md.HERMES_DASHBOARD=1to launch the supervised dashboard as a sibling s6 service inside the same container.docker-compose.yml): keeps the dashboard bound to127.0.0.1viaHERMES_DASHBOARD_HOSTso the loopback-only behavior of the old separate dashboard service is preserved (undernetwork_mode: host, container loopback == host loopback).docker-compose.windows.yml): keeps the old--insecureintent viaHERMES_DASHBOARD_INSECURE=1. The default in-container bind is0.0.0.0; without this opt-out the dashboard would fail closed at startup since noDashboardAuthProvideris registered. The existing127.0.0.1:9119:9119port mapping restricts the published port to host loopback.docker-compose.ymlfrom the unprefixedhermes-agenttonousresearch/hermes-agent, matching the published image name so the example file works as-is.--no-openis now hardcoded indocker/s6-rc.d/dashboard/run, so it no longer needs to appear on the compose command line.How to test
Linux /
docker-compose.yml:Windows /
docker-compose.windows.yml:docker compose -f docker-compose.windows.yml up -d # Dashboard reachable at http://127.0.0.1:9119 (loopback only, due to the port mapping)What I tested on
Tested on a Debian Linux homelab host. I ran the updated
docker-compose.ymlas-is using the pullednousresearch/hermes-agentimage. The supervised dashboard came up on127.0.0.1:9119and reported the gateway as running.docker-compose.windows.ymlnot tested directly (no Windows host available); the diff is the structural mirror of the Linux change minusnetwork_mode: hostplus the existing port mapping.Related issues
Possibly closes or reduces noise on several open issues that look like downstream consequences of users copying the stale two-service example:
/api/statusreports gateway 'stopped' on Docker (PID-1)/opt/data