1. Who this guide is for
You want to try Bizuno on your laptop in five minutes, or you want a clean, reproducible install on a server you already run Docker on. You don’t want to deal with Apache config, PHP extensions, or file permissions by hand.
This is the recommended path for evaluation, for CI environments, and for anyone whose infrastructure is already containerized. It’s fine for production on a single host; for multi-host production, see the LAMP guide plus a real database server.
2. Prerequisites
- Docker Engine 24+ and Docker Compose v2 (
docker compose, not the olddocker-compose). On Windows and macOS, Docker Desktop includes both. On Linux, installdocker-ceand thedocker-compose-pluginpackage. - ~2 GB of free disk for the images and a starter database.
- Ports 8080 and 3306 free on the host (or change them in the compose file — see below).
- A browser.
You do not need PHP, MariaDB, or a web server installed on the host. The containers ship them.
3. Step-by-step install
3.1 Clone the repo or download the compose file
git clone https://github.com/bizuno/bizuno-docker.git
cd bizuno-docker
If you don’t have git, grab the zip from the releases page and unzip.
3.2 Review the compose file
docker-compose.yml starts three containers: a PHP-FPM container running Bizuno, an nginx container serving it, and a MariaDB container. A single named volume holds database data; a second named volume holds Bizuno’s data/ directory (attachments and logs).
Defaults:
- Bizuno HTTP port:
8080 - MariaDB port:
3306(exposed to the host — change or remove this line for production) - MariaDB root password:
changeme(change before firstup) - Bizuno database user:
bizuno/ passwordbizuno-dev(change before firstup)
Open .env and set the three passwords. If you don’t, the stack still runs, but anyone on your LAN can reach the database with known credentials.
3.3 Bring the stack up
docker compose up -d
First run pulls the images (~500 MB) and waits for MariaDB to initialize. Watch progress:
docker compose logs -f bizuno
When you see ready to accept connections from mariadb and php-fpm: ready from the Bizuno container, you’re up.
3.4 Open Bizuno in a browser
You’ll land on the Bizuno install wizard. The database host is db, the database name is bizuno, and the credentials are whatever you set in .env. The wizard handles table creation.
4. First-login walkthrough
- The install wizard asks for an admin username, email, and password. Set them and submit.
- On the next screen, choose Load demo data: Yes if you want a starter set of customers, vendors, and items to click through. Skip it for a clean install.
- You land in the Bizuno dashboard. The left-hand menu is your navigation.
- Open Tools → System Info and confirm the PHP and MariaDB versions match what the stack shipped (PHP 8.2, MariaDB 11.x at the time of writing).
Five-minute target: most people are at step 4 inside five minutes on a laptop with warm Docker images.
5. Upgrade path
cd bizuno-docker
git pull
docker compose pull
docker compose up -d
The PHP-FPM container applies pending database migrations on startup. Watch the logs on the first request after an upgrade; a migration that fails will say so loudly.
Before upgrading: snapshot the database volume. One-liner:
docker run --rm -v bizuno-docker_db-data:/from -v $(pwd):/to alpine \
tar czf /to/db-backup-$(date +%F).tar.gz -C /from .
If something breaks, docker compose down, restore the tarball into bizuno-docker_db-data, and bring the old image tag back up.
6. Uninstall / teardown
Complete removal, including data:
docker compose down -v
docker image rm bizuno/bizuno:latest mariadb:11 nginx:1.27-alpine
The -v wipes the volumes. There is no undo. If you wanted to keep the data, drop the -v and the database volume survives.
7. Troubleshooting
“Port 8080 already in use.” Change 8080:80 in docker-compose.yml to, say, 18080:80, then docker compose up -d.
“Cannot connect to database.” If the Bizuno container came up before MariaDB finished initializing, it may have cached a failure. docker compose restart bizuno fixes it. If not, check docker compose logs db for MariaDB errors.
“Permission denied on /var/www/html/data.” The shipped entrypoint runs chown -R www-data:www-data data/ before starting PHP-FPM. If you bind-mounted a host directory into data/, Docker may have created it with root ownership. Run chown -R 33:33 ./data on the host.
“Blank white page after login.” Almost always a missing PHP extension inside a customized image. Re-pull the official image (docker compose pull bizuno && docker compose up -d bizuno) and try again before debugging further.
“I changed .env and nothing changed.” .env is read at container start. docker compose up -d picks up the new values for containers that need to be recreated; a simple restart doesn’t. If you changed the database password, MariaDB keeps the old one until the data volume is wiped.
“It works on localhost but not from another machine.” By default, nothing is wrong with the container — your host firewall is blocking port 8080. On Linux: sudo ufw allow 8080/tcp. On Windows: allow the port in Windows Defender Firewall. On macOS: System Settings → Network → Firewall → Options.
8. Where to go next
- Read the Getting Started doc category — seven short articles, about 20 minutes.
- If you plan to put this on the internet, put nginx (or a reverse proxy) in front with a real cert. The compose file is laptop-grade, not internet-grade, by default.
- Ask questions in Install & Setup → Docker / Docker Compose.
- File Docker-specific bugs on the
bizuno-dockerGitHub repo.
This guide is mirrored at bizuno/bizuno-docker/README.md on GitHub. The Markdown file is the source of truth. If this page and the repo disagree, the repo is correct.