Im using Octoprint for my Ender3 on a old Linux 32 bit machine. Unfortunately I was running into problems after a release upgrade of Ubuntu and so I finally decided that it is time to use Octoprint as a Docker image, so that I have the possibility to restore my services easily in the future.
For some strange reasons the official Octoprint on Docker Hub is only supporting 16 bit on ARM but not 16 bit Intel processors! However Octoprint is just a simple Python application, so it should not be too difficult to have a solution which runs on all environments that are supported by the official Python Image.
Here is the solution:
FROM python RUN pip install octoprint RUN useradd octoprint && usermod -a -G tty octoprint && usermod -a -G dialout octoprint USER octoprint WORKDIR /home/octoprint EXPOSE 5000 CMD octoprint serve
I am usually also using docker-compose – so here is the definition:
version: "3.0" services: octoprint: ports: - "80:5000" restart: always build: . privileged: true volumes: - .:/home/octoprint
The privileged: true setting is necessary to give Docker access to the serial (printer) devices.
The cool thing is
- that I can access it directly on port 80 now w/o the need to install any other proxies
- and that I have the automatic startup automatically taken care of by Docker as well.
- Last but not least I can get the solution back on any new environment just by running docker-compose up -d
There is one pitfall however: The printer needs to be connected when the service is starting up or the port will not be found!