Add a basic Klipper and OctoPrint Dockerfile
This commit is contained in:
parent
c84da24975
commit
81ba26b808
|
@ -0,0 +1,61 @@
|
|||
FROM python:2.7
|
||||
EXPOSE 8080
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get install -y sudo
|
||||
|
||||
EXPOSE 5000
|
||||
|
||||
ENV CURA_VERSION=15.04.6
|
||||
ARG tag=master
|
||||
|
||||
WORKDIR /opt/octoprint
|
||||
|
||||
#install ffmpeg
|
||||
RUN cd /tmp \
|
||||
&& wget -O ffmpeg.tar.xz https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-32bit-static.tar.xz \
|
||||
&& mkdir -p /opt/ffmpeg \
|
||||
&& tar xvf ffmpeg.tar.xz -C /opt/ffmpeg --strip-components=1 \
|
||||
&& rm -Rf /tmp/*
|
||||
|
||||
#install Cura
|
||||
RUN cd /tmp \
|
||||
&& wget https://github.com/Ultimaker/CuraEngine/archive/${CURA_VERSION}.tar.gz \
|
||||
&& tar -zxf ${CURA_VERSION}.tar.gz \
|
||||
&& cd CuraEngine-${CURA_VERSION} \
|
||||
&& mkdir build \
|
||||
&& make \
|
||||
&& mv -f ./build /opt/cura/ \
|
||||
&& rm -Rf /tmp/*
|
||||
|
||||
#Create an octoprint user
|
||||
RUN useradd -ms /bin/bash octoprint && adduser octoprint dialout
|
||||
RUN chown octoprint:octoprint /opt/octoprint
|
||||
USER octoprint
|
||||
|
||||
#This fixes issues with the volume command setting wrong permissions
|
||||
RUN mkdir /home/octoprint/.octoprint
|
||||
|
||||
#Install Octoprint
|
||||
RUN git clone --branch $tag https://github.com/foosel/OctoPrint.git /opt/octoprint \
|
||||
&& virtualenv venv \
|
||||
&& ./venv/bin/python setup.py install \
|
||||
&& echo 2
|
||||
|
||||
VOLUME /home/octoprint/.octoprint
|
||||
|
||||
|
||||
### Klipper setup ###
|
||||
|
||||
USER root
|
||||
COPY klippy.sudoers /etc/sudoers.d/klippy
|
||||
RUN useradd -ms /bin/bash klippy
|
||||
|
||||
USER octoprint
|
||||
WORKDIR /home/octoprint
|
||||
RUN git clone https://github.com/KevinOConnor/klipper \
|
||||
&& ./klipper/scripts/install-octopi.sh
|
||||
|
||||
COPY klippyoctostart.py /
|
||||
|
||||
CMD ["/klippyoctostart.py"]
|
19
README.md
19
README.md
|
@ -29,3 +29,22 @@ docker run --name octoprint2 -d -v /etc/localtime:/etc/localtime:ro -v /home/use
|
|||
Your Klipper `printer.cfg` should be kept in the OctoPrint config directory (this is where it looks for it at startup).
|
||||
|
||||
If you have any questions, feel free to log an issue on this project, and I'll see if I can help.
|
||||
|
||||
## No MJPG
|
||||
|
||||
Also included is a cut down Dockerfile with no `mjpg` or OctoPrint plugins included.
|
||||
|
||||
This can be built with:
|
||||
```
|
||||
docker build . --file Dockerfile.KlipperOctoprint -t ko
|
||||
```
|
||||
|
||||
And run with something like:
|
||||
```
|
||||
docker run -d -v /etc/localtime:/etc/localtime:ro -v /home/user/Documents/octoprint-config:/home/octoprint/.octoprint \
|
||||
--device /dev/ttyUSB0:/dev/ttyUSB0 \
|
||||
-p 5000:5000 \
|
||||
ko
|
||||
```
|
||||
|
||||
This is basically untested, but maybe a good start for someone who wants a simpler based container.
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import subprocess
|
||||
import time
|
||||
import os
|
||||
|
||||
OCTOPRINT = ["/opt/octoprint/venv/bin/octoprint", "serve"]
|
||||
|
||||
def main():
|
||||
os.environ['HOME'] = '/home/octoprint'
|
||||
|
||||
# Start klipper
|
||||
klipper = subprocess.Popen(['/home/octoprint/klippy-env/bin/python', '/home/octoprint/klipper/klippy/klippy.py', '/home/octoprint/.octoprint/printer.cfg'])
|
||||
|
||||
# Run in a loop so Octoprint can restart in the container
|
||||
while 1:
|
||||
Poctoprint = subprocess.Popen(OCTOPRINT)
|
||||
Poctoprint.wait()
|
||||
time.sleep(1)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
Loading…
Reference in New Issue