diff --git a/docker-compose.yaml b/docker-compose.yaml index 6497fe0..6809acd 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -24,6 +24,7 @@ services: build: dockerfile: moonraker.Dockerfile context: . + target: moonraker container_name: moonraker restart: unless-stopped volumes: diff --git a/moonraker.Dockerfile b/moonraker.Dockerfile index 919a5f0..ae1d7e4 100644 --- a/moonraker.Dockerfile +++ b/moonraker.Dockerfile @@ -1,11 +1,21 @@ -FROM python:3 +## Get Code and Build venv +FROM python:3 as build ARG REPO=https://github.com/Arksine/moonraker ARG VERSION=master WORKDIR /opt -## Install Requirements +RUN git clone ${REPO} moonraker \ + && cd moonraker \ + && git checkout ${VERSION} + +RUN python -m venv venv \ + && venv/bin/pip install -r moonraker/scripts/moonraker-requirements.txt + +## Runtime Image +FROM python:3-slim as moonraker + RUN apt update \ && apt install -y \ libopenjp2-7 \ @@ -15,27 +25,21 @@ RUN apt update \ libssl-dev \ liblmdb0 \ libsodium-dev \ - zlib1g-dev + zlib1g-dev \ + && apt clean -## Download moonraker -RUN git clone ${REPO} moonraker \ - && cd moonraker \ - && git checkout ${VERSION} +WORKDIR /opt +COPY --from=build /opt/moonraker ./moonraker +COPY --from=build /opt/venv ./venv -## Setup Python -RUN pip install -r moonraker/scripts/moonraker-requirements.txt - -## Create Direcories RUN mkdir run cfg gcode db - -## User & Permissions RUN groupadd moonraker --gid 1000 \ && useradd moonraker --uid 1000 --gid moonraker \ && usermod moonraker --append --groups dialout \ - && chown -R moonraker:moonraker moonraker run cfg gcode db + && chown -R moonraker:moonraker /opt/* ## Start Klippy USER moonraker -ENTRYPOINT ["python"] +ENTRYPOINT ["/opt/venv/bin/python"] CMD ["moonraker/moonraker/moonraker.py", "-c", "cfg/moonraker.cfg"]