mirror of
https://github.com/invoiceninja/dockerfiles.git
synced 2026-01-06 14:37:26 +01:00
Compare commits
188 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ff3b7263f5 | ||
|
|
ba896fcc03 | ||
|
|
b53ed7c914 | ||
|
|
e3fd4afb7d | ||
|
|
afceccfaf6 | ||
|
|
320cdc961d | ||
|
|
7e466b38a3 | ||
|
|
c5bb7960c3 | ||
|
|
3bf4174cbf | ||
|
|
18550bcf3e | ||
|
|
83bfb1b22f | ||
|
|
e4b3e0f0f1 | ||
|
|
a060c70d3f | ||
|
|
d8749fa049 | ||
|
|
febb70263c | ||
|
|
4b6b287906 | ||
|
|
e0bb394346 | ||
|
|
914bebebf6 | ||
|
|
e617f2d808 | ||
|
|
3a4f138f6a | ||
|
|
ce9ce4fd26 | ||
|
|
d01706a734 | ||
|
|
00e54c9c23 | ||
|
|
4ea7218cd8 | ||
|
|
e161a85133 | ||
|
|
d27c1a22d8 | ||
|
|
83dbf94c2b | ||
|
|
c0ee1a5521 | ||
|
|
018e0e7b2a | ||
|
|
07a211bc13 | ||
|
|
4c9ae7e92f | ||
|
|
fe1ff5c496 | ||
|
|
3a0d184fb2 | ||
|
|
42c62adf1a | ||
|
|
7a72c2ef16 | ||
|
|
974df2fa20 | ||
|
|
7629f51492 | ||
|
|
977e2001f0 | ||
|
|
a520f32385 | ||
|
|
9b63fc3fbc | ||
|
|
cbaf961012 | ||
|
|
797aa6bdf8 | ||
|
|
103b912467 | ||
|
|
7a171b96c7 | ||
|
|
c69093a265 | ||
|
|
8863ed9e38 | ||
|
|
76b5e10318 | ||
|
|
9941847af7 | ||
|
|
edf21b5d4f | ||
|
|
7acd479cfd | ||
|
|
bed751ce18 | ||
|
|
303bc81d3d | ||
|
|
47e5c41a19 | ||
|
|
89a994b12f | ||
|
|
5984339118 | ||
|
|
47dba02b27 | ||
|
|
1aca36878c | ||
|
|
cf324703a8 | ||
|
|
df2ea66cda | ||
|
|
02eed022ac | ||
|
|
738546d7b1 | ||
|
|
e31a2b77bc | ||
|
|
50debff2da | ||
|
|
492d895d06 | ||
|
|
51294f6b76 | ||
|
|
81617a3dec | ||
|
|
a874ceb7c2 | ||
|
|
4a3d8783d4 | ||
|
|
84a6637f80 | ||
|
|
821f3f5ec7 | ||
|
|
dafd4051d3 | ||
|
|
c6b44487f3 | ||
|
|
b2e03ce544 | ||
|
|
78fd70118a | ||
|
|
59616eada8 | ||
|
|
0fab60378a | ||
|
|
47db01612d | ||
|
|
1a1cea632b | ||
|
|
5609b988f3 | ||
|
|
0f9d39998f | ||
|
|
fd01abb0a0 | ||
|
|
6887e2b30a | ||
|
|
6faf1dc135 | ||
|
|
d7cd59c80f | ||
|
|
8206377870 | ||
|
|
93214291c9 | ||
|
|
f3477e6e80 | ||
|
|
d766e8284c | ||
|
|
08e24b4b01 | ||
|
|
43cc7417ba | ||
|
|
150abf1d6e | ||
|
|
31b3d309b3 | ||
|
|
cb74a1f93b | ||
|
|
f566ec5715 | ||
|
|
91cc86af6d | ||
|
|
7bac478538 | ||
|
|
f93fa6b874 | ||
|
|
d9a40ebb43 | ||
|
|
db5d0ebf50 | ||
|
|
926b3d618b | ||
|
|
85d256a435 | ||
|
|
acf9c22ff7 | ||
|
|
b0ebac9719 | ||
|
|
65c5ceb69b | ||
|
|
6aa39b4b57 | ||
|
|
c4ac430d1b | ||
|
|
87066953d3 | ||
|
|
3969a37852 | ||
|
|
bec60de1e7 | ||
|
|
c0150debbf | ||
|
|
f45261617f | ||
|
|
21b6cf1f26 | ||
|
|
d3a4948641 | ||
|
|
a9a6b72c7a | ||
|
|
4fd6ca33c8 | ||
|
|
bca8404f5f | ||
|
|
3cf7c28875 | ||
|
|
96dee55e7f | ||
|
|
ae592a8407 | ||
|
|
b72757ead0 | ||
|
|
a20fc14683 | ||
|
|
0e2934d1e3 | ||
|
|
fefc51ccf1 | ||
|
|
acdd6851ff | ||
|
|
6ff8e04aa7 | ||
|
|
86f1dd43cf | ||
|
|
cc1f569324 | ||
|
|
c78f7a7bdf | ||
|
|
7198222787 | ||
|
|
4ef4531a4e | ||
|
|
c51d113abe | ||
|
|
dddd558873 | ||
|
|
5727550983 | ||
|
|
03536efb6a | ||
|
|
6a05bdbbd5 | ||
|
|
e5debf03d4 | ||
|
|
33a55e362b | ||
|
|
70e1de9a95 | ||
|
|
e1b113bba1 | ||
|
|
c967aaccf4 | ||
|
|
15aefa698b | ||
|
|
c9beedc84b | ||
|
|
d409d9696a | ||
|
|
7d977a41e3 | ||
|
|
8db5c792a8 | ||
|
|
b3768cbed3 | ||
|
|
25d2d1d271 | ||
|
|
abfb5d1338 | ||
|
|
300c2d236d | ||
|
|
56e451ea8b | ||
|
|
ad3ffc227d | ||
|
|
e64db79c75 | ||
|
|
5fcad81fc2 | ||
|
|
2e383ef879 | ||
|
|
bb6b3dc1e8 | ||
|
|
4a7b28f1d0 | ||
|
|
1699ddde65 | ||
|
|
63431878b8 | ||
|
|
03cc1ff548 | ||
|
|
4aa7a7032c | ||
|
|
4fa02c2785 | ||
|
|
d25210c8b9 | ||
|
|
f97fdda827 | ||
|
|
5188c45b41 | ||
|
|
e3873bcac2 | ||
|
|
24ef742ce1 | ||
|
|
886dfe7832 | ||
|
|
0054620e55 | ||
|
|
4b82f750fc | ||
|
|
97d339df4e | ||
|
|
906cfb0c87 | ||
|
|
62a7f6d7cf | ||
|
|
1d97234b51 | ||
|
|
aab280dcc1 | ||
|
|
faffcadc45 | ||
|
|
25b3654a53 | ||
|
|
46cd35bf32 | ||
|
|
53b4e6dafd | ||
|
|
27b6c82fe4 | ||
|
|
64fdd58ba9 | ||
|
|
85519a0038 | ||
|
|
5d5f34b7e7 | ||
|
|
774b8cb6eb | ||
|
|
76a0886278 | ||
|
|
2bac5707ae | ||
|
|
c17e37c4b8 | ||
|
|
08f9493f0d | ||
|
|
40f483a32d |
2
.github/workflows/build-image-v4.yaml
vendored
2
.github/workflows/build-image-v4.yaml
vendored
@@ -31,7 +31,7 @@ jobs:
|
|||||||
uses: docker/setup-buildx-action@v1
|
uses: docker/setup-buildx-action@v1
|
||||||
|
|
||||||
- name: Cache Docker layers
|
- name: Cache Docker layers
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: /tmp/.buildx-cache
|
path: /tmp/.buildx-cache
|
||||||
key: ${{ runner.os }}-buildx-4-${{ hashFiles('alpine/5/cache_buster') }}-${{ github.sha }}
|
key: ${{ runner.os }}-buildx-4-${{ hashFiles('alpine/5/cache_buster') }}-${{ github.sha }}
|
||||||
|
|||||||
8
.github/workflows/build-image-v5.yaml
vendored
8
.github/workflows/build-image-v5.yaml
vendored
@@ -16,7 +16,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
docker:
|
docker:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
@@ -31,7 +31,7 @@ jobs:
|
|||||||
uses: docker/setup-buildx-action@v1
|
uses: docker/setup-buildx-action@v1
|
||||||
|
|
||||||
- name: Cache Docker layers
|
- name: Cache Docker layers
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: /tmp/.buildx-cache
|
path: /tmp/.buildx-cache
|
||||||
key: ${{ runner.os }}-buildx-5-${{ hashFiles('alpine/5/cache_buster') }}-${{ github.sha }}
|
key: ${{ runner.os }}-buildx-5-${{ hashFiles('alpine/5/cache_buster') }}-${{ github.sha }}
|
||||||
@@ -44,7 +44,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
builder: ${{ steps.buildx.outputs.name }}
|
builder: ${{ steps.buildx.outputs.name }}
|
||||||
context: ./alpine/5/
|
context: ./alpine/5/
|
||||||
build-args: INVOICENINJA_VERSION=5-stable
|
build-args: INVOICENINJA_VERSION=5-develop
|
||||||
target: prod
|
target: prod
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
tags: invoiceninja/invoiceninja:cache
|
tags: invoiceninja/invoiceninja:cache
|
||||||
@@ -54,4 +54,4 @@ jobs:
|
|||||||
- name: Move cache
|
- name: Move cache
|
||||||
run: |
|
run: |
|
||||||
rm -rf /tmp/.buildx-cache
|
rm -rf /tmp/.buildx-cache
|
||||||
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
|
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
|
||||||
16
.github/workflows/publish-image.yaml
vendored
16
.github/workflows/publish-image.yaml
vendored
@@ -11,7 +11,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
docker:
|
docker:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
@@ -31,9 +31,9 @@ jobs:
|
|||||||
if [[ $VERSION =~ ^5\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
|
if [[ $VERSION =~ ^5\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
|
||||||
TAGS="$TAGS,${DOCKER_IMAGE}:latest"
|
TAGS="$TAGS,${DOCKER_IMAGE}:latest"
|
||||||
fi
|
fi
|
||||||
echo ::set-output name=tags::${TAGS}
|
echo "tags=${TAGS}" >> $GITHUB_OUTPUT
|
||||||
echo ::set-output name=version::${VERSION}
|
echo "version=${VERSION}" >> $GITHUB_OUTPUT
|
||||||
echo ::set-output name=major::${MAJOR}
|
echo "major=${MAJOR}" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v1
|
uses: docker/setup-qemu-action@v1
|
||||||
@@ -45,12 +45,12 @@ jobs:
|
|||||||
uses: docker/setup-buildx-action@v1
|
uses: docker/setup-buildx-action@v1
|
||||||
|
|
||||||
- name: Cache Docker layers
|
- name: Cache Docker layers
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v4
|
||||||
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') }}-${{ github.sha }}
|
key: ${{ runner.os }}-buildx-5-${{ hashFiles('alpine/5/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-5-${{ hashFiles('alpine/5/cache_buster') }}-
|
||||||
|
|
||||||
- name: Login to DockerHub
|
- name: Login to DockerHub
|
||||||
if: github.event_name != 'pull_request'
|
if: github.event_name != 'pull_request'
|
||||||
@@ -79,4 +79,4 @@ jobs:
|
|||||||
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
|
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
|
||||||
|
|
||||||
- name: Image digest
|
- name: Image digest
|
||||||
run: echo ${{ steps.docker_build.outputs.digest }}
|
run: echo ${{ steps.docker_build.outputs.digest }}
|
||||||
10
.github/workflows/release-chart.yaml
vendored
10
.github/workflows/release-chart.yaml
vendored
@@ -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 }}"
|
||||||
|
|||||||
55
.github/workflows/test-charts.yaml
vendored
55
.github/workflows/test-charts.yaml
vendored
@@ -12,19 +12,20 @@ jobs:
|
|||||||
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
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@v4
|
||||||
|
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
|
||||||
|
|||||||
18
README.md
18
README.md
@@ -1,10 +1,14 @@
|
|||||||

|
|
||||||
[](https://hub.docker.com/r/invoiceninja/invoiceninja)
|
[](https://hub.docker.com/r/invoiceninja/invoiceninja)
|
||||||
[](https://hub.docker.com/r/invoiceninja/invoiceninja)
|
[](https://hub.docker.com/r/invoiceninja/invoiceninja)
|
||||||
[](https://artifacthub.io/packages/search?repo=invoiceninja)
|
[](https://artifacthub.io/packages/search?repo=invoiceninja)
|
||||||
[](https://github.com/invoiceninja/dockerfiles/actions/workflows/publish-image.yaml) [](https://github.com/invoiceninja/dockerfiles/actions/workflows/build-image-v5.yaml)
|
[](https://github.com/invoiceninja/dockerfiles/actions/workflows/publish-image.yaml)
|
||||||
|
[](https://github.com/invoiceninja/dockerfiles/actions/workflows/build-image-v5.yaml)
|
||||||
|
|
||||||
|
# Deprecation Notice
|
||||||
|
|
||||||
|
The master branch is not longer receiving active updates. We will continue to tag new releases whilst compatibility with underlying packages remains, however we will not be updating this image going forward.
|
||||||
|
|
||||||
|
Instead, please use the debian branch [here](https://github.com/invoiceninja/dockerfiles/tree/debian) this image is a completely fresh start based on the debian image and allows improved package support.
|
||||||
|
|
||||||
# Docker for [Invoice Ninja](https://www.invoiceninja.com/)
|
# Docker for [Invoice Ninja](https://www.invoiceninja.com/)
|
||||||
|
|
||||||
@@ -22,7 +26,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 +89,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 +101,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/)
|
||||||
|
|||||||
@@ -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,43 +1,51 @@
|
|||||||
ARG PHP_VERSION=7.4
|
ARG ALPINE_VERSION=3.20
|
||||||
|
ARG PHP_VERSION=8.2
|
||||||
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/
|
||||||
|
|
||||||
# Get Invoice Ninja and install nodejs packages
|
# Get Invoice Ninja and install nodejs packages
|
||||||
FROM --platform=$BUILDPLATFORM node:lts-alpine as build
|
FROM --platform=$BUILDPLATFORM node:lts-alpine${ALPINE_VERSION} as nodebuild
|
||||||
|
|
||||||
# Download Invoice Ninja
|
# Download Invoice Ninja
|
||||||
ARG INVOICENINJA_VERSION
|
ARG INVOICENINJA_VERSION
|
||||||
ADD https://github.com/invoiceninja/invoiceninja/tarball/v$INVOICENINJA_VERSION /tmp/ninja.tar.gz
|
ARG REPOSITORY=invoiceninja/invoiceninja
|
||||||
|
ARG FILENAME=invoiceninja.tar.gz
|
||||||
|
|
||||||
|
RUN set -eux; apk add curl unzip grep
|
||||||
|
|
||||||
# Extract Invoice Ninja
|
# Extract Invoice Ninja
|
||||||
RUN mkdir -p /var/www/app \
|
RUN mkdir -p /var/www/app
|
||||||
&& tar --strip-components=1 -xf /tmp/ninja.tar.gz -C /var/www/app/ \
|
RUN curl -sL "https://github.com/invoiceninja/invoiceninja/releases/latest/download/invoiceninja.tar.gz" | \
|
||||||
&& mkdir -p /var/www/app/public/logo /var/www/app/storage \
|
tar -xz -C /var/www/app/
|
||||||
&& mv /var/www/app/.env.example /var/www/app/.env \
|
RUN mkdir -p /var/www/app/public/logo /var/www/app/storage
|
||||||
&& rm -rf /var/www/app/docs /var/www/app/tests
|
|
||||||
|
WORKDIR /var/www/app
|
||||||
WORKDIR /var/www/app/
|
|
||||||
|
|
||||||
# Install node packages
|
|
||||||
ARG BAK_STORAGE_PATH
|
|
||||||
ARG BAK_PUBLIC_PATH
|
|
||||||
RUN --mount=target=/var/www/app/node_modules,type=cache \
|
|
||||||
npm install --production \
|
|
||||||
&& npm run production \
|
|
||||||
&& mv /var/www/app/storage $BAK_STORAGE_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-alpine${ALPINE_VERSION} as phpbuild
|
||||||
|
|
||||||
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
|
||||||
# https://hub.docker.com/r/mlocati/php-extension-installer/tags
|
# https://hub.docker.com/r/mlocati/php-extension-installer/tags
|
||||||
COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/local/bin/
|
COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/local/bin/
|
||||||
|
|
||||||
|
# Install chromium
|
||||||
|
RUN set -eux; \
|
||||||
|
apk add --no-cache \
|
||||||
|
font-isas-misc \
|
||||||
|
supervisor \
|
||||||
|
mysql-client \
|
||||||
|
chromium \
|
||||||
|
ttf-freefont \
|
||||||
|
ttf-dejavu
|
||||||
|
|
||||||
RUN install-php-extensions \
|
RUN install-php-extensions \
|
||||||
bcmath \
|
bcmath \
|
||||||
exif \
|
exif \
|
||||||
@@ -47,18 +55,10 @@ RUN install-php-extensions \
|
|||||||
opcache \
|
opcache \
|
||||||
pdo_mysql \
|
pdo_mysql \
|
||||||
zip \
|
zip \
|
||||||
|
intl \
|
||||||
@composer \
|
@composer \
|
||||||
&& rm /usr/local/bin/install-php-extensions
|
&& rm /usr/local/bin/install-php-extensions
|
||||||
|
|
||||||
# Install chromium
|
|
||||||
RUN set -eux; \
|
|
||||||
apk add --no-cache \
|
|
||||||
supervisor \
|
|
||||||
mysql-client \
|
|
||||||
git \
|
|
||||||
chromium \
|
|
||||||
ttf-freefont
|
|
||||||
|
|
||||||
# Copy files
|
# Copy files
|
||||||
COPY rootfs /
|
COPY rootfs /
|
||||||
|
|
||||||
@@ -74,6 +74,8 @@ RUN addgroup --gid=$UID -S "$INVOICENINJA_USER" \
|
|||||||
--ingroup "$INVOICENINJA_USER" \
|
--ingroup "$INVOICENINJA_USER" \
|
||||||
"$INVOICENINJA_USER"
|
"$INVOICENINJA_USER"
|
||||||
|
|
||||||
|
WORKDIR /var/www/app
|
||||||
|
|
||||||
# Set up app
|
# Set up app
|
||||||
ARG INVOICENINJA_VERSION
|
ARG INVOICENINJA_VERSION
|
||||||
ARG BAK_STORAGE_PATH
|
ARG BAK_STORAGE_PATH
|
||||||
@@ -81,14 +83,30 @@ ARG BAK_PUBLIC_PATH
|
|||||||
ENV INVOICENINJA_VERSION $INVOICENINJA_VERSION
|
ENV INVOICENINJA_VERSION $INVOICENINJA_VERSION
|
||||||
ENV BAK_STORAGE_PATH $BAK_STORAGE_PATH
|
ENV BAK_STORAGE_PATH $BAK_STORAGE_PATH
|
||||||
ENV BAK_PUBLIC_PATH $BAK_PUBLIC_PATH
|
ENV BAK_PUBLIC_PATH $BAK_PUBLIC_PATH
|
||||||
COPY --from=build --chown=$INVOICENINJA_USER:$INVOICENINJA_USER /var/www/app /var/www/app
|
COPY --from=nodebuild --chown=$INVOICENINJA_USER:$INVOICENINJA_USER /var/www/app /var/www/app
|
||||||
|
|
||||||
|
RUN rm -rf /var/www/app/ui
|
||||||
|
|
||||||
USER $UID
|
USER $UID
|
||||||
WORKDIR /var/www/app
|
WORKDIR /var/www/app
|
||||||
|
|
||||||
# Do not remove this ENV
|
# Do not remove this ENV
|
||||||
ENV IS_DOCKER true
|
ENV IS_DOCKER true
|
||||||
RUN /usr/local/bin/composer install --no-dev --quiet
|
FROM --platform=$BUILDPLATFORM nodebuild AS dependencybuild
|
||||||
|
|
||||||
|
WORKDIR /var/www/app
|
||||||
|
COPY --from=phpbuild /var/www/app /var/www/app
|
||||||
|
|
||||||
|
# # Install node packages
|
||||||
|
ARG BAK_STORAGE_PATH
|
||||||
|
ARG BAK_PUBLIC_PATH
|
||||||
|
|
||||||
|
RUN mv /var/www/app/storage $BAK_STORAGE_PATH \
|
||||||
|
&& mv /var/www/app/public $BAK_PUBLIC_PATH
|
||||||
|
|
||||||
|
FROM phpbuild as prod
|
||||||
|
|
||||||
|
COPY --from=dependencybuild --chown=$INVOICENINJA_USER:$INVOICENINJA_USER /var/www/app /var/www/app
|
||||||
|
|
||||||
# Override the environment settings from projects .env file
|
# Override the environment settings from projects .env file
|
||||||
ENV APP_ENV production
|
ENV APP_ENV production
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
Fri Jul 2 7:33:22 +00 2021
|
Fri Jul 4 7:33:22 +00 2023
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
php artisan db:seed --force
|
php artisan db:seed --force
|
||||||
|
php artisan cache:clear
|
||||||
|
|
||||||
# Build up array of arguments...
|
# Build up array of arguments...
|
||||||
if [[ ! -z "${IN_USER_EMAIL}" ]]; then
|
if [[ ! -z "${IN_USER_EMAIL}" ]]; then
|
||||||
@@ -11,4 +12,4 @@ if [[ ! -z "${IN_PASSWORD}" ]]; then
|
|||||||
password="--password ${IN_PASSWORD}"
|
password="--password ${IN_PASSWORD}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
php artisan ninja:create-account $email $password
|
php artisan ninja:create-account $email $password
|
||||||
@@ -27,6 +27,7 @@ docker_process_init_files() {
|
|||||||
|
|
||||||
php artisan config:cache
|
php artisan config:cache
|
||||||
php artisan optimize
|
php artisan optimize
|
||||||
|
php artisan package:discover
|
||||||
|
|
||||||
# Check if DB works, if not crash the app.
|
# Check if DB works, if not crash the app.
|
||||||
DB_READY=$(php artisan tinker --execute='echo app()->call("App\Utils\SystemHealth@dbCheck")["success"];')
|
DB_READY=$(php artisan tinker --execute='echo app()->call("App\Utils\SystemHealth@dbCheck")["success"];')
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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.8
|
version: 0.10.2
|
||||||
# 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.6.24
|
||||||
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
|
||||||
|
|||||||
@@ -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) | `false` |
|
| `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
|
||||||
|
|||||||
@@ -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 }}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
image:
|
image:
|
||||||
registry: docker.io
|
registry: docker.io
|
||||||
repository: invoiceninja/invoiceninja
|
repository: invoiceninja/invoiceninja
|
||||||
tag: 5.2.11
|
tag: 5.6.24
|
||||||
## 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,7 +549,7 @@ 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
|
||||||
##
|
##
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
server {
|
server {
|
||||||
listen 80 default_server;
|
listen 80 default_server;
|
||||||
server_name _;
|
server_name _;
|
||||||
|
|
||||||
|
server_tokens off;
|
||||||
|
|
||||||
client_max_body_size 100M;
|
client_max_body_size 100M;
|
||||||
|
|
||||||
root /var/www/app/public/;
|
root /var/www/app/public/;
|
||||||
@@ -14,6 +16,11 @@ server {
|
|||||||
location = /favicon.ico { access_log off; log_not_found off; }
|
location = /favicon.ico { access_log off; log_not_found off; }
|
||||||
location = /robots.txt { access_log off; log_not_found off; }
|
location = /robots.txt { access_log off; log_not_found off; }
|
||||||
|
|
||||||
|
|
||||||
|
location ~* /storage/.*\.php$ {
|
||||||
|
return 503;
|
||||||
|
}
|
||||||
|
|
||||||
location ~ \.php$ {
|
location ~ \.php$ {
|
||||||
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||||
fastcgi_pass app:9000;
|
fastcgi_pass app:9000;
|
||||||
|
|||||||
18
config/php/php-cli.ini
Normal file
18
config/php/php-cli.ini
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
session.auto_start = Off
|
||||||
|
short_open_tag = Off
|
||||||
|
|
||||||
|
error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_DEPRECATED
|
||||||
|
|
||||||
|
; opcache.enable_cli=1
|
||||||
|
; opcache.fast_shutdown=1
|
||||||
|
; opcache.memory_consumption=256
|
||||||
|
; opcache.interned_strings_buffer=8
|
||||||
|
; opcache.max_accelerated_files=4000
|
||||||
|
; opcache.revalidate_freq=60
|
||||||
|
; # http://symfony.com/doc/current/performance.html
|
||||||
|
; realpath_cache_size = 4096K
|
||||||
|
; realpath_cache_ttl = 600
|
||||||
|
|
||||||
|
memory_limit = 2G
|
||||||
|
post_max_size = 60M
|
||||||
|
upload_max_filesize = 50M
|
||||||
21
config/php/php.ini
Normal file
21
config/php/php.ini
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
session.auto_start = Off
|
||||||
|
short_open_tag = Off
|
||||||
|
|
||||||
|
error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_DEPRECATED
|
||||||
|
|
||||||
|
; opcache.enable=1
|
||||||
|
; opcache.preload=/var/www/app/preload.php
|
||||||
|
; opcache.preload_user=www-data
|
||||||
|
|
||||||
|
; ; The OPcache shared memory storage size.
|
||||||
|
; opcache.max_accelerated_files=300000
|
||||||
|
; opcache.validate_timestamps=1
|
||||||
|
; opcache.revalidate_freq=30
|
||||||
|
; opcache.jit_buffer_size=256M
|
||||||
|
; opcache.jit=1205
|
||||||
|
; opcache.memory_consumption=1024M
|
||||||
|
|
||||||
|
|
||||||
|
post_max_size = 60M
|
||||||
|
upload_max_filesize = 50M
|
||||||
|
memory_limit=512M
|
||||||
@@ -30,6 +30,9 @@ services:
|
|||||||
- ./config/hosts:/etc/hosts:ro
|
- ./config/hosts:/etc/hosts:ro
|
||||||
- ./docker/app/public:/var/www/app/public:rw,delegated
|
- ./docker/app/public:/var/www/app/public:rw,delegated
|
||||||
- ./docker/app/storage:/var/www/app/storage:rw,delegated
|
- ./docker/app/storage:/var/www/app/storage:rw,delegated
|
||||||
|
- ./config/php/php.ini:/usr/local/etc/php/php.ini
|
||||||
|
- ./config/php/php-cli.ini:/usr/local/etc/php/php-cli.ini
|
||||||
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
networks:
|
networks:
|
||||||
@@ -38,14 +41,12 @@ 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
|
||||||
# build:
|
# build:
|
||||||
# context: ./config/mysql
|
# context: ./config/mysql
|
||||||
ports:
|
|
||||||
- "3305:3306"
|
|
||||||
restart: always
|
restart: always
|
||||||
env_file: env
|
env_file: env
|
||||||
volumes:
|
volumes:
|
||||||
|
|||||||
6
env
6
env
@@ -5,6 +5,8 @@ APP_DEBUG=true
|
|||||||
REQUIRE_HTTPS=false
|
REQUIRE_HTTPS=false
|
||||||
PHANTOMJS_PDF_GENERATION=false
|
PHANTOMJS_PDF_GENERATION=false
|
||||||
PDF_GENERATOR=snappdf
|
PDF_GENERATOR=snappdf
|
||||||
|
TRUSTED_PROXIES='*'
|
||||||
|
|
||||||
|
|
||||||
QUEUE_CONNECTION=database
|
QUEUE_CONNECTION=database
|
||||||
|
|
||||||
@@ -38,6 +40,10 @@ MYSQL_USER=ninja
|
|||||||
MYSQL_PASSWORD=ninja
|
MYSQL_PASSWORD=ninja
|
||||||
MYSQL_DATABASE=ninja
|
MYSQL_DATABASE=ninja
|
||||||
|
|
||||||
|
# GoCardless/Nordigen API key for banking integration
|
||||||
|
NORDIGEN_SECRET_ID=
|
||||||
|
NORDIGEN_SECRET_KEY=
|
||||||
|
|
||||||
# V4 env vars
|
# V4 env vars
|
||||||
# DB_STRICT=false
|
# DB_STRICT=false
|
||||||
# APP_CIPHER=AES-256-CBC
|
# APP_CIPHER=AES-256-CBC
|
||||||
|
|||||||
Reference in New Issue
Block a user