feat: init
Main Release / hadolint (push) Successful in 7s
Main Release / build (push) Successful in 2m34s
Main Release / tag (push) Successful in 9s
Tag Release / hadolint (push) Successful in 12s
Tag Release / build (push) Successful in 2m53s
Tag Release / build-push (push) Successful in 3m29s
Main Release / hadolint (push) Successful in 7s
Main Release / build (push) Successful in 2m34s
Main Release / tag (push) Successful in 9s
Tag Release / hadolint (push) Successful in 12s
Tag Release / build (push) Successful in 2m53s
Tag Release / build-push (push) Successful in 3m29s
This commit is contained in:
+94
@@ -0,0 +1,94 @@
|
||||
# Build stage: clone and install Hermes Agent + WebUI dependencies
|
||||
FROM python:3.12-slim AS builder
|
||||
|
||||
WORKDIR /build
|
||||
|
||||
# hadolint ignore=DL3008
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
ca-certificates \
|
||||
curl \
|
||||
git \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Install uv system-wide
|
||||
# hadolint ignore=DL4006
|
||||
RUN curl -LsSf https://astral.sh/uv/install.sh | env UV_INSTALL_DIR=/usr/local/bin sh
|
||||
|
||||
# Clone Hermes Agent at a pinned commit
|
||||
ARG HERMES_AGENT_VERSION=v2026.6.5
|
||||
RUN git clone --depth 1 --branch ${HERMES_AGENT_VERSION} \
|
||||
https://github.com/NousResearch/hermes-agent.git /build/hermes-agent
|
||||
|
||||
# Clone Hermes WebUI at a pinned commit
|
||||
ARG HERMES_WEBUI_VERSION=v0.51.350
|
||||
RUN git clone --depth 1 --branch ${HERMES_WEBUI_VERSION} \
|
||||
https://github.com/nesquena/hermes-webui.git /build/hermes-webui
|
||||
|
||||
# Create a shared venv and install both projects
|
||||
# hadolint ignore=DL3059
|
||||
RUN uv venv /build/venv
|
||||
ENV VIRTUAL_ENV=/build/venv
|
||||
ENV PATH="/build/venv/bin:$PATH"
|
||||
|
||||
# Install hermes-agent with all extras (includes ML/agent deps)
|
||||
# hadolint ignore=DL3013,DL3059
|
||||
RUN uv pip install \
|
||||
"/build/hermes-agent[all]"
|
||||
|
||||
# Install hermes-webui deps (pyyaml + cryptography)
|
||||
# hadolint ignore=DL3059
|
||||
RUN uv pip install \
|
||||
-r /build/hermes-webui/requirements.txt
|
||||
|
||||
# Install uv in the venv so the webui server can use it for profile/skill management
|
||||
# hadolint ignore=DL3059
|
||||
RUN uv pip install \
|
||||
"uv>=0.6.0"
|
||||
|
||||
# Runtime stage
|
||||
FROM python:3.12-slim
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# hadolint ignore=DL3008
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
ca-certificates \
|
||||
curl \
|
||||
git \
|
||||
openssh-client \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Copy the virtual environment and source trees from builder
|
||||
COPY --from=builder /build/venv /opt/venv
|
||||
COPY --from=builder /build/hermes-agent /opt/hermes-agent
|
||||
COPY --from=builder /build/hermes-webui /app
|
||||
|
||||
# Set environment
|
||||
ENV PATH="/opt/venv/bin:$PATH" \
|
||||
VIRTUAL_ENV=/opt/venv \
|
||||
PYTHONDONTWRITEBYTECODE=1 \
|
||||
PYTHONUNBUFFERED=1 \
|
||||
PYTHONIOENCODING=utf-8
|
||||
|
||||
# Tell the WebUI where to find the agent
|
||||
ENV HERMES_WEBUI_AGENT_DIR=/opt/hermes-agent \
|
||||
HERMES_WEBUI_HOST=0.0.0.0 \
|
||||
HERMES_WEBUI_PORT=8787 \
|
||||
HERMES_WEBUI_STATE_DIR=/home/hermes/.hermes/webui \
|
||||
HERMES_WEBUI_DEFAULT_WORKSPACE=/workspace \
|
||||
HERMES_HOME=/home/hermes/.hermes
|
||||
|
||||
# Create non-root user
|
||||
RUN useradd --create-home --shell /bin/bash hermes \
|
||||
&& mkdir -p /workspace \
|
||||
&& chown -R hermes:hermes /app /opt/venv /opt/hermes-agent /workspace /home/hermes
|
||||
|
||||
USER hermes
|
||||
|
||||
EXPOSE 8787
|
||||
|
||||
HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \
|
||||
CMD curl -f http://localhost:8787/health || exit 1
|
||||
|
||||
# Run the WebUI server (which runs Hermes Agent in-process)
|
||||
CMD ["python", "/app/server.py"]
|
||||
Reference in New Issue
Block a user