Compare commits

...

41 Commits

Author SHA1 Message Date
Ween Jiann
ad3ffc227d Add ipv6 support to chart (#484) 2022-12-24 14:48:36 +08:00
Ween Jiann
e64db79c75 Re-trigger chart release (#483) 2022-12-23 12:58:42 +08:00
Ween Jiann
5fcad81fc2 Update release chart action (#482) 2022-12-23 12:53:04 +08:00
Ween Jiann
2e383ef879 Update chart dependencies (#476)
* Update chart dependencies

* Update IN version

* Update lock file

* Update README.md
2022-12-23 12:47:07 +08:00
Ween Jiann
bb6b3dc1e8 Update k8s versions for chart testing action (#481) 2022-12-23 12:36:03 +08:00
Ween Jiann
4a7b28f1d0 Fix: remove v prefix from kubeconform (#480) 2022-12-23 12:29:23 +08:00
Ween Jiann
1699ddde65 Fix: kind versions in chart testing (#479) 2022-12-23 00:32:00 +08:00
Ween Jiann
63431878b8 Fix: wrong name in chart testing action (#478) 2022-12-23 00:24:51 +08:00
Ween Jiann
03cc1ff548 Update chart testing action (#477) 2022-12-23 00:15:18 +08:00
Jonathan Starck
4aa7a7032c Add native support MYSQL8 (#462)
* Add native Support for MYSQL Version 8.x

* Adaptation of the documentation for MYSQL 8.x

* Backup note added
2022-10-27 17:37:07 +08:00
David Bomba
4fa02c2785 Merge pull request #464 from turbo124/master
Fixes for fonts
2022-10-06 12:54:05 +11:00
David Bomba
d25210c8b9 Fixes for fonts 2022-10-06 12:53:44 +11:00
David Bomba
f97fdda827 Merge pull request #463 from turbo124/master
Additional fonts - chinese + arabic
2022-10-06 12:35:27 +11:00
David Bomba
5188c45b41 Upgrade fonts 2022-10-06 12:34:52 +11:00
David Bomba
e3873bcac2 Merge branch 'master' of https://github.com/turbo124/dockerfiles 2022-10-06 12:32:11 +11:00
David Bomba
24ef742ce1 Update README.md 2022-10-02 20:41:25 +11:00
David Bomba
886dfe7832 Update README.md 2022-10-02 20:41:04 +11:00
David Bomba
0054620e55 Merge branch 'master' of https://github.com/turbo124/dockerfiles 2022-08-19 14:12:07 +10:00
David Bomba
4b82f750fc Update docker-compose.yml 2022-07-25 08:58:43 +10:00
David Bomba
97d339df4e Update Dockerfile 2022-07-25 08:58:19 +10:00
David Bomba
906cfb0c87 Merge pull request #453 from Psycho0verload/master
[BUGFIX] Error building the mysql backup build
2022-07-22 20:15:03 +10:00
Jonathan Starck
62a7f6d7cf [BUGFIX] TRUSTED_PROXIES is not in env
Bugfix for Issue #454
2022-07-22 12:08:42 +02:00
Jonathan Starck
1d97234b51 Change MYSQL5 to MYSQL5-Debian so that build works for the backup cronjob 2022-07-20 18:06:34 +02:00
David Bomba
aab280dcc1 Prep container for PHP 8.1 (#450) 2022-07-20 23:32:52 +08:00
David Bomba
faffcadc45 Prep container for PHP 8.1 2022-07-20 13:05:12 +10:00
David Bomba
25b3654a53 Merge pull request #437 from sleeyax/master
Bump helm version to 5.3.80
2022-04-20 11:26:52 +09:30
Sleeyax
46cd35bf32 Bump chart version 2022-04-20 02:20:39 +02:00
Sleeyax
53b4e6dafd Bump helm version to 5.3.80 2022-04-20 02:07:00 +02:00
David Bomba
27b6c82fe4 Merge pull request #428 from VeselaHouba/master
Revert #419 (email and password escaping)
2022-01-14 09:35:30 +11:00
Michalek
64fdd58ba9 Revert #419 (email and password escaping) 2022-01-13 23:31:21 +01:00
Ffaen
85519a0038 Bump helm version to 5.3.39 (#420) 2021-12-26 08:22:10 +08:00
Ffaen
5d5f34b7e7 Escape email and password upon IN User Creation (#419)
Fixes #415
2021-12-26 08:19:35 +08:00
David Bomba
774b8cb6eb Update Dockerfile 2021-12-12 18:55:12 +11:00
David Bomba
76a0886278 Update Dockerfile 2021-12-10 17:24:41 +11:00
Ffaen
2bac5707ae Bump helm version to 5.3.29 (#406)
* Bump helm version to 5.3.29

Closes #405

* Update charts/invoiceninja/Chart.yaml
2021-11-08 09:45:25 +08:00
Fabian
c17e37c4b8 Fix: mysqladmin ping timeout from 12 hours to 15 seconds (#392)
* Update deployment.yaml

Changed init-container "wait-db" for waiting 15 seconds instead of 12 hours (default) in case of a timeout

* Update Chart.yaml
2021-08-22 20:45:21 +08:00
Ween Jiann
08f9493f0d Release Candidate and change PDF generation key (#386)
* Fix PDF generation

* Default to internal Nginx

* Set Redis replica to 1

* Fix readme

* Updated dependency
2021-07-16 10:04:47 +08:00
David Bomba
40f483a32d Update README.md 2021-07-14 17:23:40 +10:00
David Bomba
eb58c26ebf Update env 2021-07-12 21:01:48 +10:00
Ween Jiann
d50bfde676 Remove storage persistence (#383) 2021-07-10 11:25:40 +08:00
Ween Jiann
c12e985f81 Refactor Github workflow files (#382)
* Refactor

* Add sha

* Add missing dash
2021-07-10 11:20:09 +08:00
20 changed files with 207 additions and 161 deletions

57
.github/workflows/build-image-v4.yaml vendored Normal file
View File

@@ -0,0 +1,57 @@
name: Build Container Image v4
# When its time to do a release do a full cross platform build for all supported
# architectures and push all of them to Docker Hub.
# Only trigger on semver shaped tags.
# Ref: https://github.com/metcalfc/docker-action-examples/blob/main/.github/workflows/release.yml
on:
pull_request:
paths:
- "alpine/4/**"
push:
paths:
- "alpine/4/**"
branches:
- master
jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
with:
platforms: all
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v1
- name: Cache Docker layers
uses: actions/cache@v2
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-4-${{ hashFiles('alpine/5/cache_buster') }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-4-${{ hashFiles('alpine/5/cache_buster') }}-
- name: Build
id: docker_build
uses: docker/build-push-action@v2
with:
builder: ${{ steps.buildx.outputs.name }}
context: ./alpine/4/
build-args: INVOICENINJA_VERSION=4.5.42
target: prod
platforms: linux/amd64,linux/arm64
tags: invoiceninja/invoiceninja:cache
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new
- name: Move cache
run: |
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache

View File

@@ -1,67 +0,0 @@
name: Build Container Image
# When its time to do a release do a full cross platform build for all supported
# architectures and push all of them to Docker Hub.
# Only trigger on semver shaped tags.
# Ref: https://github.com/metcalfc/docker-action-examples/blob/main/.github/workflows/release.yml
on:
push:
paths:
- "alpine/4/**"
jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Prepare
id: prep
run: |
DOCKER_IMAGE=invoiceninja/invoiceninja
VERSION=edge
if [[ $GITHUB_REF == refs/tags/* ]]; then
VERSION=${GITHUB_REF#refs/tags/}
fi
TAGS="${DOCKER_IMAGE}:${VERSION}"
MAJOR="$(echo "${VERSION}" | cut -d. -f1)"
MINOR="$(echo "${VERSION}" | cut -d. -f2)"
TAGS="$TAGS,${DOCKER_IMAGE}:${MAJOR},${DOCKER_IMAGE}:${MAJOR}.${MINOR}"
if [[ $VERSION =~ ^5\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
TAGS="$TAGS,${DOCKER_IMAGE}:latest"
fi
echo ::set-output name=tags::${TAGS}
echo ::set-output name=version::${VERSION}
echo ::set-output name=major::${MAJOR}
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
with:
platforms: all
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v1
- name: Cache Docker layers
uses: actions/cache@v2
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ hashFiles('alpine/**') }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Build
id: docker_build
uses: docker/build-push-action@v2
with:
builder: ${{ steps.buildx.outputs.name }}
context: ./alpine/${{ steps.prep.outputs.major }}/
build-args: INVOICENINJA_VERSION=${{ steps.prep.outputs.version }}
target: prod
platforms: linux/amd64,linux/arm64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.prep.outputs.tags }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache

View File

@@ -34,9 +34,9 @@ jobs:
uses: actions/cache@v2 uses: actions/cache@v2
with: with:
path: /tmp/.buildx-cache path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-5-${{ hashFiles('alpine/5/cache_buster') }} key: ${{ runner.os }}-buildx-5-${{ hashFiles('alpine/5/cache_buster') }}-${{ github.sha }}
restore-keys: | restore-keys: |
${{ runner.os }}-buildx-5-${{ hashFiles('alpine/5/cache_buster') }} ${{ runner.os }}-buildx-5-${{ hashFiles('alpine/5/cache_buster') }}-
- name: Build - name: Build
id: docker_build id: docker_build

View File

@@ -48,9 +48,9 @@ jobs:
uses: actions/cache@v2 uses: actions/cache@v2
with: with:
path: /tmp/.buildx-cache path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ steps.prep.outputs.major }}-${{ hashFiles('alpine/${{ steps.prep.outputs.major }}/cache_buster') }} key: ${{ runner.os }}-buildx-${{ steps.prep.outputs.major }}-${{ hashFiles('alpine/${{ steps.prep.outputs.major }}/cache_buster') }}-${{ github.sha }}
restore-keys: | restore-keys: |
${{ runner.os }}-buildx-${{ steps.prep.outputs.major }}-${{ hashFiles('alpine/${{ steps.prep.outputs.major }}/cache_buster') }} ${{ runner.os }}-buildx-${{ steps.prep.outputs.major }}-${{ hashFiles('alpine/${{ steps.prep.outputs.major }}/cache_buster') }}-
- name: Login to DockerHub - name: Login to DockerHub
if: github.event_name != 'pull_request' if: github.event_name != 'pull_request'

View File

@@ -12,21 +12,23 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v1 uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Configure Git - name: Configure Git
run: | run: |
git config user.name "$GITHUB_ACTOR" git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com" git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
- uses: azure/setup-helm@v1 - name: Set up Helm
id: install uses: azure/setup-helm@v3
- name: Add Helm repos - name: Add Helm repos
run: | run: |
helm repo add bitnami https://charts.bitnami.com/bitnami helm repo add bitnami https://charts.bitnami.com/bitnami
- name: Run chart-releaser - name: Run chart-releaser
uses: helm/chart-releaser-action@v1.2.1 uses: helm/chart-releaser-action@v1.4.1
env: env:
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"

View File

@@ -17,14 +17,15 @@ jobs:
fetch-depth: 0 fetch-depth: 0
- name: Set up Helm - name: Set up Helm
uses: azure/setup-helm@v1 uses: azure/setup-helm@v3
- uses: actions/setup-python@v2 - uses: actions/setup-python@v4
with: with:
python-version: 3.7 python-version: "3.9"
check-latest: true
- name: Set up chart-testing - name: Set up chart-testing
uses: helm/chart-testing-action@v2.0.1 uses: helm/chart-testing-action@v2.3.1
- name: Run chart-testing (list-changed) - name: Run chart-testing (list-changed)
id: list-changed id: list-changed
@@ -41,7 +42,7 @@ jobs:
- name: Run chart-testing (lint) - name: Run chart-testing (lint)
run: ct lint --config .github/ct-lint.yaml run: ct lint --config .github/ct-lint.yaml
kubeval-chart: kubeconform-chart:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: needs:
- lint-chart - lint-chart
@@ -49,39 +50,44 @@ jobs:
matrix: matrix:
chart: ${{ fromJson(needs.lint-chart.outputs.matrix) }} chart: ${{ fromJson(needs.lint-chart.outputs.matrix) }}
k8s: k8s:
- v1.19.11 - "1.25.5"
- v1.20.7 - "1.24.9"
- v1.21.2 - "1.23.15"
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v1 uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Update Helm depdendencies - name: Update Helm depdendencies
env: env:
CHART_DIR: ${{ matrix.chart }} CHART_DIR: ${{ matrix.chart }}
run: | run: |
helm dependency update "${CHART_DIR}" helm dependency update "${CHART_DIR}"
mkdir kubeval mkdir tmp
helm template "${CHART_DIR}" > kubeval/combined.yaml helm template "${CHART_DIR}" > tmp/combined.yaml
- name: Run kubeval - uses: yokawasa/action-setup-kube-tools@v0.9.2
uses: instrumenta/kubeval-action@master
with: with:
files: kubeval setup-tools: |
version: ${{ matrix.k8s }} kubeconform
- name: Run kubeconform
if: ${{ matrix.k8s }}
run: kubeconform -kubernetes-version ${{ matrix.k8s }} tmp/combined.yaml
install-chart: install-chart:
name: install-chart name: install-chart
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: needs:
- lint-chart - lint-chart
- kubeval-chart - kubeconform-chart
strategy: strategy:
matrix: matrix:
k8s: k8s:
- v1.19.11 - v1.25.3
- v1.20.7 - v1.24.7
- v1.21.2 - v1.23.13
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v2 uses: actions/checkout@v2
@@ -89,16 +95,17 @@ jobs:
fetch-depth: 0 fetch-depth: 0
- name: Create kind ${{ matrix.k8s }} cluster - name: Create kind ${{ matrix.k8s }} cluster
uses: helm/kind-action@v1.2.0 uses: helm/kind-action@v1.4.0
with: with:
node_image: kindest/node:${{ matrix.k8s }} node_image: kindest/node:${{ matrix.k8s }}
- uses: actions/setup-python@v2 - uses: actions/setup-python@v4
with: with:
python-version: 3.7 python-version: "3.9"
check-latest: true
- name: Set up chart-testing - name: Set up chart-testing
uses: helm/chart-testing-action@v2.0.1 uses: helm/chart-testing-action@v2.3.1
- name: Run chart-testing (install) - name: Run chart-testing (install)
run: ct install --config .github/ct-install.yaml run: ct install --config .github/ct-install.yaml

View File

@@ -4,8 +4,6 @@
[![Artifact HUB](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/invoiceninja)](https://artifacthub.io/packages/search?repo=invoiceninja) [![Artifact HUB](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/invoiceninja)](https://artifacthub.io/packages/search?repo=invoiceninja)
[![Pusblish Image](https://github.com/invoiceninja/dockerfiles/actions/workflows/publish-image.yaml/badge.svg)](https://github.com/invoiceninja/dockerfiles/actions/workflows/publish-image.yaml) [![Cache v5 Image](https://github.com/invoiceninja/dockerfiles/actions/workflows/build-image-v5.yaml/badge.svg)](https://github.com/invoiceninja/dockerfiles/actions/workflows/build-image-v5.yaml) [![Pusblish Image](https://github.com/invoiceninja/dockerfiles/actions/workflows/publish-image.yaml/badge.svg)](https://github.com/invoiceninja/dockerfiles/actions/workflows/publish-image.yaml) [![Cache v5 Image](https://github.com/invoiceninja/dockerfiles/actions/workflows/build-image-v5.yaml/badge.svg)](https://github.com/invoiceninja/dockerfiles/actions/workflows/build-image-v5.yaml)
# Docker for [Invoice Ninja](https://www.invoiceninja.com/) # Docker for [Invoice Ninja](https://www.invoiceninja.com/)
:crown: **Features** :crown: **Features**
@@ -22,7 +20,8 @@ Introducing our very own [Helm Chart](https://github.com/invoiceninja/dockerfile
Other resources: Other resources:
[Helm Chart](https://github.com/Saddamus/invoiceninja-helm) by @Saddamus [Helm Chart](https://github.com/Saddamus/invoiceninja-helm) by @Saddamus
[K8s Manifest](https://github.com/invoiceninja/dockerfiles/issues/94) by @spacepluk [K8s Manifest](https://github.com/invoiceninja/dockerfiles/issues/94) by @spacepluk
[You Tube installation video by DBTech](https://www.youtube.com/watch?v=xo6a3KtLC2g&ab_channel=DBTech)
## Alternatively get started with Docker Compose ## Alternatively get started with Docker Compose
@@ -84,7 +83,7 @@ All that is left to do now is bring up the container
### Running on ARM64 (Raspberry Pi 4) ### Running on ARM64 (Raspberry Pi 4)
When deploying on an ARM64 system, you need to comment out the `image: mysql:5` line and uncomment `image: mariadb:10.4` in the `docker-compose.yml` file. When deploying on an ARM64 system, you need to comment out the `image: mysql:8` line and uncomment `image: mariadb:10.4` in the `docker-compose.yml` file.
### Updating the Image when using `docker-compose` ### Updating the Image when using `docker-compose`
@@ -96,8 +95,13 @@ To upgrade to a newer release image, please make sure to update the `docker-comp
git pull git pull
``` ```
It is recommended to perform a backup before.
You may need to manually merge any changes that cannot be merged automatically by git. You may need to manually merge any changes that cannot be merged automatically by git.
### Thanks
Massive thank you to [lwj5](https://github.com/lwj5) for the tireless work to continually improve the dockerfile and its associated tooling.
## Support ## Support
If you discover a bug, please create and issue, if you query is general in nature please visit us on our [Forum ](https://forum.invoiceninja.com/) If you discover a bug, please create and issue, if you query is general in nature please visit us on our [Forum ](https://forum.invoiceninja.com/)

View File

@@ -1,4 +1,4 @@
ARG PHP_VERSION=7.2 ARG PHP_VERSION=7.3
ARG BAK_STORAGE_PATH=/var/www/app/docker-backup-storage/ ARG BAK_STORAGE_PATH=/var/www/app/docker-backup-storage/
ARG BAK_PUBLIC_PATH=/var/www/app/docker-backup-public/ ARG BAK_PUBLIC_PATH=/var/www/app/docker-backup-public/
@@ -70,4 +70,4 @@ ENV SELF_UPDATER_SOURCE ''
VOLUME /var/www/app/public VOLUME /var/www/app/public
ENTRYPOINT ["docker-entrypoint"] ENTRYPOINT ["docker-entrypoint"]
CMD ["php-fpm"] CMD ["php-fpm"]

1
alpine/4/cache_buster Normal file
View File

@@ -0,0 +1 @@
Fri Jul 2 7:33:22 +00 2021

View File

@@ -1,4 +1,4 @@
ARG PHP_VERSION=7.4 ARG PHP_VERSION=8.1
ARG BAK_STORAGE_PATH=/var/www/app/docker-backup-storage/ ARG BAK_STORAGE_PATH=/var/www/app/docker-backup-storage/
ARG BAK_PUBLIC_PATH=/var/www/app/docker-backup-public/ ARG BAK_PUBLIC_PATH=/var/www/app/docker-backup-public/
@@ -28,10 +28,14 @@ RUN --mount=target=/var/www/app/node_modules,type=cache \
&& mv /var/www/app/public $BAK_PUBLIC_PATH && mv /var/www/app/public $BAK_PUBLIC_PATH
# Prepare php image # Prepare php image
FROM php:${PHP_VERSION}-fpm-alpine3.13 as prod FROM php:${PHP_VERSION}-fpm-alpine3.15 as prod
LABEL maintainer="David Bomba <turbo124@gmail.com>" LABEL maintainer="David Bomba <turbo124@gmail.com>"
# Adding caching_sha2_password.so
# With this we get native support for caching_sha2_password
RUN apk add --no-cache mariadb-connector-c
RUN mv /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini RUN mv /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini
# Install PHP extensions # Install PHP extensions
@@ -53,6 +57,7 @@ RUN install-php-extensions \
# Install chromium # Install chromium
RUN set -eux; \ RUN set -eux; \
apk add --no-cache \ apk add --no-cache \
font-isas-misc \
supervisor \ supervisor \
mysql-client \ mysql-client \
git \ git \

View File

@@ -1,15 +1,15 @@
dependencies: dependencies:
- name: common - name: common
repository: https://charts.bitnami.com/bitnami repository: https://charts.bitnami.com/bitnami
version: 1.7.0 version: 2.2.2
- name: nginx - name: nginx
repository: https://charts.bitnami.com/bitnami repository: https://charts.bitnami.com/bitnami
version: 9.3.6 version: 13.2.20
- name: mariadb - name: mariadb
repository: https://charts.bitnami.com/bitnami repository: https://charts.bitnami.com/bitnami
version: 9.3.16 version: 11.4.2
- name: redis - name: redis
repository: https://charts.bitnami.com/bitnami repository: https://charts.bitnami.com/bitnami
version: 14.6.6 version: 16.13.2
digest: sha256:a9dced490c24324a0d76821d94569c12b49a2f40d7dc8f6aa07c139f116bf5ec digest: sha256:da0dca54f32ca0465f89744d6247421ad13c907f09cd40fb21985c81888aaef1
generated: "2021-07-09T20:05:19.280732+08:00" generated: "2022-12-23T12:54:52.476889+08:00"

View File

@@ -13,11 +13,11 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes # This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version. # to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/) # Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.7.7 version: 0.10.1
# This is the version number of the application being deployed. This version number should be # This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to # incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using. # follow Semantic Versioning. They should reflect the version the application is using.
appVersion: 5.2.10 appVersion: 5.5.49
keywords: keywords:
- invoiceninja - invoiceninja
home: https://invoiceninja.github.io/dockerfiles home: https://invoiceninja.github.io/dockerfiles
@@ -29,19 +29,19 @@ dependencies:
repository: https://charts.bitnami.com/bitnami repository: https://charts.bitnami.com/bitnami
tags: tags:
- bitnami-common - bitnami-common
version: 1.x.x version: 2.x.x
- condition: nginx.enabled - condition: nginx.enabled
name: nginx name: nginx
repository: https://charts.bitnami.com/bitnami repository: https://charts.bitnami.com/bitnami
version: 9.x.x version: 13.x.x
- condition: mariadb.enabled - condition: mariadb.enabled
name: mariadb name: mariadb
repository: https://charts.bitnami.com/bitnami repository: https://charts.bitnami.com/bitnami
version: 9.3.x version: 11.4.x
- condition: redis.enabled - condition: redis.enabled
name: redis name: redis
repository: https://charts.bitnami.com/bitnami repository: https://charts.bitnami.com/bitnami
version: 14.x.x version: 16.x.x
maintainers: maintainers:
- email: lwj5@hotmail.com - email: lwj5@hotmail.com
name: lwj5 name: lwj5

View File

@@ -88,7 +88,7 @@ The following table shows the configuration options for the Invoice Ninja helm c
| `cacheDriver` | Name of cache driver to use | `nil` | | `cacheDriver` | Name of cache driver to use | `nil` |
| `sessionDriver` | Name of session driver to use | `nil` | | `sessionDriver` | Name of session driver to use | `nil` |
| `queueConnection` | Name of queue connection to use | `nil` | | `queueConnection` | Name of queue connection to use | `nil` |
| `snappdf` | Use snappdf instead of Phantom JS PDF generation | `true` | | `pdfGenerator` | PDF generation method (Allowed values: `snappdf` or `phantom`) | `snappdf` |
| `mailer` | Name of the mailer to use (log, smtp, etc.) | `log` | | `mailer` | Name of the mailer to use (log, smtp, etc.) | `log` |
| `requireHttps` | Force HTTPS for internal connections to Invoice Ninja (see #349) | `false` | | `requireHttps` | Force HTTPS for internal connections to Invoice Ninja (see #349) | `false` |
| `existingSecret` | Use existing secret that contain the keys `APP_KEY` and `IN_PASSWORD` | `nil` | | `existingSecret` | Use existing secret that contain the keys `APP_KEY` and `IN_PASSWORD` | `nil` |
@@ -102,7 +102,7 @@ The following table shows the configuration options for the Invoice Ninja helm c
| `readinessProbe` | Readiness probe configuration for Invoice Ninja | Check `values.yaml` file | | `readinessProbe` | Readiness probe configuration for Invoice Ninja | Check `values.yaml` file |
| `containerPorts.fastcgi` | FastCGI port to expose at container level | `9000` | | `containerPorts.fastcgi` | FastCGI port to expose at container level | `9000` |
### Inline web server container parameters (only used when `nginx.enabled` is false) ### Inline web server container parameters (only used when `nginx.enabled` is **not** set to true)
| Parameter | Description | Default | | Parameter | Description | Default |
| ------------------------ | -------------------------------------------------------- | ------------------------------------------------------- | | ------------------------ | -------------------------------------------------------- | ------------------------------------------------------- |
@@ -169,7 +169,7 @@ The following table shows the configuration options for the Invoice Ninja helm c
| `service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` | | `service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` |
| `service.annotations` | Service annotations | `{}` (evaluated as a template) | | `service.annotations` | Service annotations | `{}` (evaluated as a template) |
#### Inline web server (only used when `nginx.enabled` is false) #### Inline web server (only used when `nginx.enabled` is **not** set to true)
| Parameter | Description | Default | | Parameter | Description | Default |
| --------------------------------------- | -------------------------------------------------------------------------- | ------------------------------ | | --------------------------------------- | -------------------------------------------------------------------------- | ------------------------------ |
@@ -187,20 +187,7 @@ The following table shows the configuration options for the Invoice Ninja helm c
### Ingress parameters ### Ingress parameters
#### Nginx sub-chart #### Inline web server (only used when `nginx.enabled` is **not** set to true)
| Parameter | Description | Default |
| ------------------------------------ | ------------------------------------- | ------------------------------------------------------ |
| `nginx.enabled` | Deploy Nginx sub-chart | `true` |
| `nginx.service.type` | Kubernetes Service type | `ClusterIP` |
| `nginx.ingress.enabled` | Enable ingress controller resource | `true` |
| `nginx.ingress.hostname` | Default host for the ingress resource | `invoiceninja.local` |
| `nginx.existingServerBlockConfigmap` | Custom NGINX server block config map | `{{ include "invoiceninja.nginx.serverBlockName" . }}` |
| `nginx.staticSitePVC` | Name of Invoice Ninja public PVC | `{{ include "invoiceninja.public.storageName" . }}` |
> See [Dependencies](#dependencies) for more.
#### Inline web server (only used when `nginx.enabled` is false)
| Parameter | Description | Default | | Parameter | Description | Default |
| -------------------------- | ----------------------------------------------------------------------------------------------------- | ------------------------ | | -------------------------- | ----------------------------------------------------------------------------------------------------- | ------------------------ |
@@ -218,6 +205,19 @@ The following table shows the configuration options for the Invoice Ninja helm c
| `ingress.extraTls` | TLS configuration for additional hostname(s) to be covered with this ingress record | `[]` | | `ingress.extraTls` | TLS configuration for additional hostname(s) to be covered with this ingress record | `[]` |
| `ingress.secrets` | Custom TLS certificates as secrets | `[]` | | `ingress.secrets` | Custom TLS certificates as secrets | `[]` |
#### Nginx sub-chart
| Parameter | Description | Default |
| ------------------------------------ | ------------------------------------- | ------------------------------------------------------ |
| `nginx.enabled` | Deploy Nginx sub-chart | `false` |
| `nginx.service.type` | Kubernetes Service type | `ClusterIP` |
| `nginx.ingress.enabled` | Enable ingress controller resource | `true` |
| `nginx.ingress.hostname` | Default host for the ingress resource | `invoiceninja.local` |
| `nginx.existingServerBlockConfigmap` | Custom NGINX server block config map | `{{ include "invoiceninja.nginx.serverBlockName" . }}` |
| `nginx.staticSitePVC` | Name of Invoice Ninja public PVC | `{{ include "invoiceninja.public.storageName" . }}` |
> See [Dependencies](#dependencies) for more.
### Persistence parameters ### Persistence parameters
| Parameter | Description | Default | | Parameter | Description | Default |
@@ -225,10 +225,10 @@ The following table shows the configuration options for the Invoice Ninja helm c
| `persistence.public.enabled` | Enable persistence using PVC | `true` | | `persistence.public.enabled` | Enable persistence using PVC | `true` |
| `persistence.public.existingClaim` | Enable persistence using an existing PVC | `nil` | | `persistence.public.existingClaim` | Enable persistence using an existing PVC | `nil` |
| `persistence.public.storageClass` | PVC Storage Class | `nil` | | `persistence.public.storageClass` | PVC Storage Class | `nil` |
| `persistence.public.accessModes` | PVC Access Modes | `[ReadWriteMany]` | | `persistence.public.accessModes` | PVC Access Modes | `[ReadWriteOnce]` |
| `persistence.public.size` | PVC Storage Request | `1Gi` | | `persistence.public.size` | PVC Storage Request | `1Gi` |
| `persistence.public.dataSource` | PVC data source | `{}` | | `persistence.public.dataSource` | PVC data source | `{}` |
| `persistence.storage.enabled` | Enable persistence using PVC (only for FILE driver) | `true` | | `persistence.storage.enabled` | Enable persistence using PVC (only for FILE driver) | `false` |
| `persistence.storage.existingClaim` | Enable persistence using an existing PVC | `nil` | | `persistence.storage.existingClaim` | Enable persistence using an existing PVC | `nil` |
| `persistence.storage.storageClass` | PVC Storage Class | `nil` | | `persistence.storage.storageClass` | PVC Storage Class | `nil` |
| `persistence.storage.accessModes` | PVC Access Modes | `[ReadWriteMany]` | | `persistence.storage.accessModes` | PVC Access Modes | `[ReadWriteMany]` |
@@ -245,6 +245,8 @@ The following table shows the configuration options for the Invoice Ninja helm c
| `redis.auth.password` | Redis password | _random 10 character alphanumeric string_ | | `redis.auth.password` | Redis password | _random 10 character alphanumeric string_ |
| `redis.auth.sentinel` | Use password for sentinel containers | `false` | | `redis.auth.sentinel` | Use password for sentinel containers | `false` |
| `redis.sentinel.enabled` | Enable sentinel containers | `true` | | `redis.sentinel.enabled` | Enable sentinel containers | `true` |
| `redis.sentinel.quorum` | Sentinel Quorum | `1` |
| `redis.replica.replicaCount` | Number of Redis replicas to deploy | `1` |
| `externalRedis.host` | Host of the external redis | `nil` | | `externalRedis.host` | Host of the external redis | `nil` |
| `externalRedis.port` | Port of the external redis | `6379` | | `externalRedis.port` | Port of the external redis | `6379` |
| `externalRedis.password` | Password for the external redis | `nil` | | `externalRedis.password` | Password for the external redis | `nil` |
@@ -290,27 +292,29 @@ Specify each parameter using the `--set key=value[,key=value]` argument to `helm
helm install invoiceninja \ helm install invoiceninja \
--set appKey=changeit \ --set appKey=changeit \
--set replicaCount=3 \ --set replicaCount=3 \
--set nginx.replicaCount=3 \ --set persistence.public.accessModes[0]=ReadWriteMany
--set redis.auth.password=changeit \ --set redis.auth.password=changeit \
--set redis.sentinel.quorum=2 \
--set redis.replica.replicaCount=3 \
--set mariadb.auth.rootPassword=changeit \ --set mariadb.auth.rootPassword=changeit \
--set mariadb.auth.password=changeit \ --set mariadb.auth.password=changeit \
invoiceninja/invoiceninja invoiceninja/invoiceninja
``` ```
The above command sets the number of replicas to 3 for a highly available (HA) setup. Note that you would need to use an external DB such as MariaDB Galera for a full HA production setup. For a production environment, it is recommended that you spin up the required databases in a separate Helm Chart to decouple the upgrading process. The above command sets the number of replicas to 3 for a highly available (HA) setup and uses a `ReadWriteMany` volume. Note that you would need to use an external DB such as MariaDB Galera for a full HA production setup. For a production environment, it is recommended that you spin up the required databases in a separate Helm Chart to decouple the upgrading process.
Alternatively, a YAML file that specifies the values for the parameters can be provided while [installing](https://helm.sh/docs/helm/helm_install/) the chart. For example, Alternatively, a YAML file that specifies the values for the parameters can be provided while [installing](https://helm.sh/docs/helm/helm_install/) the chart. For example,
```yaml ```yaml
# values.yaml # values.yaml
appKey: changeit appKey: changeit
replicaCount: 3 persistence:
nginx: public:
replicaCount: 3 accessModes:
- ReadWriteMany
redis: redis:
cluster: auth:
slaveCount: 3 password: changeit
password: changeit
mariadb: mariadb:
auth: auth:
rootPassword: changeit rootPassword: changeit
@@ -346,17 +350,39 @@ extraEnvVarsCM: examplemap
## Inline webserver vs Nginx sub-chart ## Inline webserver vs Nginx sub-chart
If you have the ability to use `ReadWriteMany` persistent volume access mode, using the Nginx sub-chart will provide you with the most features, such as: Since there are many people without access to a `ReadWriteMany` volume, the inline Nginx web server will allow you to use a `ReadWriteOnce` public volume limited to 1 IN replica.
If you have the ability to use `ReadWriteMany` persistent volume, you can choose between the two by setting the `nginx.enabled` parameter. Setting `nginx.enabled` to true will enable the Nginx sub-chart and will provide you with some additional features, such as:
- independent scaling of Nginx and IN pods - independent scaling of Nginx and IN pods
- built-in TLS functionality - separate resource limits/requests
- high-availability - other features available from the sub-chart
However, since there are a lot of people without access to this volume type, using the inline Nginx web server will allow you to use a `ReadWriteOnce` public volume. Please note that you will need to change `persistence.public.accessModes` parameter and disable the Nginx sub-chart by setting `nginx.enabled` to false. Also, you will be limited 1 IN replica.
## Upgrading ## Upgrading
### To 0.10.0
The following chart dependencies have been upgraded.
- MariaDB
- Redis
- Nginx
- Bitnami common
Please take note that this upgrade MariaDB from 10.5 to 10.6. Please backup your database before proceeding.
### To 0.8.0
To improve the accessibility of this chart to regular users. Some of the defaults have been changed. This include:
- `persistence.public.accessModes` now defaults to `ReadWriteOnce`.
- `nginx.enabled` now defaults to false.
- `redis.replica.replicaCount` and `redis.sentinel.quorum` now defaults to `1`.
Other changes:
- `snappdf` parameter has been replaced by `pdfGenerator`.
### To 0.7.0 ### To 0.7.0
- Redis chart dependency has been upgraded and may not be backwards compatible with previous versions. See [here](https://github.com/bitnami/charts/tree/master/bitnami/redis) for more info. - Redis chart dependency has been upgraded and may not be backwards compatible with previous versions. See [here](https://github.com/bitnami/charts/tree/master/bitnami/redis) for more info.
- Storage persitence defaults to `false`, set to `true` if not using Redis, or using any FILE driver - Storage persitence defaults to `false`. Set to `true` if not using Redis or using FILE driver

View File

@@ -44,7 +44,9 @@ data:
{{- else if or .Values.redis.enabled .Values.externalRedis.host }} {{- else if or .Values.redis.enabled .Values.externalRedis.host }}
QUEUE_CONNECTION: redis QUEUE_CONNECTION: redis
{{- end }} {{- end }}
PHANTOMJS_PDF_GENERATION: {{ not .Values.snappdf | quote}} # PHANTOMJS_PDF_GENERATION is deprecated
PHANTOMJS_PDF_GENERATION: "false"
PDF_GENERATOR: {{ .Values.pdfGenerator | quote}}
REDIS_HOST: {{ include "invoiceninja.redisHost" . | quote }} REDIS_HOST: {{ include "invoiceninja.redisHost" . | quote }}
REDIS_PORT: {{ include "invoiceninja.redisPort" . | quote }} REDIS_PORT: {{ include "invoiceninja.redisPort" . | quote }}
REDIS_DB: {{ include "invoiceninja.redisDatabase" . | quote }} REDIS_DB: {{ include "invoiceninja.redisDatabase" . | quote }}

View File

@@ -66,7 +66,7 @@ spec:
[[ -z "${DB_HOST1}" ]] || DB_HOST="${DB_HOST1}"; [[ -z "${DB_HOST1}" ]] || DB_HOST="${DB_HOST1}";
[[ -z "${DB_PORT1}" ]] || DB_PORT="${DB_PORT1}"; [[ -z "${DB_PORT1}" ]] || DB_PORT="${DB_PORT1}";
while [ $COUNTER -lt 120 ]; do while [ $COUNTER -lt 120 ]; do
if mysqladmin ping -h "$DB_HOST" -P $DB_PORT --silent; then if mysqladmin ping -h "$DB_HOST" -P $DB_PORT --connect-timeout=15 --silent; then
exit 0; exit 0;
fi; fi;
let COUNTER=COUNTER+1; let COUNTER=COUNTER+1;

View File

@@ -15,6 +15,7 @@ data:
server-block.conf: |- server-block.conf: |-
server { server {
listen 8080 default_server; listen 8080 default_server;
listen [::]:8080 default_server;
server_name _; server_name _;
root /app; root /app;

View File

@@ -18,7 +18,7 @@
image: image:
registry: docker.io registry: docker.io
repository: invoiceninja/invoiceninja repository: invoiceninja/invoiceninja
tag: 5.2.10 tag: 5.5.49
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
## ##
@@ -77,8 +77,9 @@ queueConnection: ""
trustedProxies: "*" trustedProxies: "*"
## Use local or Phantom JS PDF generation ## Use local or Phantom JS PDF generation
## Options are `snappdf` or `phantom`
## ##
snappdf: true pdfGenerator: snappdf
## Name of queue connection to use (use "log" for debug) ## Name of queue connection to use (use "log" for debug)
## Please check the ref below for any other env you may need to define ## Please check the ref below for any other env you may need to define
@@ -297,7 +298,7 @@ http:
image: image:
registry: docker.io registry: docker.io
repository: bitnami/nginx repository: bitnami/nginx
tag: 1.21.1-debian-10-r0 tag: 1.22.1-debian-11-r21
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
## ##
@@ -548,14 +549,14 @@ persistence:
## If you want to reuse an existing claim, you can pass the name of the PVC using ## If you want to reuse an existing claim, you can pass the name of the PVC using
## the existingClaim variable ## the existingClaim variable
# existingClaim: your-claim # existingClaim: your-claim
accessMode: ReadWriteMany accessMode: ReadWriteOnce
size: 1Gi size: 1Gi
## Custom dataSource ## Custom dataSource
## ##
dataSource: {} dataSource: {}
storage: storage:
## Only required when using FILE cache or session driver ## Only required when using FILE cache or session driver
enabled: true enabled: false
## Invoice Ninja data Persistent Volume Storage Class ## Invoice Ninja data Persistent Volume Storage Class
## If defined, storageClassName: <storageClass> ## If defined, storageClassName: <storageClass>
## If set to "-", storageClassName: "", which disables dynamic provisioning ## If set to "-", storageClassName: "", which disables dynamic provisioning
@@ -590,6 +591,9 @@ redis:
sentinel: false sentinel: false
sentinel: sentinel:
enabled: true enabled: true
quorum: 1
replica:
replicaCount: 1
## External Redis Configuration ## External Redis Configuration
## ##
@@ -668,7 +672,7 @@ externalDatabase:
## ref: https://github.com/bitnami/charts/blob/master/bitnami/nginx/values.yaml ## ref: https://github.com/bitnami/charts/blob/master/bitnami/nginx/values.yaml
## ##
nginx: nginx:
enabled: true enabled: false
service: service:
## Service type ## Service type
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types

View File

@@ -1,4 +1,4 @@
FROM mysql:5 FROM mysql:8
# When running on ARM64 use MariaDB instead of MySQL # When running on ARM64 use MariaDB instead of MySQL
#FROM mariadb:10.4 #FROM mariadb:10.4
ENV force_color_prompt yes ENV force_color_prompt yes

View File

@@ -38,7 +38,7 @@ services:
- "in5.localhost:192.168.0.124 " #host and ip - "in5.localhost:192.168.0.124 " #host and ip
db: db:
image: mysql:5 image: mysql:8
# When running on ARM64 use MariaDB instead of MySQL # When running on ARM64 use MariaDB instead of MySQL
# image: mariadb:10.4 # image: mariadb:10.4
# For auto DB backups comment out image and use the build block below # For auto DB backups comment out image and use the build block below

4
env
View File

@@ -4,6 +4,10 @@ APP_KEY=<insert your generated key in here>
APP_DEBUG=true APP_DEBUG=true
REQUIRE_HTTPS=false REQUIRE_HTTPS=false
PHANTOMJS_PDF_GENERATION=false PHANTOMJS_PDF_GENERATION=false
PDF_GENERATOR=snappdf
TRUSTED_PROXIES='*'
QUEUE_CONNECTION=database QUEUE_CONNECTION=database
# DB connection # DB connection