Skip to main content

Docker

The official Docker image runs the same self-contained build used in the quick install. Multi-architecture images are published โ€” Docker pulls the right one for your host automatically.

System requirementsโ€‹

Quick startโ€‹

docker run -d -p 8765:8765 -v solidinvoice_data:/etc/solidinvoice solidinvoice/solidinvoice

The application starts on http://127.0.0.1:8765. Continue with the first-run wizard.

tip

Change 8765 on the left side of the -p flag to expose SolidInvoice on a different host port (e.g. -p 80:8765).

Docker Composeโ€‹

For a complete stack (app + database), use a docker-compose.yml like the one shipped with the repository:

docker-compose.yml
services:
db:
image: "mysql:8.0"
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_DATABASE: solidinvoice
MYSQL_ALLOW_EMPTY_PASSWORD: 1
app:
image: "solidinvoice/solidinvoice:latest"
depends_on:
- db
ports:
- "8765:8765"
restart: always
volumes:
- app_data:/etc/solidinvoice

volumes:
db_data: {}
app_data: {}

Bring it up:

docker compose up -d
warning

The example above uses an empty MySQL root password for simplicity. Set MYSQL_ROOT_PASSWORD and MYSQL_PASSWORD (and use MYSQL_USER) before running this in production.

Persisting dataโ€‹

Mount a volume (or bind mount) at /etc/solidinvoice so application data survives container restarts and image upgrades:

docker run -d -p 8765:8765 -v solidinvoice_data:/etc/solidinvoice solidinvoice/solidinvoice

Image sourceโ€‹

Pull from Docker Hub.

info

Recurring tasks and async work (email sending) run automatically inside the container โ€” no separate cron job or messenger consumer to set up.

Updateโ€‹

docker pull solidinvoice/solidinvoice:latest
docker compose up -d # or `docker stop` + `docker run` again