mirror of
https://github.com/invoiceninja/dockerfiles.git
synced 2026-01-06 14:37:26 +01:00
Compare commits
159 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 |
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
|
||||||
|
|||||||
10
README.md
10
README.md
@@ -1,8 +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/)
|
||||||
|
|
||||||
|
|||||||
@@ -1,34 +1,28 @@
|
|||||||
ARG PHP_VERSION=8.1
|
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.15 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>"
|
||||||
|
|
||||||
@@ -42,6 +36,16 @@ RUN mv /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini
|
|||||||
# 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 \
|
||||||
@@ -51,19 +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 \
|
|
||||||
font-isas-misc \
|
|
||||||
supervisor \
|
|
||||||
mysql-client \
|
|
||||||
git \
|
|
||||||
chromium \
|
|
||||||
ttf-freefont
|
|
||||||
|
|
||||||
# Copy files
|
# Copy files
|
||||||
COPY rootfs /
|
COPY rootfs /
|
||||||
|
|
||||||
@@ -79,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
|
||||||
@@ -86,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.7
|
version: 13.2.20
|
||||||
- name: mariadb
|
- name: mariadb
|
||||||
repository: https://charts.bitnami.com/bitnami
|
repository: https://charts.bitnami.com/bitnami
|
||||||
version: 9.3.17
|
version: 11.4.2
|
||||||
- name: redis
|
- name: redis
|
||||||
repository: https://charts.bitnami.com/bitnami
|
repository: https://charts.bitnami.com/bitnami
|
||||||
version: 14.7.1
|
version: 16.13.2
|
||||||
digest: sha256:495d7cedf5284501249705101853f33d1bb479b35ce11a518631682cdb38c15f
|
digest: sha256:da0dca54f32ca0465f89744d6247421ad13c907f09cd40fb21985c81888aaef1
|
||||||
generated: "2021-07-16T00:53:22.586326+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.9.2
|
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.3.80
|
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
|
||||||
|
|||||||
@@ -360,6 +360,16 @@ If you have the ability to use `ReadWriteMany` persistent volume, you can choose
|
|||||||
|
|
||||||
## 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 0.8.0
|
||||||
|
|
||||||
To improve the accessibility of this chart to regular users. Some of the defaults have been changed. This include:
|
To improve the accessibility of this chart to regular users. Some of the defaults have been changed. This include:
|
||||||
|
|||||||
@@ -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.3.80
|
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
|
||||||
##
|
##
|
||||||
@@ -298,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
|
||||||
##
|
##
|
||||||
|
|||||||
@@ -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:
|
||||||
@@ -44,8 +47,6 @@ services:
|
|||||||
# 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:
|
||||||
|
|||||||
4
env
4
env
@@ -40,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