150 lines
5.5 KiB
Docker
150 lines
5.5 KiB
Docker
#FROM lpenz/devuan-beowulf-armhf-minbase
|
|
FROM dyne/devuan:beowulf
|
|
SHELL ["/bin/bash", "-c"]
|
|
|
|
# Octoprint itself
|
|
ARG WITH_KLIPPER="no"
|
|
ENV WITH_KLIPPER ${WITH_KLIPPER}
|
|
|
|
ARG WITH_SAFEMODE="no"
|
|
ENV WITH_SAFEMODE ${WITH_SAFEMODE}
|
|
|
|
ARG OCTO_PRINTER="/tmp/printer"
|
|
ENV OCTO_PRINTER ${OCTO_PRINTER}
|
|
|
|
# Balena /bin/sh stub is supposed to cleanup itself, but loops when initally called by apt...
|
|
# https://github.com/balena-io-library/base-images/issues/637
|
|
#RUN [[ -f /bin/sh.real ]] && rm /bin/sh && mv /bin/sh.real /bin/sh
|
|
|
|
RUN echo "deb http://deb.devuan.org/merged/ beowulf main contrib non-free" > /etc/apt/sources.list
|
|
|
|
|
|
RUN apt-get update && \
|
|
apt-get install -y python3-pip python3-dev python3-setuptools python3-wheel python3-venv \
|
|
git build-essential ffmpeg dbus jq curl jq socat procps vim-tiny \
|
|
libffi-dev libssl-dev libyaml-dev zlib1g-dev libjpeg62-turbo-dev libatlas-base-dev && \
|
|
apt-get install -y -f && \
|
|
apt-get clean && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN pip3 install yq
|
|
|
|
ENV OCTO_DEST /opt/octoprint/OctoPrint
|
|
|
|
WORKDIR ${OCTO_DEST}
|
|
|
|
ARG release
|
|
|
|
# Travis often fails in getting latest octoprint release, this is why we
|
|
# have this while/re-try loop...
|
|
|
|
RUN echo -e '[global]\n\
|
|
extra-index-url=https://www.piwheels.org/simple'\
|
|
>> /etc/pip.conf && cat /etc/pip.conf
|
|
|
|
RUN if [ "${release}" = "latest" ]; then \
|
|
i=0; \
|
|
while true; do \
|
|
i=$(expr $i + 1); \
|
|
release=$(curl --silent --location https://api.github.com/repos/foosel/OctoPrint/releases/latest | jq -r .tag_name); \
|
|
[ "${release}" = "null" -a $i -lt 10 ] || break;\
|
|
echo "Cannot get release info -- retrying"; \
|
|
sleep 10; \
|
|
done; \
|
|
fi; \
|
|
echo "** Building Octoprint ${release}"; \
|
|
git clone --branch "${release}" https://github.com/foosel/OctoPrint.git ${OCTO_DEST}
|
|
|
|
ENV VIRTUAL_ENV=${OCTO_DEST}/venv
|
|
RUN python3 -m venv $VIRTUAL_ENV
|
|
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
|
|
|
|
RUN echo "** Entering virtualenv ${WORKDIR}/venv" && \
|
|
echo "** venv: Installing wheel." && \
|
|
pip3 install wheel && \
|
|
echo "** venv: Installing MarkupSafe." && \
|
|
pip3 install MarkupSafe && \
|
|
echo "** venv: Installing Jinja2." && \
|
|
pip3 install Jinja2 && \
|
|
echo "** venv: Installing PyYAML." && \
|
|
pip3 install PyYAML && \
|
|
echo "** venv: Installing numpy." && \
|
|
pip3 install numpy && \
|
|
echo "** venv: Installing Urllib3." && \
|
|
pip3 install requests
|
|
|
|
RUN echo "** venv: starting setup.py install." && \
|
|
python3 setup.py install
|
|
|
|
RUN echo "** venv: installing plugins." && \
|
|
pip3 install \
|
|
https://github.com/Octoprint/Octoprint-MQTT/archive/master.zip \
|
|
https://github.com/birkbjo/Octoprint-Themeify/archive/master.zip \
|
|
https://github.com/AlexVerrico/Octoprint-Display-ETA/archive/master.zip \
|
|
https://github.com/pablogventura/Octoprint-ETA/archive/master.zip \
|
|
https://github.com/1r0b1n0/Octoprint-Tempsgraph/archive/master.zip \
|
|
https://github.com/tpmullan/Octoprint-DetailedProgress/archive/master.zip \
|
|
https://github.com/marian42/octoprint-preheat/archive/master.zip \
|
|
https://github.com/jneilliii/Octoprint-TabOrder/archive/master.zip \
|
|
https://github.com/jneilliii/Octoprint-BedLevelVisualizer/archive/master.zip \
|
|
https://github.com/jneilliii/Octoprint-Python3PluginCompatibilityCheck/archive/master.zip \
|
|
https://github.com/jneilliii/Octoprint-UltimakerFormatPackage/archive/master.zip \
|
|
https://github.com/jneilliii/Octoprint-ConsolidateTempControl/archive/master.zip \
|
|
https://github.com/jneilliii/Octoprint-PrusaSlicerThumbnails/archive/master.zip \
|
|
https://github.com/jneilliii/Octoprint-FloatingNavbar/archive/master.zip \
|
|
https://github.com/jneilliii/Octoprint-PlotlyTempGraph/archive/master.zip \
|
|
https://github.com/jneilliii/Octoprint-CustomBackground/archive/master.zip \
|
|
https://github.com/OllisGit/Octoprint-FilamentManager/releases/latest/download/master.zip \
|
|
https://github.com/OllisGit/Octoprint-DisplayLayerProgress/releases/latest/download/master.zip \
|
|
https://github.com/MoonshineSG/Octoprint-MultiColors/archive/master.zip \
|
|
https://github.com/Kragrathea/Octoprint-PrettyGCode/archive/master.zip \
|
|
https://github.com/quanticchaos/OctoPrint-Webcamsb/archive/master.zip
|
|
#https://github.com/FormerLurker/Octolapse/archive/master.zip \
|
|
#https://github.com/jneilliii/Octoprint-TasmotaMQTT/archive/master.zip \
|
|
#https://github.com/mikedmor/Octoprint_Multicam/archive/master.zip \
|
|
#https://github.com/imrahil/Octoprint-PrintHistory/archive/master.zip \
|
|
#https://github.com/OllisGit/Octoprint-PrintJobHistory/releases/latest/download/master.zip \
|
|
#https://github.com/AliceGrey/OctoPrintKlipperPlugin/archive/master.zip \
|
|
##https://github.com/mmone/OctoPrintKlipper/archive/master.zip
|
|
#echo "** venv: Installing zip." && \
|
|
#./venv/bin/pip3 install zip && \
|
|
|
|
# klipper
|
|
# The application of the changes to octoprints config.yaml happen on first run in /opt/octoprint/bin/run.sh copied in above from the build directory.
|
|
|
|
ARG SOCAT_TYPE="TCP"
|
|
ENV SOCAT_TYPE ${SOCAT_TYPE}
|
|
|
|
ARG SOCAT_HOST="klipper"
|
|
ENV SOCAT_HOST ${SOCAT_HOST}
|
|
|
|
ARG SOCAT_PORT="9999"
|
|
ENV SOCAT_PORT ${SOCAT_PORT}
|
|
|
|
#ARG SOCAT_DEBUG=" -d -d -d -t 60 -T 60 "
|
|
ARG SOCAT_DEBUG=""
|
|
ENV SOCAT_DEBUG ${SOCAT_DEBUG}
|
|
|
|
|
|
ARG OCTO_PRINTER="/tmp"
|
|
ENV OCTO_PRINTER ${OCTO_PRINTER}
|
|
RUN if [ "${WITH_KLIPPER}" = "yes" ]; then \
|
|
mkdir ${OCTO_PRINTER} && chgrp dialout ${OCTO_PRINTER} && \
|
|
pip3 install \
|
|
https://github.com/AliceGrey/OctoPrintKlipperPlugin/archive/master.zip \
|
|
; \
|
|
fi
|
|
|
|
WORKDIR /opt/octoprint
|
|
|
|
#COPY bin bin/
|
|
COPY etc etc/
|
|
|
|
|
|
VOLUME /opt/octoprint/data
|
|
|
|
|
|
EXPOSE 5000
|
|
|
|
CMD ["/opt/octoprint/bin/run.sh"]
|