Compare commits

...

31 Commits

Author SHA1 Message Date
David Bomba
3e5035478d Merge pull request #774 from stavros-k/patch-1
Fix init.sh for octane
2025-08-20 07:57:03 +10:00
Stavros Kois
4e80bc01d0 correct dir 2025-08-19 15:58:36 +03:00
Stavros Kois
6e73e3af9d Update init.sh
Makes sure the storage directory exists, otherwise it will fail with

```sh
In ServerStateFile.php line 49:
                                       
  Unable to write to process ID file.  
```

Signed-off-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com>
2025-08-11 12:56:27 +03:00
David Bomba
9944d43f0b Merge pull request #765 from stavros-k/patch-1
Update init.sh
2025-07-07 08:42:59 +10:00
Stavros Kois
5eefcecf47 Update init.sh
Signed-off-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com>
2025-07-03 13:57:12 +03:00
David Bomba
f80e7f2ec3 Merge pull request #752 from benbrummer/octane
saxon defaults now to 12.5.0
2025-05-11 09:44:33 +10:00
benbrummer
f5821630fa saxon defaults now to 12.5.0
Signed-off-by: benbrummer <info@benjamin-brummer.de>
2025-05-10 10:58:40 +02:00
David Bomba
1848f11a36 Merge pull request #751 from benbrummer/octane
align octane to debian
2025-05-08 19:41:31 +10:00
Benjamin Brummer
f96d4d4aa0 image versions as ARGs 2025-05-08 06:58:11 +00:00
Benjamin Brummer
5d29d3a052 align init.sh with invoiceninja-debian 2025-05-08 06:43:50 +00:00
Benjamin Brummer
0c607953ec HEALTHCHECK for laravel 2025-05-08 06:43:23 +00:00
Benjamin Brummer
ebc6c3642a remove cache volume and healthcheck configuration 2025-05-08 06:43:03 +00:00
David Bomba
ec35498159 set conditional for chrome / chromium path 2025-03-25 12:04:11 +11:00
David Bomba
4bff59808e Merge pull request #730 from benbrummer/octane
use github latest url, tar.gz without top level repository, mbstring
2025-03-19 10:05:07 +11:00
benbrummer
217c05bd1f use github latest url, tar.gz without top level repository, mbstring
Signed-off-by: benbrummer <info@benjamin-brummer.de>
2025-03-15 07:41:00 +01:00
David Bomba
24d1f9cd2e Merge pull request #714 from turbo124/octane
Fixes for publish image regression - force 22.04
2025-01-24 16:15:58 +11:00
David Bomba
9a3603b709 Fixes for publish image regression - force 22.04 2025-01-24 16:15:09 +11:00
David Bomba
c2bf3ca8d9 Merge pull request #709 from turbo124/octane
Change context dir from ./debian to debian
2025-01-24 14:28:42 +11:00
David Bomba
1c3f96e723 Change context dir from ./debian to debian 2025-01-24 14:28:11 +11:00
David Bomba
2364f53777 Merge pull request #708 from turbo124/octane
Debug php extension installer
2025-01-24 13:57:28 +11:00
David Bomba
7bfbe9ee03 Install each extension individually to identify the root cause 2025-01-24 13:56:44 +11:00
David Bomba
afd597456f Minor fixes for build files 2025-01-24 13:36:58 +11:00
David Bomba
243f46bd23 Merge pull request #707 from turbo124/octane
Fixes for php extension installer
2025-01-24 13:35:26 +11:00
David Bomba
6dfaa3b441 Fixes for php extension installer 2025-01-24 13:34:52 +11:00
David Bomba
6d0e0648e3 Fixes for php extension installer 2025-01-24 12:58:47 +11:00
David Bomba
85979fdcf2 Require mbstring 2025-01-24 09:22:36 +11:00
David Bomba
377c068667 Merge pull request #690 from benbrummer/octane
Octane
2025-01-15 08:18:57 +11:00
benbrummer
da7f8d93b0 Merge branch 'invoiceninja:octane' into octane 2025-01-13 13:40:31 +01:00
Benjamin Brummer
1d475a5218 php.ini with frankenphp/symfony recommendations 2025-01-12 00:57:51 +00:00
Benjamin Brummer
3a8184df73 fix for initialization with opcache.preload enabled 2025-01-12 00:56:21 +00:00
Benjamin Brummer
0c796fee5f use invoiceninja.tar.gz 2025-01-12 00:54:53 +00:00
7 changed files with 44 additions and 25 deletions

View File

@@ -1,4 +1,4 @@
name: Build Debian OctaneContainer Image
name: Build Debian Octane Container Image
on:
pull_request:
@@ -12,7 +12,7 @@ on:
jobs:
docker:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4

View File

@@ -7,16 +7,16 @@ on:
jobs:
docker:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
strategy:
matrix:
include:
- image: invoiceninja/invoiceninja-octane
context: ./debian
context: debian
steps:
- name: Checkout
uses: actions/checkout@v4 # Updated from v2
uses: actions/checkout@v4
with:
fetch-depth: 0

2
debian/.env vendored
View File

@@ -57,6 +57,6 @@ NORDIGEN_SECRET_KEY=
IS_DOCKER=true
SCOUT_DRIVER=null
SNAPPDF_CHROMIUM_PATH=/usr/bin/google-chrome-stable
#SNAPPDF_CHROMIUM_PATH=/usr/bin/google-chrome-stable

27
debian/Dockerfile vendored
View File

@@ -1,9 +1,10 @@
FROM dunglas/frankenphp:1-php8.3-bookworm AS prepare-app
ARG PHP_VERSION=8.3
ARG FRANKENPHP_VERSION=1
ARG DEBIAN_VERSION=bookworm
RUN curl -s "https://api.github.com/repos/invoiceninja/invoiceninja/releases/latest" | \
grep -o '"browser_download_url": "[^"]*invoiceninja.tar"' | \
cut -d '"' -f 4 | \
xargs curl -sL | \
FROM dunglas/frankenphp:${FRANKENPHP_VERSION}-php${PHP_VERSION}-${DEBIAN_VERSION} AS prepare-app
RUN curl -sL "https://github.com/invoiceninja/invoiceninja/releases/latest/download/invoiceninja.tar.gz" | \
tar -xz \
&& ln -s ./resources/views/react/index.blade.php ./public/index.html \
# Symlink
@@ -14,13 +15,13 @@ RUN curl -s "https://api.github.com/repos/invoiceninja/invoiceninja/releases/lat
# ==================
# InvoiceNinja image
# ==================
FROM dunglas/frankenphp:1-php8.3-bookworm
FROM dunglas/frankenphp:${FRANKENPHP_VERSION}-php${PHP_VERSION}-${DEBIAN_VERSION}
ARG user=ninja
# PHP modules
ARG php_require="bcmath gd pdo_mysql zip"
ARG php_suggest="exif imagick intl pcntl soap saxon-12.5.0"
ARG php_require="bcmath gd mbstring pdo_mysql zip"
ARG php_suggest="exif imagick intl pcntl saxon soap"
ARG php_extra="opcache"
# Create a system user UID/GID=999
@@ -80,10 +81,6 @@ RUN chown -R ${user}: \
/data/caddy \
/config/caddy
ENTRYPOINT ["/usr/local/bin/init.sh"]
CMD ["frankenphp", "php-cli", "artisan", "octane:frankenphp"]
# InvoiceNinja
COPY --from=prepare-app --chown=${user}:${user} /app /app
@@ -91,3 +88,9 @@ COPY --from=prepare-app --chown=${user}:${user} /app /app
COPY --chmod=0755 scripts/init.sh /usr/local/bin/init.sh
USER ${user}
HEALTHCHECK --start-period=10s CMD curl -f http://localhost/health
ENTRYPOINT ["/usr/local/bin/init.sh"]
CMD ["frankenphp", "php-cli", "artisan", "octane:frankenphp"]

View File

@@ -9,7 +9,6 @@ x-logging: &default-logging
x-app-volumes: &volumes
volumes:
- ./.env:/app/.env
- app_cache:/var/www/html/bootstrap/cache
- app_storage:/app/storage
- caddy_data:/data
@@ -31,9 +30,6 @@ services:
environment:
LARAVEL_ROLE: app
<<: *volumes
# HEALTHCHECK from frankenphp image
healthcheck:
start_period: 180s
depends_on:
mysql:
condition: service_healthy
@@ -143,7 +139,6 @@ services:
# logging: *default-logging
volumes:
app_cache:
app_storage:
caddy_data:
mysql_data:

12
debian/php/php.ini vendored
View File

@@ -6,10 +6,18 @@ upload_max_filesize=10M
[opcache]
; https://www.php.net/manual/en/opcache.installation.php#opcache.installation.recommended
opcache.enable_cli=1
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
[jit]
; https://wiki.php.net/rfc/jit_config_defaults
opcache.jit=tracing
opcache.jit_buffer_size=64M
[extra]
; https://frankenphp.dev/docs/performance/#php-performance
; http://symfony.com/doc/current/performance.html
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.preload=/app/preload.php
opcache.validate_timestamps=0
realpath_cache_size = 4096K
realpath_cache_ttl = 600

View File

@@ -3,6 +3,12 @@
# Fallback to app
role=${LARAVEL_ROLE:-app}
# Set PDF generation browser path based on architecture
export SNAPPDF_CHROMIUM_PATH=/usr/bin/google-chrome-stable
if [ "$(dpkg --print-architecture)" = "arm64" ]; then
export SNAPPDF_CHROMIUM_PATH=/usr/bin/chromium
fi
# Check for default CMD, flag(s) or empty CMD
if [ "$*" = 'frankenphp php-cli artisan octane:frankenphp' ] || [ "${1#-}" != "$1" ] || [ "$#" -eq "0" ]; then
@@ -38,6 +44,13 @@ if [ "$*" = 'frankenphp php-cli artisan octane:frankenphp' ] || [ "${1#-}" != "$
if [ "${role}" = "app" ]; then
cmd="frankenphp php-cli artisan octane:frankenphp"
# Check for required folders and create if needed, relevant for bind mounts
# It is not possible to chown, as we are not executing this script as root
[ -d /app/storage/framework/sessions ] || mkdir -p /app/storage/framework/sessions
[ -d /app/storage/framework/views ] || mkdir -p /app/storage/framework/views
[ -d /app/storage/framework/cache ] || mkdir -p /app/storage/framework/cache
[ -d /app/storage/logs ] || mkdir -p /app/storage/logs
if [ "$APP_ENV" = "production" ]; then
frankenphp php-cli artisan optimize
fi