mirror of
https://github.com/invoiceninja/dockerfiles.git
synced 2026-01-06 14:37:26 +01:00
Compare commits
12 Commits
5.1.64
...
invoicenin
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8b9e69d51b | ||
|
|
7238e521e6 | ||
|
|
5a1bf5c430 | ||
|
|
7a935a0eef | ||
|
|
ff897d568f | ||
|
|
b0bb0ffd25 | ||
|
|
3902b40bc1 | ||
|
|
29e2d93e59 | ||
|
|
b7aea66e62 | ||
|
|
e2db08f207 | ||
|
|
59291d8687 | ||
|
|
6f747207ec |
2
.github/ct-install.yaml
vendored
2
.github/ct-install.yaml
vendored
@@ -3,4 +3,4 @@ chart-dirs:
|
||||
chart-repos:
|
||||
- bitnami=https://charts.bitnami.com/bitnami
|
||||
check-version-increment: true
|
||||
debug: true
|
||||
debug: false
|
||||
|
||||
57
.github/workflows/build-image-v5.yml
vendored
Normal file
57
.github/workflows/build-image-v5.yml
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
name: Build Container Image
|
||||
|
||||
# When its time to do a release do a full cross platform build for all supported
|
||||
# architectures and push all of them to Docker Hub.
|
||||
# Only trigger on semver shaped tags.
|
||||
# Ref: https://github.com/metcalfc/docker-action-examples/blob/main/.github/workflows/release.yml
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- "alpine/5/**"
|
||||
push:
|
||||
paths:
|
||||
- "alpine/5/**"
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
docker:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v1
|
||||
with:
|
||||
platforms: all
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v1
|
||||
|
||||
- name: Cache Docker layers
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: /tmp/.buildx-cache
|
||||
key: ${{ runner.os }}-buildx-5-${{ hashFiles('alpine/5/cache_buster') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-buildx-5-${{ hashFiles('alpine/5/cache_buster') }}
|
||||
|
||||
- name: Build
|
||||
id: docker_build
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
builder: ${{ steps.buildx.outputs.name }}
|
||||
context: ./alpine/5/
|
||||
build-args: INVOICENINJA_VERSION=5-stable
|
||||
target: prod
|
||||
platforms: linux/amd64,linux/arm64
|
||||
tags: invoiceninja/invoiceninja:cache
|
||||
cache-from: type=local,src=/tmp/.buildx-cache
|
||||
cache-to: type=local,dest=/tmp/.buildx-cache-new
|
||||
|
||||
- name: Move cache
|
||||
run: |
|
||||
rm -rf /tmp/.buildx-cache
|
||||
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
|
||||
34
.github/workflows/charts.yaml
vendored
34
.github/workflows/charts.yaml
vendored
@@ -13,9 +13,8 @@ jobs:
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Fetch history
|
||||
run: git fetch --prune --unshallow
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up Helm
|
||||
uses: azure/setup-helm@v1
|
||||
@@ -41,6 +40,7 @@ jobs:
|
||||
|
||||
- name: Run chart-testing (lint)
|
||||
run: ct lint --config .github/ct-lint.yaml
|
||||
|
||||
kubeval-chart:
|
||||
runs-on: ubuntu-latest
|
||||
needs:
|
||||
@@ -49,9 +49,9 @@ jobs:
|
||||
matrix:
|
||||
chart: ${{ fromJson(needs.lint-chart.outputs.matrix) }}
|
||||
k8s:
|
||||
- v1.17.11
|
||||
- v1.18.8
|
||||
- v1.19.4
|
||||
- v1.19.11
|
||||
- v1.20.7
|
||||
- v1.21.2
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v1
|
||||
@@ -79,20 +79,26 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
k8s:
|
||||
- v1.17.11
|
||||
- v1.18.8
|
||||
- v1.19.4
|
||||
- v1.19.11
|
||||
- v1.20.7
|
||||
- v1.21.2
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Create kind ${{ matrix.k8s }} cluster
|
||||
uses: helm/kind-action@v1.1.0
|
||||
uses: helm/kind-action@v1.2.0
|
||||
with:
|
||||
node_image: kindest/node:${{ matrix.k8s }}
|
||||
|
||||
- name: Run chart-testing (install)
|
||||
uses: helm/chart-testing-action@v2.0.1
|
||||
- uses: actions/setup-python@v2
|
||||
with:
|
||||
command: install
|
||||
config: .github/ct-install.yaml
|
||||
python-version: 3.7
|
||||
|
||||
- name: Set up chart-testing
|
||||
uses: helm/chart-testing-action@v2.0.1
|
||||
|
||||
- name: Run chart-testing (install)
|
||||
run: ct install --config .github/ct-install.yaml
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
name: Publish Releases to Hub
|
||||
name: Publish Container Image
|
||||
|
||||
# When its time to do a release do a full cross platform build for all supported
|
||||
# architectures and push all of them to Docker Hub.
|
||||
@@ -44,13 +44,13 @@ jobs:
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v1
|
||||
|
||||
# - name: Cache Docker layers
|
||||
# uses: actions/cache@v2
|
||||
# with:
|
||||
# path: /tmp/.buildx-cache
|
||||
# key: ${{ runner.os }}-buildx-${{ github.sha }}
|
||||
# restore-keys: |
|
||||
# ${{ runner.os }}-buildx-
|
||||
- name: Cache Docker layers
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: /tmp/.buildx-cache
|
||||
key: ${{ runner.os }}-buildx-${{ steps.prep.outputs.major }}-${{ hashFiles('alpine/${{ steps.prep.outputs.major }}/cache_buster') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-buildx-${{ steps.prep.outputs.major }}-${{ hashFiles('alpine/${{ steps.prep.outputs.major }}/cache_buster') }}
|
||||
|
||||
- name: Login to DockerHub
|
||||
if: github.event_name != 'pull_request'
|
||||
@@ -70,8 +70,13 @@ jobs:
|
||||
platforms: linux/amd64,linux/arm64
|
||||
push: ${{ github.event_name != 'pull_request' }}
|
||||
tags: ${{ steps.prep.outputs.tags }}
|
||||
cache-from: invoiceninja/invoiceninja:${{ steps.prep.outputs.major }}
|
||||
cache-to: type=inline
|
||||
cache-from: type=local,src=/tmp/.buildx-cache
|
||||
cache-to: type=local,dest=/tmp/.buildx-cache-new
|
||||
|
||||
- name: Move cache
|
||||
run: |
|
||||
rm -rf /tmp/.buildx-cache
|
||||
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
|
||||
|
||||
- name: Image digest
|
||||
run: echo ${{ steps.docker_build.outputs.digest }}
|
||||
@@ -2,6 +2,8 @@
|
||||
[](https://hub.docker.com/r/invoiceninja/invoiceninja)
|
||||
[](https://hub.docker.com/r/invoiceninja/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)
|
||||
|
||||
|
||||
|
||||
# Docker for [Invoice Ninja](https://www.invoiceninja.com/)
|
||||
|
||||
@@ -4,11 +4,9 @@ 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
|
||||
ARG INVOICENINJA_VERSION
|
||||
ARG BAK_STORAGE_PATH
|
||||
ARG BAK_PUBLIC_PATH
|
||||
|
||||
# Download Invoice Ninja
|
||||
ARG INVOICENINJA_VERSION
|
||||
ADD https://github.com/invoiceninja/invoiceninja/tarball/v$INVOICENINJA_VERSION /tmp/ninja.tar.gz
|
||||
|
||||
# Extract Invoice Ninja
|
||||
@@ -21,6 +19,8 @@ RUN mkdir -p /var/www/app \
|
||||
WORKDIR /var/www/app/
|
||||
|
||||
# Install node packages
|
||||
ARG BAK_STORAGE_PATH
|
||||
ARG BAK_PUBLIC_PATH
|
||||
RUN npm install --production \
|
||||
&& npm run production \
|
||||
&& rm -rf node_modules \
|
||||
@@ -28,10 +28,7 @@ RUN npm install --production \
|
||||
&& mv /var/www/app/public $BAK_PUBLIC_PATH
|
||||
|
||||
# Prepare php image
|
||||
FROM php:${PHP_VERSION}-fpm-alpine as prod
|
||||
ARG INVOICENINJA_VERSION
|
||||
ARG BAK_STORAGE_PATH
|
||||
ARG BAK_PUBLIC_PATH
|
||||
FROM php:${PHP_VERSION}-fpm-alpine3.13 as prod
|
||||
|
||||
LABEL maintainer="David Bomba <turbo124@gmail.com>"
|
||||
|
||||
@@ -78,6 +75,9 @@ RUN addgroup --gid=$UID -S "$INVOICENINJA_USER" \
|
||||
"$INVOICENINJA_USER"
|
||||
|
||||
# Set up app
|
||||
ARG INVOICENINJA_VERSION
|
||||
ARG BAK_STORAGE_PATH
|
||||
ARG BAK_PUBLIC_PATH
|
||||
ENV INVOICENINJA_VERSION $INVOICENINJA_VERSION
|
||||
ENV BAK_STORAGE_PATH $BAK_STORAGE_PATH
|
||||
ENV BAK_PUBLIC_PATH $BAK_PUBLIC_PATH
|
||||
@@ -88,8 +88,7 @@ WORKDIR /var/www/app
|
||||
|
||||
# Do not remove this ENV
|
||||
ENV IS_DOCKER true
|
||||
RUN /usr/local/bin/composer install --no-dev --quiet \
|
||||
&& rm .env
|
||||
RUN /usr/local/bin/composer install --no-dev --quiet
|
||||
|
||||
# Override the environment settings from projects .env file
|
||||
ENV APP_ENV production
|
||||
|
||||
1
alpine/5/cache_buster
Normal file
1
alpine/5/cache_buster
Normal file
@@ -0,0 +1 @@
|
||||
Fri Jul 2 7:33:22 +00 2021
|
||||
@@ -1,15 +1,15 @@
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: https://charts.bitnami.com/bitnami
|
||||
version: 1.4.3
|
||||
version: 1.7.0
|
||||
- name: nginx
|
||||
repository: https://charts.bitnami.com/bitnami
|
||||
version: 8.8.5
|
||||
version: 9.3.6
|
||||
- name: mariadb
|
||||
repository: https://charts.bitnami.com/bitnami
|
||||
version: 9.3.11
|
||||
version: 9.3.16
|
||||
- name: redis
|
||||
repository: https://charts.bitnami.com/bitnami
|
||||
version: 12.9.2
|
||||
digest: sha256:4255a558312b033e820635f491b0960bd4ec8e716164025212af06adafbd4cb9
|
||||
generated: "2021-05-11T09:31:45.433+08:00"
|
||||
version: 14.6.6
|
||||
digest: sha256:675a7e41183e23844b8c3c589e25c2fafccd394cd03710e0a2b35d72db436d70
|
||||
generated: "2021-07-08T00:30:57.000141+08:00"
|
||||
|
||||
@@ -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.4.2
|
||||
version: 0.7.0
|
||||
# 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.1.61
|
||||
appVersion: 5.2.10
|
||||
keywords:
|
||||
- invoiceninja
|
||||
home: https://invoiceninja.github.io/dockerfiles
|
||||
@@ -32,7 +32,7 @@ dependencies:
|
||||
version: 1.x.x
|
||||
- name: nginx
|
||||
repository: https://charts.bitnami.com/bitnami
|
||||
version: 8.8.x
|
||||
version: 9.x.x
|
||||
- condition: mariadb.enabled
|
||||
name: mariadb
|
||||
repository: https://charts.bitnami.com/bitnami
|
||||
@@ -40,7 +40,7 @@ dependencies:
|
||||
- condition: redis.enabled
|
||||
name: redis
|
||||
repository: https://charts.bitnami.com/bitnami
|
||||
version: 12.9.x
|
||||
version: 14.x.x
|
||||
maintainers:
|
||||
- email: lwj5@hotmail.com
|
||||
name: lwj5
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Invoice Ninja Helm Chart
|
||||
|
||||
This helm chart installs a Invoice Ninja and its dependencies into a running
|
||||
This helm chart installs Invoice Ninja (IN) and its dependencies into a running
|
||||
Kubernetes cluster.
|
||||
|
||||
The chart installs the [Invoice Ninja](https://hub.docker.com/r/invoiceninja/invoiceninja) docker image.
|
||||
@@ -13,7 +13,7 @@ Please read [Upgrading](#upgrading) section before upgrading MAJOR versions.
|
||||
- The Bitnami [mariadb](https://github.com/bitnami/charts/tree/master/bitnami/mariadb) helm chart
|
||||
- The Bitnami [nginx](https://github.com/bitnami/charts/tree/master/bitnami/nginx) helm chart
|
||||
- The Bitnami [redis](https://github.com/bitnami/charts/tree/master/bitnami/redis) helm chart
|
||||
- Tested on Kubernetes 1.17+
|
||||
- Tested on Kubernetes 1.19+
|
||||
|
||||
## Installing the Chart
|
||||
|
||||
@@ -21,7 +21,7 @@ To install the chart with the release name `invoiceninja`:
|
||||
|
||||
```bash
|
||||
helm repo add invoiceninja https://invoiceninja.github.io/dockerfiles
|
||||
helm install invoiceninja invoiceninja/invoiceninja
|
||||
helm install invoiceninja invoiceninja/invoiceninja --set appKey=changeit --set mariadb.auth.rootPassword=changeit --set mariadb.auth.password=changeit --set redis.password=changeit
|
||||
```
|
||||
|
||||
The command deploys Invoice Ninja on the Kubernetes cluster in the default namespace. The [Parameters](#parameters) section lists the parameters that can be configured during installation.
|
||||
@@ -70,26 +70,31 @@ The following table shows the configuration options for the Invoice Ninja helm c
|
||||
|
||||
### Invoice Ninja parameters
|
||||
|
||||
| Parameter | Description | Default |
|
||||
| -------------------- | ---------------------------------------------------------------- | ------------------------------------------------------- |
|
||||
| `image.registry` | Invoice Ninja image registry | `docker.io` |
|
||||
| `image.repository` | Invoice Ninja image name | `invoiceninja/invoiceninja` |
|
||||
| `image.tag` | Invoice Ninja image tag | Check `values.yaml` file |
|
||||
| `image.pullPolicy` | Invoice Ninja image pull policy | `IfNotPresent` |
|
||||
| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `image.debug` | Specify if debug logs should be enabled | `false` |
|
||||
| `serviceAccountName` | Name of a service account for the Invoice Ninja pods | `default` |
|
||||
| `debug` | Turn on debug mode on Invoice Ninja | `false` |
|
||||
| `appKey` | Laravel Application Key | _random 32 character alphanumeric string_ |
|
||||
| `logChannel` | Name of log channel to use | `nil` |
|
||||
| `broadcastDriver` | Name of broadcast driver to use | `nil` |
|
||||
| `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` |
|
||||
| `extraEnvVars` | Extra environment variables to be set on Invoice Ninja container | `{}` |
|
||||
| `extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars | `nil` |
|
||||
| `extraEnvVarsSecret` | Name of existing Secret containing extra env vars | `nil` |
|
||||
| Parameter | Description | Default |
|
||||
| -------------------- | ----------------------------------------------------------------------------- | ------------------------------------------------------- |
|
||||
| `image.registry` | Invoice Ninja image registry | `docker.io` |
|
||||
| `image.repository` | Invoice Ninja image name | `invoiceninja/invoiceninja` |
|
||||
| `image.tag` | Invoice Ninja image tag | Check `values.yaml` file |
|
||||
| `image.pullPolicy` | Invoice Ninja image pull policy | `IfNotPresent` |
|
||||
| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `image.debug` | Specify if debug logs should be enabled | `false` |
|
||||
| `serviceAccountName` | Name of a service account for the Invoice Ninja pods | `default` |
|
||||
| `debug` | Turn on debug mode on Invoice Ninja | `false` |
|
||||
| `appKey` | Laravel Application Key | _random 32 character alphanumeric string_ |
|
||||
| `userEmail` | Initial user email address | `admin@example.com` |
|
||||
| `userPassword` | Initial user password | `changeme!` |
|
||||
| `logChannel` | Name of log channel to use | `nil` |
|
||||
| `broadcastDriver` | Name of broadcast driver to use | `nil` |
|
||||
| `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` |
|
||||
| `mailer` | Name of the mailer to use (log, smtp, etc.) | `log` |
|
||||
| `requireHttps` | Force HTTPS for internal connections to Invoice Ninja (see #349) | `false` |
|
||||
| `extraEnvVars` | Extra environment variables to be set on Invoice Ninja container | `{}` |
|
||||
| `extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars | `nil` |
|
||||
| `extraEnvVarsSecret` | Name of existing Secret containing extra env vars | `nil` |
|
||||
| `trustedProxy` | List of trusted proxies for Invoice Ninja to communicate with the nginx proxy | `'*'` |
|
||||
|
||||
### Invoice Ninja deployment parameters
|
||||
|
||||
@@ -142,15 +147,13 @@ The following table shows the configuration options for the Invoice Ninja helm c
|
||||
|
||||
### Ingress parameters
|
||||
|
||||
| Parameter | Description | Default |
|
||||
| ------------------------------------------------------- | ------------------------------------- | ------------------------ |
|
||||
| `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.serverBlock` | Custom NGINX server block | `nil` |
|
||||
| `nginx.extraVolumes` | Array to add extra volumes | Check `values.yaml` file |
|
||||
| `nginx.extraVolumes[0].persistentVolumeClaim.claimName` | Name of Invoice Ninja public PVC | `invoiceninja-public` |
|
||||
| `nginx.extraVolumeMounts` | Array to add extra mount | Check `values.yaml` file |
|
||||
| Parameter | Description | Default |
|
||||
| ------------------------------------ | ------------------------------------- | ------------------------------------------------------ |
|
||||
| `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.
|
||||
|
||||
@@ -176,9 +179,9 @@ The following table shows the configuration options for the Invoice Ninja helm c
|
||||
| Parameter | Description | Default |
|
||||
| --------------------------------- | -------------------------------------------- | ----------------------------------------- |
|
||||
| `redis.enabled` | If external redis is used, set it to `false` | `true` |
|
||||
| `redis.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.sentinel.enabled` | Enable sentinel containers | `true` |
|
||||
| `redis.sentinel.usePassword` | Use password for sentinel containers | `false` |
|
||||
| `externalRedis.host` | Host of the external redis | `nil` |
|
||||
| `externalRedis.port` | Port of the external redis | `6379` |
|
||||
| `externalRedis.password` | Password for the external redis | `nil` |
|
||||
@@ -258,20 +261,20 @@ helm install invoiceninja -f values.yaml invoiceninja/invoiceninja
|
||||
|
||||
## Setting Environment Variables
|
||||
|
||||
Should you need to inject any environment variables into the `invoiceninja` container, you can use the `extraEnvVars` option:
|
||||
Should you need to inject any environment variables such as those in [here](https://github.com/invoiceninja/dockerfiles/blob/master/env) into the `invoiceninja` container, you can use the `extraEnvVars` option:
|
||||
|
||||
```yaml
|
||||
# ... values.yaml file
|
||||
# In this example, we are forcing REQUIRE_HTTPS to be false
|
||||
# In this example, we are setting the SMTP MAIL_HOST to be 'smtp.mailtrap.io'
|
||||
extraEnvVars:
|
||||
- name: REQUIRE_HTTPS
|
||||
value: 'false' # all values must be strings, so other types must be surrounded in quotes
|
||||
- name: MAIL_HOST
|
||||
value: 'smtp.mailtrap.io' # all values must be strings, so other types must be surrounded in quotes
|
||||
```
|
||||
|
||||
Alternatively you can provide the name of an existing `configmap` or `secret` object:
|
||||
|
||||
```bash
|
||||
kubectl create configmap examplemap --from-literal=REQUIRE_HTTPS='false'
|
||||
kubectl create configmap examplemap --from-literal=MAIL_HOST='smtp.mailtrap.io'
|
||||
```
|
||||
|
||||
```yaml
|
||||
@@ -281,4 +284,7 @@ extraEnvVarsCM: examplemap
|
||||
|
||||
## Upgrading
|
||||
|
||||
Nothing yet.
|
||||
### 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.
|
||||
|
||||
|
||||
@@ -248,3 +248,11 @@ Return the Session Connection Name
|
||||
{{- printf "default" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Server block configmap name for nignx.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
*/}}
|
||||
{{- define "invoiceninja.nginx.serverBlockName" -}}
|
||||
{{- printf "%s-%s" .Release.Name "server-block" | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
@@ -22,15 +22,16 @@ data:
|
||||
APP_URL: "http://{{ include "common.names.fullname" . }}"
|
||||
{{- end }}
|
||||
APP_DEBUG: {{ .Values.debug | quote }}
|
||||
DB_HOST1: {{ include "invoiceninja.databaseHost" . | quote }}
|
||||
DB_PORT1: {{ include "invoiceninja.databasePort" . | quote }}
|
||||
DB_USERNAME1: {{ include "invoiceninja.databaseUser" . | quote }}
|
||||
DB_DATABASE1: {{ include "invoiceninja.databaseName" . | quote }}
|
||||
DB_HOST: {{ include "invoiceninja.databaseHost" . | quote }}
|
||||
DB_PORT: {{ include "invoiceninja.databasePort" . | quote }}
|
||||
DB_USERNAME: {{ include "invoiceninja.databaseUser" . | quote }}
|
||||
DB_DATABASE: {{ include "invoiceninja.databaseName" . | quote }}
|
||||
{{- if .Values.logChannel }}
|
||||
LOG_CHANNEL: {{ .Values.logChannel | quote }}
|
||||
{{- else }}
|
||||
LOG_CHANNEL: stderr
|
||||
{{- end }}
|
||||
MAIL_MAILER: {{ .Values.mailer | quote }}
|
||||
{{- if .Values.broadcastDriver }}
|
||||
BROADCAST_DRIVER: {{ .Values.broadcastDriver | quote }}
|
||||
{{- else if or .Values.redis.enabled .Values.externalRedis.host }}
|
||||
@@ -60,3 +61,5 @@ data:
|
||||
REDIS_CACHE_CONNECTION: {{ include "invoiceninja.redisCacheConnection" . | quote }}
|
||||
REDIS_QUEUE_CONNECTION: {{ include "invoiceninja.redisQueueConnection" . | quote }}
|
||||
SESSION_CONNECTION: {{ include "invoiceninja.redisSessionConnection" . | quote }}
|
||||
REQUIRE_HTTPS: {{ .Values.requireHttps | quote }}
|
||||
TRUSTED_PROXIES: {{ .Values.trustedProxies | quote }}
|
||||
|
||||
@@ -63,12 +63,14 @@ spec:
|
||||
- -cx
|
||||
- |
|
||||
COUNTER=0;
|
||||
while [ $COUNTER -lt 120 ]; do
|
||||
if mysqladmin ping -h "$DB_HOST1" -P $DB_PORT1 --silent; then
|
||||
[[ -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
|
||||
exit 0;
|
||||
fi;
|
||||
let COUNTER=COUNTER+1;
|
||||
echo "Waiting for DB ($DB_HOST1:$DB_PORT1)"
|
||||
echo "Waiting for DB... Trying again in 2s";
|
||||
sleep 2;
|
||||
done;
|
||||
echo "Did NOT see a database after 240 secs!";
|
||||
@@ -81,6 +83,18 @@ spec:
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: {{ include "common.names.fullname" . }}
|
||||
{{- if .Values.extraEnvVarsCM }}
|
||||
- configMapRef:
|
||||
name: {{ include "common.tplvalues.render" (dict "value" .Values.extraEnvVarsCM "context" $) }}
|
||||
{{- end }}
|
||||
{{- if .Values.extraEnvVarsSecret }}
|
||||
- secretRef:
|
||||
name: {{ include "common.tplvalues.render" (dict "value" .Values.extraEnvVarsSecret "context" $) }}
|
||||
{{- end }}
|
||||
env:
|
||||
{{- if .Values.extraEnvVars }}
|
||||
{{- include "common.tplvalues.render" (dict "value" .Values.extraEnvVars "context" $) | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- if and .Values.podSecurityContext .Values.volumePermissions.enabled (or .Values.persistence.public.enabled .Values.persistence.storage.enabled) }}
|
||||
- name: volume-permissions
|
||||
image: {{ include "invoiceninja.volumePermissions.image" . }}
|
||||
@@ -148,18 +162,22 @@ spec:
|
||||
name: {{ include "common.tplvalues.render" (dict "value" .Values.extraEnvVarsSecret "context" $) }}
|
||||
{{- end }}
|
||||
env:
|
||||
- name: DB_PASSWORD1
|
||||
- name: DB_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ include "invoiceninja.databaseSecretName" . }}
|
||||
key: mariadb-password
|
||||
{{- if or (and .Values.redis.enabled .Values.redis.usePassword) (or .Values.externalRedis.password .Values.externalRedis.existingSecret) }}
|
||||
{{- if or (and .Values.redis.enabled .Values.redis.auth.enabled) (or .Values.externalRedis.password .Values.externalRedis.existingSecret) }}
|
||||
- name: REDIS_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ include "invoiceninja.redisSecretName" . }}
|
||||
key: redis-password
|
||||
{{- end }}
|
||||
{{- if .Values.userEmail }}
|
||||
- name: IN_USER_EMAIL
|
||||
value: {{ .Values.userEmail | quote }}
|
||||
{{- end }}
|
||||
{{- if .Values.extraEnvVars }}
|
||||
{{- include "common.tplvalues.render" (dict "value" .Values.extraEnvVars "context" $) | nindent 12 }}
|
||||
{{- end }}
|
||||
|
||||
@@ -57,4 +57,7 @@ data:
|
||||
APP_KEY: {{ .Values.appKey | b64enc | quote }}
|
||||
{{- else }}
|
||||
APP_KEY: {{ randAlphaNum 32 | b64enc | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.userPassword }}
|
||||
IN_PASSWORD: {{ .Values.userPassword | b64enc | quote }}
|
||||
{{- end }}
|
||||
|
||||
39
charts/invoiceninja/templates/serverblock.yaml
Normal file
39
charts/invoiceninja/templates/serverblock.yaml
Normal file
@@ -0,0 +1,39 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ include "invoiceninja.nginx.serverBlockName" . }}
|
||||
labels:
|
||||
{{- include "common.labels.standard" $ | nindent 4 }}
|
||||
{{- if .Values.commonLabels }}
|
||||
{{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- if .Values.commonAnnotations }}
|
||||
annotations:
|
||||
{{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
|
||||
{{- end }}
|
||||
data:
|
||||
server-block.conf: |-
|
||||
server {
|
||||
listen 8080 default_server;
|
||||
server_name _;
|
||||
|
||||
root /app;
|
||||
index index.php;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?$query_string;
|
||||
}
|
||||
|
||||
location = /favicon.ico { access_log off; log_not_found off; }
|
||||
location = /robots.txt { access_log off; log_not_found off; }
|
||||
|
||||
location ~ \.php$ {
|
||||
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||
fastcgi_pass {{ include "common.names.fullname" . }}:9000;
|
||||
fastcgi_index index.php;
|
||||
include fastcgi_params;
|
||||
fastcgi_param SCRIPT_FILENAME /var/www/app/public$fastcgi_script_name;
|
||||
fastcgi_buffer_size 16k;
|
||||
fastcgi_buffers 4 16k;
|
||||
}
|
||||
}
|
||||
@@ -18,7 +18,7 @@
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: invoiceninja/invoiceninja
|
||||
tag: 5.1.61
|
||||
tag: 5.2.10
|
||||
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
|
||||
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
|
||||
##
|
||||
@@ -38,6 +38,16 @@ debug: false
|
||||
##
|
||||
appKey: ""
|
||||
|
||||
## Email of user to create first run
|
||||
## If not specified, default user email will be "admin@example.com"
|
||||
##
|
||||
userEmail: ""
|
||||
|
||||
## Password of user to create on first run
|
||||
## If not specified, default user password will be "changeme!"
|
||||
##
|
||||
userPassword: ""
|
||||
|
||||
## Name of log channel to use
|
||||
##
|
||||
logChannel: ""
|
||||
@@ -58,10 +68,24 @@ sessionDriver: ""
|
||||
##
|
||||
queueConnection: ""
|
||||
|
||||
## List of trusted proxies for Invoice Ninja to communicate with the nginx proxy
|
||||
##
|
||||
trustedProxies: "*"
|
||||
|
||||
## Use local or Phantom JS PDF generation
|
||||
##
|
||||
snappdf: true
|
||||
|
||||
## Name of queue connection to use (use "log" for debug)
|
||||
## Please check the ref below for any other env you may need to define
|
||||
## ref: https://github.com/invoiceninja/invoiceninja/blob/v5-stable/config/mail.php
|
||||
##
|
||||
mailer: log
|
||||
|
||||
## Force HTTPS for all connections to Invoice Ninja
|
||||
##
|
||||
requireHttps: false
|
||||
|
||||
## String to partially override fullname template (will maintain the release name)
|
||||
##
|
||||
# nameOverride:
|
||||
@@ -353,9 +377,10 @@ autoscaling:
|
||||
##
|
||||
redis:
|
||||
enabled: true
|
||||
auth:
|
||||
sentinel: false
|
||||
sentinel:
|
||||
enabled: true
|
||||
usePassword: false
|
||||
|
||||
## External Redis Configuration
|
||||
##
|
||||
@@ -445,43 +470,9 @@ nginx:
|
||||
ingress:
|
||||
enabled: true
|
||||
hostname: invoiceninja.local
|
||||
## Configure the serverblock for Invoice Ninja
|
||||
## Note: you may need to replace the fastcgi_pass value if the release name is different
|
||||
## Use the serverblock config map from Invoice Ninja
|
||||
##
|
||||
serverBlock: |
|
||||
server {
|
||||
listen 8080 default_server;
|
||||
server_name _;
|
||||
|
||||
root /var/www/app/public/;
|
||||
index index.php;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?$query_string;
|
||||
}
|
||||
|
||||
location = /favicon.ico { access_log off; log_not_found off; }
|
||||
location = /robots.txt { access_log off; log_not_found off; }
|
||||
|
||||
location ~ \.php$ {
|
||||
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||
fastcgi_pass invoiceninja:9000;
|
||||
fastcgi_index index.php;
|
||||
include fastcgi_params;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
fastcgi_intercept_errors off;
|
||||
fastcgi_buffer_size 16k;
|
||||
fastcgi_buffers 4 16k;
|
||||
}
|
||||
}
|
||||
## Configure the extraVolumes and extraVolumeMounts for Invoice Ninja
|
||||
## Note: you may need to replace the claimName if the release name is different
|
||||
existingServerBlockConfigmap: '{{ include "invoiceninja.nginx.serverBlockName" . }}'
|
||||
## Use the public PVC created by Invoice Ninja
|
||||
##
|
||||
extraVolumes:
|
||||
- name: public
|
||||
persistentVolumeClaim:
|
||||
claimName: invoiceninja-public
|
||||
extraVolumeMounts:
|
||||
- mountPath: /var/www/app/public
|
||||
name: public
|
||||
readOnly: true
|
||||
staticSitePVC: '{{ include "invoiceninja.public.storageName" . }}'
|
||||
|
||||
Reference in New Issue
Block a user