mhzawadi / invoiceplane

InvoicePlane is a self-hosted open source application for managing your invoices, clients and payments.
15 stars 8 forks source link

 

Github Work flow Docker Pulls

InvoicePlane is a self-hosted open source application for managing your invoices, clients and payments.
For more information visit InvoicePlane.com or try the Demo.


How to use this Docker image

This image will export 3 directories, if you dont setup a volume for them Docker will.

Mysql

Run a MySQL database, dedicated to invoiceplane

docker run --name invoiceplane-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw \
 -e MYSQL_DATABASE=invoiceplane \
 -e MYSQL_USER=invoiceplane \
 -e MYSQL_PASSWORD=my-secret-pw \
 -v /my_dir/invoiceplane:/var/lib/mysql -d mysql:5.7

This will start MySQL, set the root password and create a database for invoiceplane. This does take some time, so dont try to get invoiceplane setup too quick

InvoicePlane

docker run -ti -d -p 80:80 --name invoiceplane \
--link invoiceplane-mysql:mysql \
--volume "/your/path/to/invoiceplane/uploads:/var/www/html/uploads" \
--volume "/your/path/to/invoiceplane/assets:/var/www/html/assets/core/css" \
--volume "/your/path/to/invoiceplane/views:/var/www/html/application/views" \
mhzawadi/invoiceplane

We are linking the two containers and expose the HTTP port, once MySQL is up and running setup of invoiceplane should be quick.

This will also setup a database called invoiceplane with the invoiceplane user having superuser access to this database

Docker compose

You can get an all-in-one YAML deployment descriptor with Docker compose, like this :

curl https://github.com/mhzawadi/invoiceplane/blob/master/docker-compose.yml
docker-compose up -d

If your using docker swarm you can get a stack that has the same setup:

curl https://github.com/mhzawadi/invoiceplane/blob/master/stack-invoiceplane.yml
docker stack deploy --compose-file stack-invoiceplane.yml invoiceplane

Using the traefik proxy

If you use the above compose file, you will need to update your /etc/hosts file. you will need to add 127.0.0.1 invoiceplane.docker.local to it in order that traefik does its routing, else you will get a 404 error page.

persistent config

if you run docker swarm, you can add your config to docker swarm config and have it persist across containers.

Mount your config to /var/www/html/ipconfig.php

Or you can pass all the config via environment variables, see below for some of the basics. Once you have your instance setup, you will want to collect the ENCRYPTION_KEY & ENCRYPTION_CIPHER. As that is used to store passwords.

The below commands will display the ENCRYPTION_KEY & ENCRYPTION_CIPHER

ID=$(docker ps | grep 'mhzawadi/invoiceplane' | awk '{print $1}');
docker exec -it "$ID" /bin/cat ipconfig.php | grep ENCRYPTION_KEY;
docker exec -it "$ID" /bin/cat ipconfig.php | grep ENCRYPTION_CIPHER;

Update your docker-compose file with them, also add SETUP_COMPLETED=true.

the environment section of your docker-compose.yml should have some like the below

      - TZ=utc
      - MYSQL_HOST=mariadb_10_4
      - MYSQL_USER=InvoicePlane
      - MYSQL_PASSWORD=invoiceplane
      - MYSQL_DB=InvoicePlane
      - IP_URL=http://invoiceplane.docker.local
      - SETUP_COMPLETED=true
      - ENCRYPTION_CIPHER=base64:LgrA+4Df/kJvZIx+GBech8PRTYuO+lbIoF5CgJ59iJM=
      - ENCRYPTION_CIPHER=AES-256

Environment variables summary

Docker hub tags

You can use following tags on Docker hub:

how to build

Latest is build from the docker hub once I push to the github repo, the arm versions are built from my mac with the below buildx tool

docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t mhzawadi/invoiceplane:v1.5.10.1 --push .