Compare commits

..

119 Commits

Author SHA1 Message Date
David Bomba
84a6637f80 Merge pull request #575 from julianengel/patch-1
Added GoCardless/Nordigen key to env file
2024-05-02 08:35:54 +10:00
Julian Engel
821f3f5ec7 Added GoCardless/Nordigen key to env file
Signed-off-by: Julian Engel <julianengel@users.noreply.github.com>
2024-05-01 15:47:35 +02:00
David Bomba
dafd4051d3 Merge pull request #572 from turbo124/master
Updates for react release
2024-04-05 08:45:27 +11:00
David Bomba
c6b44487f3 Updates for react release 2024-04-05 08:45:03 +11:00
David Bomba
b2e03ce544 Merge pull request #570 from turbo124/master
Rollback copy
2024-04-05 07:29:10 +11:00
David Bomba
78fd70118a Rollback copy 2024-04-05 07:28:47 +11:00
David Bomba
59616eada8 Merge pull request #569 from turbo124/master
Set react as default interface
2024-04-04 22:02:58 +11:00
David Bomba
0fab60378a Improvements for build 2024-04-04 22:02:17 +11:00
David Bomba
47db01612d Improvements for build 2024-04-04 22:01:41 +11:00
David Bomba
1a1cea632b Merge pull request #568 from turbo124/master
Refactor build steps
2024-04-04 20:05:01 +11:00
David Bomba
5609b988f3 Refactor build steps 2024-04-04 20:04:13 +11:00
David Bomba
0f9d39998f Merge pull request #561 from anojht/patch-1
Fix Docker builds for circular dependency in project
2024-01-21 21:27:02 +11:00
Anojh Thayaparan
fd01abb0a0 set workdir to fix npm install step 2024-01-20 23:55:07 -08:00
Anojh Thayaparan
6887e2b30a Revert old approach 2024-01-20 21:09:28 -08:00
Anojh Thayaparan
6faf1dc135 Rename final build stage to prod for CI/CD pipeline setup 2024-01-20 21:00:49 -08:00
Anojh Thayaparan
d7cd59c80f Fix Docker builds for circular dependency in project
Due to the circular dependency of livewire JS module from composer, without intermediate build stages the Docker build fails during the vite build stage due to missing module.

The changes here allow composer install to run then copies the vendor folder to an intermediate stage in order to complete the vite build with the livewire dependency being present.

Then the contents are copied back in another intermediate stage to the php environment to complete the build.

Signed-off-by: Anojh Thayaparan <anojh@hotmail.com>
2024-01-20 20:55:41 -08:00
David Bomba
8206377870 Merge pull request #560 from turbo124/master
Updates for broken build pipeline
2024-01-21 12:53:02 +11:00
David Bomba
93214291c9 v5.8.13 2024-01-21 12:52:08 +11:00
David Bomba
f3477e6e80 Updates for DockerFile 2024-01-18 20:27:00 +11:00
David Bomba
d766e8284c Merge pull request #559 from turbo124/master
Bump for Node version
2024-01-18 19:45:27 +11:00
David Bomba
08e24b4b01 Bump for Node version 2024-01-18 19:44:44 +11:00
David Bomba
43cc7417ba Merge pull request #541 from turbo124/master
Fixes for vite build
2023-09-30 10:34:18 +10:00
David Bomba
150abf1d6e Fixes for vite build 2023-09-30 10:33:38 +10:00
David Bomba
31b3d309b3 Merge pull request #540 from turbo124/master
Updates for react build
2023-09-21 13:36:49 +10:00
David Bomba
cb74a1f93b Updates for react build 2023-09-21 13:32:22 +10:00
David Bomba
f566ec5715 Merge pull request #539 from turbo124/master
Create react version dir
2023-09-21 08:51:23 +10:00
David Bomba
91cc86af6d Create react version dir 2023-09-21 08:51:04 +10:00
David Bomba
7bac478538 Merge pull request #538 from turbo124/master
Refactor for react builds
2023-09-21 08:47:39 +10:00
David Bomba
f93fa6b874 refactor for react builds 2023-09-21 08:46:25 +10:00
David Bomba
d9a40ebb43 Merge pull request #537 from turbo124/master
Updates for react build
2023-09-21 07:30:17 +10:00
David Bomba
db5d0ebf50 Updates for react build 2023-09-21 07:29:42 +10:00
David Bomba
926b3d618b Merge pull request #536 from turbo124/master
Improve react support in dockerfile
2023-09-20 22:15:28 +10:00
David Bomba
85d256a435 Improve react support in dockerfile 2023-09-20 22:14:49 +10:00
David Bomba
acf9c22ff7 looping in react folder 2023-09-20 18:16:37 +10:00
David Bomba
b0ebac9719 improve react builds for Docker 2023-09-20 17:42:31 +10:00
David Bomba
65c5ceb69b Merge pull request #535 from turbo124/master
Fixes for stale react files
2023-09-18 16:03:33 +10:00
David Bomba
6aa39b4b57 Fixes for stale react files 2023-09-18 16:02:54 +10:00
David Bomba
c4ac430d1b Merge pull request #532 from turbo124/master
Disable access to php scripts in /storage
2023-09-06 00:10:50 +10:00
David Bomba
87066953d3 Disable access to php scripts in /storage 2023-09-06 00:05:54 +10:00
Ffaen
3969a37852 Bump chart version to 5.6.24 (#527) 2023-08-29 22:07:23 +08:00
David Bomba
bec60de1e7 Merge pull request #524 from turbo124/master
Updates for docker files to use PHP 8.2
2023-07-09 16:21:07 +10:00
David Bomba
c0150debbf Updates for docker files to use PHP 8.2 2023-07-09 16:20:45 +10:00
David Bomba
f45261617f Merge pull request #521 from turbo124/master
Fixes for React builds
2023-07-07 17:59:18 +10:00
David Bomba
21b6cf1f26 Fixes for React builds 2023-07-07 17:58:46 +10:00
David Bomba
d3a4948641 Merge pull request #519 from turbo124/master
Adds options to use config bases php.ini
2023-07-07 16:43:28 +10:00
David Bomba
a9a6b72c7a Position composer dump correctly 2023-07-07 16:43:06 +10:00
David Bomba
4fd6ca33c8 Do no use scripts in composer i 2023-07-07 16:29:57 +10:00
David Bomba
bca8404f5f work around for failing image build 2023-07-06 23:54:13 +10:00
David Bomba
3cf7c28875 Update cache buster 2023-07-06 22:03:26 +10:00
David Bomba
96dee55e7f Revert back to stable 2023-07-06 17:22:27 +10:00
David Bomba
ae592a8407 Revert back to stable 2023-07-06 17:19:27 +10:00
David Bomba
b72757ead0 Fixes for composer 2023-07-06 17:09:50 +10:00
David Bomba
a20fc14683 Add debug to package discovery 2023-07-06 16:00:48 +10:00
David Bomba
0e2934d1e3 Fixes for package discovery 2023-07-06 15:44:39 +10:00
David Bomba
fefc51ccf1 Fixes for package discovery 2023-07-06 14:51:50 +10:00
David Bomba
acdd6851ff fixes for build 2023-07-06 14:05:41 +10:00
David Bomba
6ff8e04aa7 Update cache buster 2023-07-06 13:53:01 +10:00
David Bomba
86f1dd43cf debugging composer 2023-07-06 13:24:16 +10:00
David Bomba
cc1f569324 fixes for composer 2023-07-06 12:49:41 +10:00
David Bomba
c78f7a7bdf fixes for composer 2023-07-06 12:47:13 +10:00
David Bomba
7198222787 debug composer failures 2023-07-06 12:36:12 +10:00
David Bomba
4ef4531a4e Ensure composer is present 2023-07-06 12:17:56 +10:00
David Bomba
c51d113abe Fixes for builds 2023-07-06 11:11:47 +10:00
David Bomba
dddd558873 Fixes for custom php.ini 2023-07-06 11:00:37 +10:00
David Bomba
5727550983 Add options for using config bases php.ini 2023-07-06 10:49:28 +10:00
David Bomba
03536efb6a Add options for using config bases php.ini 2023-07-06 10:48:50 +10:00
David Bomba
e5debf03d4 Merge pull request #509 from invoiceninja/revert-506-feat/init-traefik-config
Revert "add traefik config example"
2023-04-29 09:02:03 +10:00
David Bomba
33a55e362b Revert "add traefik config example" 2023-04-29 09:01:55 +10:00
David Bomba
70e1de9a95 Merge pull request #506 from Access-InTech/feat/init-traefik-config
add traefik config example
2023-04-29 08:31:38 +10:00
Xenion1987
e1b113bba1 add http-01 example 2023-04-28 19:29:31 +02:00
Xenion1987
c967aaccf4 add traefik config example 2023-04-25 12:39:11 +02:00
David Bomba
15aefa698b Merge pull request #500 from turbo124/master
Update release endpoint
2023-03-01 11:31:05 +11:00
David Bomba
c9beedc84b Update release endpoint 2023-03-01 11:30:48 +11:00
David Bomba
d409d9696a Merge pull request #499 from turbo124/master
Update react files on init()
2023-02-28 19:33:49 +11:00
David Bomba
7d977a41e3 Update react files on init() 2023-02-28 19:33:17 +11:00
David Bomba
8db5c792a8 Merge pull request #496 from turbo124/master
Minor fixes for paths
2023-02-10 07:58:10 +11:00
David Bomba
b3768cbed3 Minor fixes for paths 2023-02-10 07:57:47 +11:00
David Bomba
25d2d1d271 Merge pull request #494 from turbo124/master
Build docker with react bundled
2023-02-09 19:20:30 +11:00
David Bomba
abfb5d1338 Build docker with react bundled 2023-02-08 23:30:51 +11:00
David Bomba
300c2d236d Merge pull request #488 from Xenion1987/patch-1
disable nginx version output
2023-01-14 09:35:35 +11:00
Marvin Moldenhauer
56e451ea8b disable nginx version output
Add `server_tokens off;` to not display nginx version in HTTP headers output.

server_tokens on:
server: nginx/1.23.3

server_tokens on:
server: nginx
2023-01-13 18:37:56 +01:00
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
22 changed files with 239 additions and 120 deletions

View File

@@ -44,7 +44,7 @@ jobs:
with:
builder: ${{ steps.buildx.outputs.name }}
context: ./alpine/5/
build-args: INVOICENINJA_VERSION=5-stable
build-args: INVOICENINJA_VERSION=5-develop
target: prod
platforms: linux/amd64,linux/arm64
tags: invoiceninja/invoiceninja:cache
@@ -54,4 +54,4 @@ jobs:
- name: Move cache
run: |
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache

View File

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

View File

@@ -17,14 +17,15 @@ jobs:
fetch-depth: 0
- 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:
python-version: 3.7
python-version: "3.9"
check-latest: true
- 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)
id: list-changed
@@ -41,7 +42,7 @@ jobs:
- name: Run chart-testing (lint)
run: ct lint --config .github/ct-lint.yaml
kubeval-chart:
kubeconform-chart:
runs-on: ubuntu-latest
needs:
- lint-chart
@@ -49,39 +50,44 @@ jobs:
matrix:
chart: ${{ fromJson(needs.lint-chart.outputs.matrix) }}
k8s:
- v1.19.11
- v1.20.7
- v1.21.2
- "1.25.5"
- "1.24.9"
- "1.23.15"
steps:
- name: Checkout
uses: actions/checkout@v1
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Update Helm depdendencies
env:
CHART_DIR: ${{ matrix.chart }}
run: |
helm dependency update "${CHART_DIR}"
mkdir kubeval
helm template "${CHART_DIR}" > kubeval/combined.yaml
mkdir tmp
helm template "${CHART_DIR}" > tmp/combined.yaml
- name: Run kubeval
uses: instrumenta/kubeval-action@master
- uses: yokawasa/action-setup-kube-tools@v0.9.2
with:
files: kubeval
version: ${{ matrix.k8s }}
setup-tools: |
kubeconform
- name: Run kubeconform
if: ${{ matrix.k8s }}
run: kubeconform -kubernetes-version ${{ matrix.k8s }} tmp/combined.yaml
install-chart:
name: install-chart
runs-on: ubuntu-latest
needs:
- lint-chart
- kubeval-chart
- kubeconform-chart
strategy:
matrix:
k8s:
- v1.19.11
- v1.20.7
- v1.21.2
- v1.25.3
- v1.24.7
- v1.23.13
steps:
- name: Checkout
uses: actions/checkout@v2
@@ -89,16 +95,17 @@ jobs:
fetch-depth: 0
- name: Create kind ${{ matrix.k8s }} cluster
uses: helm/kind-action@v1.2.0
uses: helm/kind-action@v1.4.0
with:
node_image: kindest/node:${{ matrix.k8s }}
- uses: actions/setup-python@v2
- uses: actions/setup-python@v4
with:
python-version: 3.7
python-version: "3.9"
check-latest: true
- 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)
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)
[![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/)
:crown: **Features**
@@ -22,7 +20,8 @@ Introducing our very own [Helm Chart](https://github.com/invoiceninja/dockerfile
Other resources:
[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
@@ -84,7 +83,7 @@ All that is left to do now is bring up the container
### 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`
@@ -96,8 +95,13 @@ To upgrade to a newer release image, please make sure to update the `docker-comp
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.
### Thanks
Massive thank you to [lwj5](https://github.com/lwj5) for the tireless work to continually improve the dockerfile and its associated tooling.
## 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/)

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_PUBLIC_PATH=/var/www/app/docker-backup-public/
@@ -70,4 +70,4 @@ ENV SELF_UPDATER_SOURCE ''
VOLUME /var/www/app/public
ENTRYPOINT ["docker-entrypoint"]
CMD ["php-fpm"]
CMD ["php-fpm"]

View File

@@ -1,43 +1,51 @@
ARG PHP_VERSION=7.4
ARG PHP_VERSION=8.2
ARG BAK_STORAGE_PATH=/var/www/app/docker-backup-storage/
ARG BAK_PUBLIC_PATH=/var/www/app/docker-backup-public/
# Get Invoice Ninja and install nodejs packages
FROM --platform=$BUILDPLATFORM node:lts-alpine as build
FROM --platform=$BUILDPLATFORM node:lts-alpine as nodebuild
# Download Invoice Ninja
ARG INVOICENINJA_VERSION
ADD https://github.com/invoiceninja/invoiceninja/tarball/v$INVOICENINJA_VERSION /tmp/ninja.tar.gz
ADD https://github.com/invoiceninja/invoiceninja/releases/download/v$INVOICENINJA_VERSION/react-invoiceninja.tar /tmp/ninja.tar
RUN set -eux; apk add curl unzip
# Extract Invoice Ninja
RUN mkdir -p /var/www/app \
&& tar --strip-components=1 -xf /tmp/ninja.tar.gz -C /var/www/app/ \
&& mkdir -p /var/www/app/public/logo /var/www/app/storage \
&& mv /var/www/app/.env.example /var/www/app/.env \
&& rm -rf /var/www/app/docs /var/www/app/tests
&& tar -xvf /tmp/ninja.tar -C /var/www/app/ \
&& mkdir -p /var/www/app/public/logo /var/www/app/storage
WORKDIR /var/www/app
WORKDIR /var/www/app/
RUN echo ls -l
# 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
RUN cp /var/www/app/ui/dist/index.html /var/www/app/resources/views/react/index.blade.php
# Prepare php image
FROM php:${PHP_VERSION}-fpm-alpine3.13 as prod
FROM php:${PHP_VERSION}-fpm-alpine as phpbuild
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
# Install PHP extensions
# https://hub.docker.com/r/mlocati/php-extension-installer/tags
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
RUN install-php-extensions \
bcmath \
exif \
@@ -50,15 +58,6 @@ RUN install-php-extensions \
@composer \
&& 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 rootfs /
@@ -74,6 +73,8 @@ RUN addgroup --gid=$UID -S "$INVOICENINJA_USER" \
--ingroup "$INVOICENINJA_USER" \
"$INVOICENINJA_USER"
WORKDIR /var/www/app
# Set up app
ARG INVOICENINJA_VERSION
ARG BAK_STORAGE_PATH
@@ -81,14 +82,30 @@ ARG BAK_PUBLIC_PATH
ENV INVOICENINJA_VERSION $INVOICENINJA_VERSION
ENV BAK_STORAGE_PATH $BAK_STORAGE_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
WORKDIR /var/www/app
# Do not remove this ENV
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
ENV APP_ENV production

View File

@@ -1 +1 @@
Fri Jul 2 7:33:22 +00 2021
Fri Jul 4 7:33:22 +00 2023

View File

@@ -11,4 +11,4 @@ if [[ ! -z "${IN_PASSWORD}" ]]; then
password="--password ${IN_PASSWORD}"
fi
php artisan ninja:create-account $email $password
php artisan ninja:create-account $email $password

View File

@@ -27,6 +27,7 @@ docker_process_init_files() {
php artisan config:cache
php artisan optimize
php artisan package:discover
# Check if DB works, if not crash the app.
DB_READY=$(php artisan tinker --execute='echo app()->call("App\Utils\SystemHealth@dbCheck")["success"];')

View File

@@ -1,15 +1,15 @@
dependencies:
- name: common
repository: https://charts.bitnami.com/bitnami
version: 1.7.0
version: 2.2.2
- name: nginx
repository: https://charts.bitnami.com/bitnami
version: 9.3.6
version: 13.2.20
- name: mariadb
repository: https://charts.bitnami.com/bitnami
version: 9.3.16
version: 11.4.2
- name: redis
repository: https://charts.bitnami.com/bitnami
version: 14.6.6
digest: sha256:a9dced490c24324a0d76821d94569c12b49a2f40d7dc8f6aa07c139f116bf5ec
generated: "2021-07-09T20:05:19.280732+08:00"
version: 16.13.2
digest: sha256:da0dca54f32ca0465f89744d6247421ad13c907f09cd40fb21985c81888aaef1
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
# to the chart and its templates, including the app version.
# 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
# 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.
appVersion: 5.2.10
appVersion: 5.6.24
keywords:
- invoiceninja
home: https://invoiceninja.github.io/dockerfiles
@@ -29,19 +29,19 @@ dependencies:
repository: https://charts.bitnami.com/bitnami
tags:
- bitnami-common
version: 1.x.x
version: 2.x.x
- condition: nginx.enabled
name: nginx
repository: https://charts.bitnami.com/bitnami
version: 9.x.x
version: 13.x.x
- condition: mariadb.enabled
name: mariadb
repository: https://charts.bitnami.com/bitnami
version: 9.3.x
version: 11.4.x
- condition: redis.enabled
name: redis
repository: https://charts.bitnami.com/bitnami
version: 14.x.x
version: 16.x.x
maintainers:
- email: lwj5@hotmail.com
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` |
| `sessionDriver` | Name of session driver 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` |
| `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` |
@@ -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 |
| `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 |
| ------------------------ | -------------------------------------------------------- | ------------------------------------------------------- |
@@ -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.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 |
| --------------------------------------- | -------------------------------------------------------------------------- | ------------------------------ |
@@ -187,20 +187,7 @@ The following table shows the configuration options for the Invoice Ninja helm c
### Ingress parameters
#### Nginx sub-chart
| 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)
#### Inline web server (only used when `nginx.enabled` is **not** set to true)
| 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.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
| 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.existingClaim` | Enable persistence using an existing PVC | `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.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.storageClass` | PVC Storage Class | `nil` |
| `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.sentinel` | Use password for sentinel containers | `false` |
| `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.port` | Port of the external redis | `6379` |
| `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 \
--set appKey=changeit \
--set replicaCount=3 \
--set nginx.replicaCount=3 \
--set persistence.public.accessModes[0]=ReadWriteMany
--set redis.auth.password=changeit \
--set redis.sentinel.quorum=2 \
--set redis.replica.replicaCount=3 \
--set mariadb.auth.rootPassword=changeit \
--set mariadb.auth.password=changeit \
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,
```yaml
# values.yaml
appKey: changeit
replicaCount: 3
nginx:
replicaCount: 3
persistence:
public:
accessModes:
- ReadWriteMany
redis:
cluster:
slaveCount: 3
password: changeit
auth:
password: changeit
mariadb:
auth:
rootPassword: changeit
@@ -346,17 +350,39 @@ extraEnvVarsCM: examplemap
## 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
- built-in TLS functionality
- high-availability
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.
- separate resource limits/requests
- other features available from the sub-chart
## 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
- 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 }}
QUEUE_CONNECTION: redis
{{- 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_PORT: {{ include "invoiceninja.redisPort" . | quote }}
REDIS_DB: {{ include "invoiceninja.redisDatabase" . | quote }}

View File

@@ -66,7 +66,7 @@ spec:
[[ -z "${DB_HOST1}" ]] || DB_HOST="${DB_HOST1}";
[[ -z "${DB_PORT1}" ]] || DB_PORT="${DB_PORT1}";
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;
fi;
let COUNTER=COUNTER+1;

View File

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

View File

@@ -18,7 +18,7 @@
image:
registry: docker.io
repository: invoiceninja/invoiceninja
tag: 5.2.11
tag: 5.6.24
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
##
@@ -77,8 +77,9 @@ queueConnection: ""
trustedProxies: "*"
## 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)
## Please check the ref below for any other env you may need to define
@@ -297,7 +298,7 @@ http:
image:
registry: docker.io
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'
## 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
## the existingClaim variable
# existingClaim: your-claim
accessMode: ReadWriteMany
accessMode: ReadWriteOnce
size: 1Gi
## Custom dataSource
##
@@ -590,6 +591,9 @@ redis:
sentinel: false
sentinel:
enabled: true
quorum: 1
replica:
replicaCount: 1
## External Redis Configuration
##
@@ -668,7 +672,7 @@ externalDatabase:
## ref: https://github.com/bitnami/charts/blob/master/bitnami/nginx/values.yaml
##
nginx:
enabled: true
enabled: false
service:
## Service type
## 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
#FROM mariadb:10.4
ENV force_color_prompt yes

View File

@@ -1,7 +1,9 @@
server {
listen 80 default_server;
server_name _;
server_tokens off;
client_max_body_size 100M;
root /var/www/app/public/;
@@ -14,6 +16,11 @@ server {
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
location ~* /storage/.*\.php$ {
return 503;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;

18
config/php/php-cli.ini Normal file
View 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
View 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=/srv/www/invoiceninja/current/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

View File

@@ -30,6 +30,9 @@ services:
- ./config/hosts:/etc/hosts:ro
- ./docker/app/public:/var/www/app/public: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:
- db
networks:
@@ -38,7 +41,7 @@ services:
- "in5.localhost:192.168.0.124 " #host and ip
db:
image: mysql:5
image: mysql:8
# When running on ARM64 use MariaDB instead of MySQL
# image: mariadb:10.4
# For auto DB backups comment out image and use the build block below

6
env
View File

@@ -5,6 +5,8 @@ APP_DEBUG=true
REQUIRE_HTTPS=false
PHANTOMJS_PDF_GENERATION=false
PDF_GENERATOR=snappdf
TRUSTED_PROXIES='*'
QUEUE_CONNECTION=database
@@ -38,6 +40,10 @@ MYSQL_USER=ninja
MYSQL_PASSWORD=ninja
MYSQL_DATABASE=ninja
# GoCardless/Nordigen API key for banking integration
NORDIGEN_SECRET_ID=
NORDIGEN_SECRET_KEY=
# V4 env vars
# DB_STRICT=false
# APP_CIPHER=AES-256-CBC