clone

a self-hosted multitenant nostr relay with sites, file storage, git hosting, and inbox and outbox delivery

main
tinyrelay / labs / hermes / Dockerfile
Dockerfile 2.7K
1# syntax=docker/dockerfile:12FROM golang:1.27.1-bookworm AS tiny-build3WORKDIR /src4COPY go.mod go.sum ./5RUN go mod download6COPY cmd ./cmd7COPY internal ./internal8COPY protocol ./protocol9COPY tinyrelay ./tinyrelay10COPY tinygit ./tinygit11COPY tinyclient ./tinyclient12COPY tinyagent/*.go ./tinyagent/13COPY tinyagent/client ./tinyagent/client14RUN CGO_ENABLED=0 go build -mod=readonly -trimpath -o /out/tiny ./cmd/tiny && \15 CGO_ENABLED=0 go build -mod=readonly -trimpath -o /out/tinyagent ./tinyagent1617FROM ghcr.io/astral-sh/uv:0.11.6-python3.13-trixie AS hermes-base18ARG HERMES_REVISION=1ad89ac018f26a4f21817ebf37bb09f508656d6319ARG HERMES_ARCHIVE_SHA256=388837b0bacb37381aafeb018543accc398f9c3e88931859f8f7a35c999d4a7c20RUN apt-get update && apt-get install --no-install-recommends -y ca-certificates curl git && \21 rm -rf /var/lib/apt/lists/*22WORKDIR /opt/hermes23RUN curl --fail --location --retry 3 \24 "https://codeload.github.com/NousResearch/hermes-agent/tar.gz/${HERMES_REVISION}" -o /tmp/hermes.tar.gz && \25 printf '%s /tmp/hermes.tar.gz\n' "$HERMES_ARCHIVE_SHA256" | sha256sum -c - && \26 tar -xzf /tmp/hermes.tar.gz --strip-components=1 -C /opt/hermes && \27 rm /tmp/hermes.tar.gz && \28 printf '%s\n' "$HERMES_REVISION" > /opt/hermes-revision29COPY labs/hermes/source_check.py /lab/source_check.py30RUN python /lab/source_check.py record && \31 uv sync --frozen --no-dev --no-install-project --python /usr/local/bin/python3.13 && \32 python /lab/source_check.py verify33ENV PATH="/opt/hermes/.venv/bin:$PATH" \34 PYTHONPATH=/opt/hermes \35 PYTHONUNBUFFERED=1 \36 PYTHONDONTWRITEBYTECODE=1 \37 HERMES_HOME=/home/hermes/.hermes38RUN useradd --create-home --uid 10001 hermes3940FROM hermes-base AS hermes41COPY --from=tiny-build /out/tinyagent /usr/local/bin/tinyagent42COPY tinyagent/hermes /opt/tinyagent43COPY labs/hermes /lab44USER hermes45ENTRYPOINT ["python", "/lab/start_hermes.py"]4647FROM hermes AS adapter-test48USER root49RUN uv pip install --python /opt/hermes/.venv/bin/python pytest==9.1.1 pytest-asyncio==1.3.050USER hermes51ENV HERMES_HOME=/tmp/hermes-test52ENTRYPOINT ["python", "-m", "pytest", "-q", "-p", "no:cacheprovider", "--tb=short", "/opt/tinyagent/tests"]5354FROM python:3.13-slim-bookworm AS tools55COPY --from=tiny-build /out/tinyagent /usr/local/bin/tinyagent56COPY labs/hermes /lab57ENV PYTHONUNBUFFERED=1 PYTHONDONTWRITEBYTECODE=158ENTRYPOINT ["python"]5960FROM python:3.13-slim-bookworm AS tiny61COPY --from=tiny-build /out/tiny /usr/local/bin/tiny62COPY labs/hermes /lab63RUN useradd --create-home --uid 10001 relay && mkdir /data && chown relay /data64USER relay65ENTRYPOINT ["python", "/lab/start_tiny.py"]6667FROM python:3.13-slim-bookworm AS model68COPY labs/hermes/model.py /lab/model.py69USER 10001:1000170ENTRYPOINT ["python", "/lab/model.py"]