Compare commits

..

1 Commits

Author SHA1 Message Date
Thierry Pouplier
eaa5b8b3ac feat(ai): add Dockerfile with curl, poppler-utils, imagemagick
Add Dockerfile for building custom Hermes Agent image.

Packages (PR 1 of 5):
- curl: HTTP client
- poppler-utils: PDF tools
- imagemagick: Image manipulation
2026-04-29 21:12:35 +00:00
3 changed files with 55 additions and 12 deletions

43
ai/Dockerfile Normal file
View File

@@ -0,0 +1,43 @@
FROM ghcr.io/astral-sh/uv:0.11.6-python3.13-trixie@sha256:b3c543b6c4f23a5f2df22866bd7857e5d304b67a564f4feab6ac22044dde719b AS uv_source
FROM tianon/gosu:1.19-trixie@sha256:3b176695959c71e123eb390d427efc665eeb561b1540e82679c15e992006b8b9 AS gosu_source
FROM debian:13.4
ENV PYTHONUNBUFFERED=1
ENV PLAYWRIGHT_BROWSERS_PATH=/opt/hermes/.playwright
RUN apt-get update && \
apt-get install -y --no-install-recommends \
build-essential nodejs npm python3 ripgrep ffmpeg gcc python3-dev libffi-dev procps git openssh-client docker-cli tini \
curl poppler-utils imagemagick && \
rm -rf /var/lib/apt/lists/*
RUN useradd -u 10000 -m -d /opt/data hermes
COPY --chmod=0755 --from=gosu_source /gosu /usr/local/bin/
COPY --chmod=0755 --from=uv_source /usr/local/bin/uv /usr/local/bin/uvx /usr/local/bin/
WORKDIR /opt/hermes
COPY package.json package-lock.json ./
COPY web/package.json web/package-lock.json web/
RUN npm install --prefer-offline --no-audit && \
npx playwright install --with-deps chromium --only-shell && \
(cd web && npm install --prefer-offline --no-audit) && \
npm cache clean --force
COPY --chown=hermes:hermes . .
RUN cd web && npm run build
USER root
RUN chmod -R a+rX /opt/hermes
RUN uv venv && \
uv pip install --no-cache-dir -e ".[all]"
ENV HERMES_WEB_DIST=/opt/hermes/hermes_cli/web_dist
ENV HERMES_HOME=/opt/data
ENV PATH="/opt/data/.local/bin:${PATH}"
VOLUME [ "/opt/data" ]
ENTRYPOINT [ "/usr/bin/tini", "-g", "--", "/opt/hermes/docker/entrypoint.sh" ]

View File

@@ -96,5 +96,5 @@ services:
networks:
backup_net:
driver: bridge
external: true
name: backup_net

View File

@@ -79,37 +79,37 @@ networks:
driver: bridge
name: traefik_backend
ai_net:
driver: bridge
external: true
name: ai_net
auth_net:
driver: bridge
external: true
name: auth_net
backup_net:
driver: bridge
external: true
name: backup_net
cloud_net:
driver: bridge
external: true
name: cloud_net
coms_net:
driver: bridge
external: true
name: coms_net
finance_net:
driver: bridge
external: true
name: finance_net
home_auto_net:
driver: bridge
external: true
name: home_auto_net
homepage_net:
driver: bridge
external: true
name: homepage_net
passman_net:
driver: bridge
external: true
name: passman_net
tak_net:
driver: bridge
external: true
name: tak_net
vc_net:
driver: bridge
external: true
name: vc_net
# duckdns: