diff --git a/.github/workflows/klipperscreen.yaml b/.github/workflows/klipperscreen.yaml new file mode 100644 index 0000000..dc004d0 --- /dev/null +++ b/.github/workflows/klipperscreen.yaml @@ -0,0 +1,13 @@ +name: 'Image: KlipperScreen' +on: + workflow_dispatch: + schedule: + - cron: '0 2 * * *' +jobs: + build: + uses: mkuf/prind/.github/workflows/image-workflow.yaml@main + with: + app: klipperscreen + secrets: + DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} + DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} \ No newline at end of file diff --git a/config/klipperscreen.conf b/config/klipperscreen.conf new file mode 100644 index 0000000..b3fb415 --- /dev/null +++ b/config/klipperscreen.conf @@ -0,0 +1,2 @@ +[printer prind] +moonraker_port: 80 \ No newline at end of file diff --git a/docker-compose.yaml b/docker-compose.yaml index 4cca293..931744d 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -124,6 +124,24 @@ services: - "traefik.http.routers.mainsail.rule=PathPrefix(`/`)" - "traefik.http.routers.mainsail.entrypoints=web" + klipperscreen: + image: mkuf/klipperscreen:nightly + container_name: klipperscreen + restart: unless-stopped + network_mode: host + depends_on: + moonraker: + condition: service_started + profiles: + - klipperscreen + command: + - "-c" + - "cfg/klipperscreen.conf" + volumes: + - ./config:/opt/cfg + - /tmp/.X11-unix:/tmp/.X11-unix + - /home/kiosk/.Xauthority:/tmp/.Xauthority + ## Accompanying Services/Infra ## diff --git a/docker/klipperscreen/Dockerfile b/docker/klipperscreen/Dockerfile new file mode 100644 index 0000000..b080020 --- /dev/null +++ b/docker/klipperscreen/Dockerfile @@ -0,0 +1,43 @@ +FROM python:3 as build + +ARG REPO=https://github.com/jordanruthe/KlipperScreen +ARG VERSION=master + +RUN apt update \ + && apt install -y \ + libgirepository1.0-dev \ + && apt clean + +WORKDIR /opt +RUN git clone ${REPO} klipperscreen \ + && cd klipperscreen \ + && git checkout ${VERSION} + +RUN python -m venv venv \ + && venv/bin/pip install -r klipperscreen/scripts/KlipperScreen-requirements.txt + +FROM python:3-slim as run + +RUN apt update \ + && apt install -y \ + libglib2.0-0 \ + libgirepository-1.0-1 \ + gir1.2-gtk-3.0 \ + && apt clean + +WORKDIR /opt +COPY --from=build /opt/klipperscreen ./klipperscreen +COPY --from=build /opt/venv ./venv + +RUN mkdir cfg +RUN groupadd klipperscreen --gid 1000 \ + && useradd klipperscreen --uid 1000 --gid klipperscreen \ + && chown -R klipperscreen:klipperscreen /opt/* + +## Start klipperscreen +USER klipperscreen +ENV XAUTHORITY=/tmp/.Xauthority +ENV DISPLAY=:0 +VOLUME ["/opt/cfg"] +ENTRYPOINT ["/opt/venv/bin/python", "klipperscreen/screen.py"] +CMD ["-c", "cfg/klipperscreen.conf"] \ No newline at end of file