Skip to content

feat: clone-and-run docker compose for standalone Handle server - #3

Closed
MatusBeke wants to merge 2 commits into
dataquest-dev:masterfrom
MatusBeke:feat/clone-and-run-compose
Closed

feat: clone-and-run docker compose for standalone Handle server#3
MatusBeke wants to merge 2 commits into
dataquest-dev:masterfrom
MatusBeke:feat/clone-and-run-compose

Conversation

@MatusBeke

Copy link
Copy Markdown

What

Makes the repo clone & run: clone it, set one variable, docker compose up, and
the Handle server starts as a standalone service wired to a DSpace backend.

git clone --recurse-submodules https://github.com/dataquest-dev/docker-handle-server.git
cd docker-handle-server
cp .env.example .env          # set DSPACE_HANDLE_ENDPOINT to your backend (…/server)
docker compose up -d

The Handle server resolves through the backend's remote-resolver REST endpoints and
never touches the database directly:

client -> handle-server(:8000) --HTTP /server/resolve--> DSpace backend --> database

Changes

File Change
docker-compose.yml new — single-service compose; writes the plugin endpoint from DSPACE_HANDLE_ENDPOINT, waits for the backend, then starts the Handle server
.env.example new — backend endpoint + published ports
assets/config/config.dct default to the remote-resolver storage plugin (storage_class = MultiRemoteDSpaceRepositoryHandlePlugin) so resolution works out of the box
.gitattributes force LF on the extensionless hdl* launchers (they were checked out as CRLF on Windows, breaking the shebang → docker build failed with hdl-server: not found, exit 127)
Readme.md document the clone-and-run flow

Backend requirement

The backend must expose the remote-resolver endpoints:

handle.remote-resolver.enabled = true

Tested

  • docker compose up -d against a running DSpace 7.5 backend: the Handle server loaded
    all prefixes from the backend and resolved handles (responseCode: 1).
  • Verified in real time — inserting a fresh handle into Postgres made it immediately
    resolvable through the standalone Handle server.

Notes / follow-ups (not in this PR)

  • Per-deployment keys should be generated with hdl-setup-server (the committed
    assets/config/*.bin are placeholders).
  • Customer prefix + handle.net registration are deployment steps.

MatusBeke and others added 2 commits August 14, 2026 16:37
The hdl* launchers under assets/handle-9.3.1/bin/ have no extension, so the
existing '*.sh eol=lf' rule misses them. On a Windows clone they check out as
CRLF, the shebang breaks and 'docker build' fails with 'hdl-server: not found'
(exit 127). Force LF for these paths.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Adds docker-compose.yml + .env.example so the repo can be cloned and started
with a single 'docker compose up'. The container writes the resolver endpoint
from DSPACE_HANDLE_ENDPOINT, waits for the backend to be reachable, then starts
the Handle server. config.dct now defaults to the remote-resolver storage
plugin so resolution works out of the box. README documents the flow.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@MatusBeke

Copy link
Copy Markdown
Author

Closing — not needed. The Handle-server separation is delivered by dataquest-dev/dspace-angular#1455, which works with the current published image (it patches the resolver config at container start). Changes to this image repo were not requested.

@MatusBeke MatusBeke closed this Aug 14, 2026
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.

1 participant