Using docker to install BrewPi


It seems like a very cool idea to switch to Docker, will try to use it when this first beer is done. Thanks for the good work!


Thanks for the feedback!

There’s a file called in the script/utils directory.

To make rebuilding the container easier, maybe we should change the instructions to check out the brewpi-docker repo and use docker-compose, what do you think?

We could also have a script in the repo that pulls both repositories, so rebuilding would only be needed when the installed packages change.

Regarding the fridge not turning on immediately, I think that’s because of the dead time. Did it start after 30 minutes? I’ll look into it. It’s a gotcha that often confuses people.


I’m a novice on Docker, but have worked with server virtualization for a while. Docker compose looks like it would fit the need to maintain the image. The challenge I have is on the pre-docker setup, I could always run the update script to see if I needed to upgrade the web or firmware, but in the docker world I don’t know how to tell if I’m out of date.

The fridge issue was the 30 minute dead timer. All seems to be working. Will finish tidying up my setup tonight and test with a carboy full of water to check performance.


sweet idea, mines all set for now but looking forward to the streamlined install in the future. love docker


I followed the instructions except I installed docker via command line since I already had an rpi (Raspian Jessie) up and running and don’t necessarily want to image it at the moment.

When I run the BrewPi instance it loads up with sample data just fine but shows “Script not running!” and seems unresponsive when I click that button to start.

I installed the docker instance inside a tmux session, and checked crontab (on the pi, not inside docker) and nothing was listed.

Tried restarting it via portainer and it rebooted but no change to script status, and no output to stderr.

My brewpi-spark just arrived but it’s not connected via USB or wifi yet (nor any other thing to control/read, so maybe that’s my underlying issue).

When I run crontab inside the docker instance I get “command not found”.

Anyway, the question is: should the script be running out of the box, or will it only once I’ve chosen an interface to control? Did I miss some instructions / errors?

Ahh, slight update, I found the stderr inside of brewpi maintenance panel (instead of portainer) and it shows this:

Jul 25 2017 15:19:45 Notification: Script started for beer 'My First BrewPi Run'
Jul 25 2017 15:19:45 Connecting to controller...
Jul 25 2017 15:19:45 Opening serial port
Jul 25 2017 15:19:55 Errors while opening serial port: 
Could not find compatible serial devices 

Which I believe implies it’s just crashing on the serial port being missing so probably will be fine once I connect everything. I’ll give that a try when I get home and provide an update.


Our docker container doesn’t use cron. I don’t know what you expect cron on the host to do.

Did you miss the instruction about mapping /dev/ttyACM0 ?
Or do you want to connect over WiFi and did not set the port?

The script exits when it cannot connect to a BrewPi Spark.


Hey Elco…do you have instructions for installing and configuring Docker on a Mac, please?


It’s hard for me to write that guide, because I don’t have a Mac to test. You’ll have to start here:

Can you help me write the guide for Mac for the Wiki? You can add me on Skype so I can answer any questions during the process.


Happy to help…I’ve installed Docker on my Mac already…I’ll take a look tomorrow…are you around any specific times?


I got through it all, for some reason my config file had .example after it so it didn’t load. I loaded up pico and saved it with just the .cfg extension, reboot, and all is good now.


That’s correct. I’ll modify the script to do that when it first starts and the file doesn’t exist yet.


In the config.cfg file it has

scriptPath = /home/brewpi/

If installing via docker shouldn’t it be:

scriptPath = /brewpi-data/



no, that is the path on the host. The docker image creates symlinks in the container from:
/home/brewpi/data -> /data/data
/home/brewpi/settings -> /data/settings
/home/brewpi/logs -> /data/logs
/var/www/html/data -> /data/html_data

And docker creates the mapping /data -> ~/brewpi-data to map a folder inside the container to a folder on the host.


Here is some fast screen shots and ruff verbage on how I got this working. Not much different for unRAID than for Synology NAS. Was able to get to this today since my order arrived so quickly. :slight_smile:

NOTE: unRAID CLI for Dockers is rather interesting. Have to SSH into unRAID then use the following cmd to get the docker CLI. `docker exec -it {container-name} /bin/bash" then you can set the timezone: sudo dpkg-reconfigure tzdata. Once done type exit 2 times to close the ssh session.
unRAID v6.3.5 BrewPi Config.docx (509.7 KB)


This would be good info for the wiki :wink:


Found a potential issue when destroying and recreating the BrewPi container. After recreating and bringing up, all my data is there, but I find I can’t edit any of my previous beer profiles. I can open them and apply, but cannot save any changes (message is “Error Saving Profile!”) I’m assuming this is a file system rights/ownership issue, but not sure where the profiles live to check.


Found it had to run chmod 655 in /var/www/html/data/profiles. Not sure if that is too much rights, but can change existing profiles now


Is it possible to build a container for Legacy? I would like to connect to my Aduino BrewPi and Photon BrewPi using the one Raspberry Pi.


I built a docker image with the legacy code in it, but am running on a separate Pi. Will have to see how the PI handles 2 USB devices and will drop the container on there. Unfortunately, since I’m in Florida my fermenter chamber is now my emergency food freezer so not messing with my BrewPi until after the storm passes. Guess its an IrmaPi until Tuesday.


I will connect to the BrewPi Photon over wifi. Let me know how you get on and where I can find the Legacy container