This repository was archived by the owner on Feb 18, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathDockerfile
More file actions
70 lines (53 loc) · 2.03 KB
/
Dockerfile
File metadata and controls
70 lines (53 loc) · 2.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
FROM python:3.11-alpine3.20 AS builder
COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv
LABEL org.opencontainers.image.title="graphsense-rest"
LABEL org.opencontainers.image.maintainer="contact@ikna.io"
LABEL org.opencontainers.image.url="https://www.ikna.io/"
LABEL org.opencontainers.image.description="Dockerized Graphsense REST interface"
LABEL org.opencontainers.image.source="https://github.com/graphsense/graphsense-REST"
ENV UV_COMPILE_BYTECODE=1
ENV UV_LINK_MODE=copy
ENV NUM_WORKERS=
ENV NUM_THREADS=
ENV CONFIG_FILE=./instance/config.yaml
# copy code
RUN mkdir -p /srv/graphsense-rest/
COPY gsrest /srv/graphsense-rest/gsrest
COPY openapi_server /srv/graphsense-rest/openapi_server
COPY pyproject.toml /srv/graphsense-rest/
COPY uv.lock /srv/graphsense-rest/
COPY README.md /srv/graphsense-rest/
RUN apk --no-cache --update add \
bash \
shadow \
git \
postgresql-dev \
libevdev-dev \
libev
# create non root user
# RUN useradd -r -m -u 10000 dockeruser
# RUN chown dockeruser /srv/graphsense-rest
# USER dockeruser
WORKDIR /srv/graphsense-rest
# Install gsrest and dependencies
RUN uv sync --frozen --no-dev
RUN uv pip install gunicorn pip
FROM python:3.11-alpine3.20
RUN apk add --update sudo
RUN adduser -S -D -u 10000 dockeruser
COPY --from=builder --chown=dockeruser:dockeruser /srv/graphsense-rest/ /srv/graphsense-rest/
COPY --chown=dockeruser:dockeruser docker/gunicorn-conf.py /srv/graphsense-rest/gunicorn-conf.py
ENV PATH="/srv/graphsense-rest/.venv/bin:$PATH"
ENV PYTHONPATH=/srv/graphsense-rest
ENV NUM_WORKERS=
ENV NUM_THREADS=
ENV CONFIG_FILE=./instance/config.yaml
ENV GIT_PYTHON_REFRESH=quiet
USER dockeruser
WORKDIR /srv/graphsense-rest
RUN mkdir -p gsrest/plugins
# RUN find gsrest/plugins -name requirements.txt -exec uv pip install -r {} \;
CMD find gsrest/plugins -name requirements.txt -exec /srv/graphsense-rest/.venv/bin/python -m pip install -r {} \; && gunicorn \
-c /srv/graphsense-rest/gunicorn-conf.py \
"gsrest:main('${CONFIG_FILE}')" \
--worker-class aiohttp.GunicornWebWorker