Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: rootless container #250

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 16 additions & 6 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
FROM python:3.12.3-alpine as base
FROM python:3.12.3-alpine AS base
# UI dependencies
RUN apk add build-base pkgconfig cairo-dev nodejs npm
# Setup rootless image
RUN addgroup -g 1000 hyperglass && adduser -D -u 1000 -G hyperglass hyperglass
RUN mkdir /etc/hyperglass /opt/hyperglass
RUN chown -R hyperglass:hyperglass /etc/hyperglass /opt/hyperglass
USER 1000:1000
WORKDIR /opt/hyperglass
COPY --chown=1000:1000 . .
ENV HYPERGLASS_APP_PATH=/etc/hyperglass
ENV HYPERGLASS_HOST=0.0.0.0
ENV HYPERGLASS_PORT=8001
Expand All @@ -8,17 +16,19 @@ ENV HYPERGLASS_DEV_MODE=false
ENV HYPERGLASS_REDIS_HOST=redis
ENV HYPEGLASS_DISABLE_UI=true
ENV HYPERGLASS_CONTAINER=true
COPY . .

FROM base as ui
FROM base AS ui
# Set NPM global install path to the home directory so permissions are correct
RUN mkdir ~/.npm-global ~/.npm-store
RUN npm config set prefix "~/.npm-global"
ENV PATH="/home/hyperglass/.npm-global/bin:${PATH}"
WORKDIR /opt/hyperglass/hyperglass/ui
RUN apk add build-base pkgconfig cairo-dev nodejs npm
RUN npm install -g pnpm
RUN pnpm install -P

FROM ui as hyperglass
FROM ui AS hyperglass
WORKDIR /opt/hyperglass
RUN pip3 install -e .
RUN pip3 install --user --no-cache-dir -e .

EXPOSE ${HYPERGLASS_PORT}
CMD ["python3", "-m", "hyperglass.console", "start"]
Loading