Compare commits

...

480 Commits

Author SHA1 Message Date
David Bomba
b599ca5905 Merge pull request #845 from Thulium-Drake/fix_init
Ensure that the target folder is present before copying files into it
2025-12-28 09:50:53 +11:00
Jeffrey van Pelt
d222163f82 Fix syntax to match other folders 2025-12-24 13:04:50 +01:00
Jeffrey van Pelt
d81eb48e55 Ensure that the target folder is present before copying files into it 2025-12-20 12:11:55 +01:00
David Bomba
a7f9ed049c Merge pull request #844 from benbrummer/debian
Change mv to cp for public folder update
2025-12-19 22:19:47 +11:00
benbrummer
aec886c9eb Fix rm command to remove all files in public folder
Signed-off-by: benbrummer <info@benjamin-brummer.de>
2025-12-18 16:07:16 +01:00
benbrummer
84efa573f0 Change mv to cp for public folder update
Replaced mv command with cp for copying files to public folder and added cleanup of temporary public files. This is a robust alternative to mv for e.g ZFS and docker overlay2

Signed-off-by: benbrummer <info@benjamin-brummer.de>
2025-12-18 16:00:21 +01:00
David Bomba
849fc2365d Merge pull request #841 from turbo124/debian
Set default memory limit
2025-12-18 09:08:25 +11:00
David Bomba
adfa143861 Set default memory limit 2025-12-18 09:07:30 +11:00
David Bomba
b80e842ad7 Merge pull request #832 from benbrummer/debian
unicode emoji for dockerhub
2025-11-05 09:46:05 +11:00
Benjamin Brummer
f8550e7e0d unicode emoji 2025-11-04 14:08:55 +01:00
David Bomba
f775866abf Merge pull request #831 from turbo124/debian
Fixes for release for debian/octane
2025-11-04 10:00:42 +11:00
David Bomba
85fad200a0 Fixes for release for debian/octane 2025-11-04 09:59:10 +11:00
David Bomba
16022da2ac Merge pull request #829 from benbrummer/debian
url as argument
2025-10-30 06:57:57 +11:00
Benjamin Brummer
40817ae28c move chown to next stage 2025-10-29 14:16:12 +01:00
Benjamin Brummer
af5e8d6b4f remove duplicate line 2025-10-29 13:49:25 +01:00
Benjamin Brummer
cf822e0de9 url as argument 2025-10-29 13:38:29 +01:00
Benjamin Brummer
79dde723bd ADD sets rw only for root 2025-10-29 08:33:47 +01:00
David Bomba
c90298d29c Merge pull request #823 from TheNewSound/patch-2
Update Dockerfile to use ADD for downloading files, instead of RUN curl
2025-10-29 16:28:18 +11:00
David Bomba
b9ba364665 Merge pull request #826 from benbrummer/debian
Fix build workflow
2025-10-29 10:53:15 +11:00
Benjamin Brummer
77807f94f4 cleanup workflow 2025-10-28 15:01:47 +01:00
Benjamin Brummer
854b104915 Update badges 2025-10-28 14:54:05 +01:00
TheNewSound
192c59d596 Remove --chown and rm from Dockerfile
Signed-off-by: TheNewSound <info@worldwidecrap.nl>
2025-10-28 09:01:47 +01:00
Benjamin Brummer
fc6d89b9ef Cleanup 2025-10-28 08:57:58 +01:00
Benjamin Brummer
b572bccd0e no push and merge 2025-10-28 08:44:59 +01:00
Benjamin Brummer
b9bef3e436 update triggers to run for changes in .github 2025-10-28 08:38:06 +01:00
Benjamin Brummer
475335244f Secrets are not available for pull requests from a fork 2025-10-28 08:25:52 +01:00
TheNewSound
0a774f9283 Use --chown in Dockerfile to set permissions
Signed-off-by: TheNewSound <info@worldwidecrap.nl>
2025-10-27 23:35:10 +01:00
TheNewSound
d639f649a3 Modify tar command in Dockerfile
Removed strip-components option from tar command.

Signed-off-by: TheNewSound <info@worldwidecrap.nl>
2025-10-27 16:54:22 +01:00
TheNewSound
b40a60a12d Fix ownership command for invoiceninja tarball
Signed-off-by: TheNewSound <info@worldwidecrap.nl>
2025-10-27 16:48:15 +01:00
TheNewSound
e1ed2f0eab Update Dockerfile
Fix permissions of downloaded tar.gz file via ADD

Signed-off-by: TheNewSound <info@worldwidecrap.nl>
2025-10-27 16:39:04 +01:00
TheNewSound
f9d8cf1fee Update Dockerfile to use ADD for downloading files
Replaced curl command with ADD instruction for downloading Invoice Ninja instead of RUN curl.

Signed-off-by: TheNewSound <info@worldwidecrap.nl>
2025-10-27 13:48:26 +01:00
David Bomba
7ab9653a2a Merge pull request #821 from benbrummer/debian
Correct minor version formatting in publish-image.yaml
2025-10-22 07:49:09 +11:00
benbrummer
82a9c8ae19 Correct minor version formatting in publish-image.yaml
Fix formatting of minor version in image tags.

Signed-off-by: benbrummer <info@benjamin-brummer.de>
2025-10-21 13:56:47 +02:00
David Bomba
182b600da3 Merge pull request #820 from benbrummer/debian
TAGS without REGISTRY_IMAGE
2025-10-21 18:09:14 +11:00
Benjamin Brummer
279bb447a5 separate version job with outputs for tags 2025-10-21 09:02:16 +02:00
Benjamin Brummer
f6173f458b TAGS without REGISTRY_IMAGE 2025-10-21 08:33:44 +02:00
David Bomba
c000f42e61 Merge pull request #819 from benbrummer/debian
Rename secret
2025-10-21 07:20:28 +11:00
benbrummer
c348f92aa9 rename secret 2025-10-20 22:11:31 +02:00
benbrummer
d8d8415771 Rename secret 2025-10-20 22:07:35 +02:00
David Bomba
f897dc3b2d Merge pull request #818 from benbrummer/debian
manifest creation for multiple runners
2025-10-21 06:55:23 +11:00
Benjamin Brummer
98f60d721c multiple runner publish 2025-10-20 21:45:11 +02:00
benbrummer
ea252c7891 multiple runner build 2025-10-20 21:01:35 +02:00
Benjamin Brummer
abeae7fb64 Publish manifest for multiple runners 2025-10-20 10:33:37 +02:00
Benjamin Brummer
fbb4bd29f7 handle digest 2025-10-20 10:31:21 +02:00
Benjamin Brummer
7bb84355df initial commit for manifest creation for multiple runners 2025-10-20 09:34:35 +02:00
David Bomba
3509d03cf5 Merge pull request #816 from benbrummer/debian
Compose file refactoring - Debian
2025-10-01 18:11:47 +10:00
Benjamin Brummer
3ea9b66fde Default timing configuration for healthcheck should be sufficient 2025-10-01 07:50:27 +02:00
Benjamin Brummer
15feba28e5 Let compose create the network for the stack 2025-10-01 07:23:58 +02:00
Benjamin Brummer
b1ee5a8e98 Use docker default logging configuration 2025-10-01 07:18:49 +02:00
benbrummer
daccb15073 Merge branch 'invoiceninja:debian' into debian 2025-09-30 13:40:41 +02:00
Benjamin Brummer
5970556335 Mounting .env file is redundant with env_file: 2025-09-30 13:20:39 +02:00
Benjamin Brummer
e1cf8751db Do not pass all variables into mysql container 2025-09-30 13:16:14 +02:00
David Bomba
1ef35c361c Merge pull request #814 from benbrummer/debian
Push README.md to DockerHub
2025-09-30 21:07:45 +10:00
Benjamin Brummer
47b370601c Push README.md to DockerHub 2025-09-30 12:56:53 +02:00
David Bomba
c72b175630 Merge pull request #812 from benbrummer/debian
Fix syntax error for cron
2025-09-30 18:55:22 +10:00
benbrummer
303c34665b Merge branch 'invoiceninja:debian' into debian 2025-09-30 10:53:31 +02:00
Benjamin Brummer
094762fcc1 fix cron 2025-09-30 10:52:12 +02:00
David Bomba
fac0ae1798 Merge pull request #811 from benbrummer/debian
Fix Unexpected input(s) 'stale-label', 'only-issues'
2025-09-30 18:51:53 +10:00
Benjamin Brummer
8eee7f9a1a Fix Unexpected input(s) 'stale-label', 'only-issues' 2025-09-30 10:45:16 +02:00
David Bomba
7238c8fab4 Merge pull request #808 from benbrummer/debian
Remove artisan package:discover
2025-09-30 07:07:28 +10:00
Benjamin Brummer
6e24faee43 matrix build with arm runners 2025-09-29 22:14:49 +02:00
Benjamin Brummer
1895f822f5 Update upgrade instructions 2025-09-29 14:12:35 +02:00
Benjamin Brummer
7a985b4d0d Remove redundant package discovery command from production setup 2025-09-29 14:06:41 +02:00
David Bomba
6c8a692c5e Merge pull request #805 from benbrummer/debian
Optimize artisan commands and add healthcheck as condition for app
2025-09-29 08:10:00 +10:00
Benjamin Brummer
91a2a106e0 Optimize artisan commands 2025-09-28 09:15:52 +02:00
Benjamin Brummer
7bd0a56260 Increase start-period, as initialization and migrations can take some time 2025-09-28 09:15:17 +02:00
Benjamin Brummer
32e59e289b Add healthcheck as condition for app 2025-09-26 15:17:44 +02:00
David Bomba
bafea492a9 Merge pull request #797 from benbrummer/debian
Create app/public
2025-09-09 07:31:56 +10:00
benbrummer
9a56657aa4 Create app/public
Signed-off-by: benbrummer <info@benjamin-brummer.de>
2025-09-08 16:41:17 +02:00
David Bomba
f36968c788 Merge pull request #792 from turbo124/debian
Rollback to 8.4
2025-09-03 07:27:56 +10:00
David Bomba
ee060b45fd Rollback to 8.4 2025-09-03 07:27:21 +10:00
David Bomba
430955d43f Merge pull request #790 from turbo124/debian
Roll back to PHP 8.3
2025-09-02 18:55:52 +10:00
David Bomba
abc66d2491 Roll back to PHP 8.3 2025-09-02 18:54:51 +10:00
David Bomba
d75b8e3616 Merge pull request #789 from benbrummer/debian
Workaround: Disable SSL for mariadb-client for compatibility with MySQL
2025-09-02 06:22:16 +10:00
benbrummer
085df042c1 Workaround: Disable SSL for mariadb-client for compatibility with MySQL 2025-09-01 21:36:45 +02:00
David Bomba
b67f49b9ba Merge pull request #784 from benbrummer/debian
HEALTHCHECK, mariadb-client and PHP 8.4
2025-08-29 22:02:27 +10:00
benbrummer
d1621f0fe5 PHP 8.4
Signed-off-by: benbrummer <info@benjamin-brummer.de>
2025-08-29 12:57:55 +02:00
benbrummer
61728ec89b Fix mariadb-client connection to mysql
Debian Trixie has a new mariadb-client, with encryption by default

Signed-off-by: benbrummer <info@benjamin-brummer.de>
2025-08-29 12:51:27 +02:00
benbrummer
1bda3e5809 Use health endpoint for HEALTHCHECK
Signed-off-by: benbrummer <info@benjamin-brummer.de>
2025-08-29 08:02:56 +02:00
David Bomba
6a16f6f4de Merge pull request #770 from TheNewSound/debian
Use default supervisord config as baseline
2025-08-12 08:34:16 +10:00
v
68cfe612ee Start supervisord using /etc/supervisor/supervisord.conf so that a socket at /var/run is created (default supervisord config). 2025-08-01 15:45:54 +02:00
David Bomba
ed9c23d9c7 Merge pull request #753 from benbrummer/debian
saxon defaults now to 12.5.0
2025-05-11 09:44:26 +10:00
benbrummer
f6fa32f606 saxon defaults now to 12.5.0
Signed-off-by: benbrummer <info@benjamin-brummer.de>
2025-05-10 10:59:13 +02:00
David Bomba
a0454d3998 Merge pull request #745 from benbrummer/debian
remove bootstrap/cache volume
2025-04-05 06:49:13 +11:00
benbrummer
04f4dbe248 remove bootstrap/cache volume
align with docker hub tutorial about laravel
* https://docs.docker.com/guides/frameworks/laravel/
* https://github.com/dockersamples/laravel-docker-examples/blob/main/compose.prod.yaml#L14

Signed-off-by: benbrummer <info@benjamin-brummer.de>
2025-04-04 11:43:33 +02:00
benbrummer
a7822987b2 Merge pull request #744 from gianluigitrontini/debian
Fixes #743: Move conditionals for chromium/google chrome before artisan optimize
2025-04-03 16:47:12 +02:00
Gianluigi Trontini
7b7f3df710 Fixes #743: Move conditionals for chromium/google chrome at the top of the file 2025-04-03 15:37:52 +02:00
benbrummer
a9b3a8a8a4 Merge pull request #737 from RichyHBM/patch-1
Create required dirs if missing
2025-03-29 09:55:16 +01:00
Richy HBM
a53b702c45 Create required dirs if missing
Signed-off-by: Richy HBM <RichyHBM@users.noreply.github.com>
2025-03-27 16:04:35 +00:00
David Bomba
39c546e270 remove default prop for snappdf pay 2025-03-25 12:03:04 +11:00
David Bomba
9c0e00edb3 Add conditionals for chromium/google chrome 2025-03-25 12:02:47 +11:00
David Bomba
1f28106e43 Merge pull request #731 from benbrummer/debian
use github latest url, tar.gz without top level repository
2025-03-19 10:05:15 +11:00
David Bomba
c4513a868a Merge pull request #733 from fabiomanz/patch-1
Upgrade from old docker-compose syntax to v2 docker compose syntax
2025-03-18 02:54:22 +11:00
Fabio
856d47217e Upgrade from old docker-compose syntax to v2 docker compose syntax
Signed-off-by: Fabio <fabio.manz@t-online.de>
2025-03-17 13:57:36 +01:00
Benjamin Brummer
be0ec204d4 use github latest url, tar.gz without top level repository 2025-03-15 06:35:12 +00:00
David Bomba
9d99120693 Merge pull request #713 from turbo124/debian
Fixes for publish image regression - force 22.04
2025-01-24 16:12:59 +11:00
David Bomba
a5204ccb7d Fixes for publish image regression - force 22.04 2025-01-24 16:12:25 +11:00
David Bomba
995d70ab60 Merge pull request #706 from turbo124/debian
Fixes for php extension installer
2025-01-24 12:59:21 +11:00
David Bomba
11855e0701 Fixes for php extension installer 2025-01-24 12:58:04 +11:00
David Bomba
42816b6282 Require mbstring 2025-01-24 09:23:10 +11:00
David Bomba
2ad607fa2d Create auto-close-issues.yml
Signed-off-by: David Bomba <turbo124@gmail.com>
2025-01-21 13:47:56 +11:00
David Bomba
2c25caf627 Merge pull request #694 from benbrummer/debian
Fix for reap logging
2025-01-15 08:56:09 +11:00
benbrummer
a2b64d2060 Merge branch 'invoiceninja:debian' into debian 2025-01-14 22:32:43 +01:00
Benjamin Brummer
b58d4e1259 fix for reaps 2025-01-14 21:31:50 +00:00
Benjamin Brummer
a7683ada33 log to stdout 2025-01-14 21:19:38 +00:00
Benjamin Brummer
3e8a6c72a7 healthcheck for php-fpm master process 2025-01-14 21:19:25 +00:00
David Bomba
3b0f7c463a Merge pull request #691 from benbrummer/debian
php optimization
2025-01-15 08:18:25 +11:00
Benjamin Brummer
c00d44380c log worker to stdout/stderr 2025-01-13 16:34:49 +00:00
Benjamin Brummer
cb4120fc54 Multistage, single init.sh 2025-01-13 16:31:39 +00:00
Benjamin Brummer
f2c5a1f842 composer is not needed, permissions are already correct in the image 2025-01-13 13:11:50 +00:00
Benjamin Brummer
029bc57fac download invoiceninja.tar.gz 2025-01-13 13:09:33 +00:00
Benjamin Brummer
d60bf39950 set correct file-extension 2025-01-13 12:52:28 +00:00
Benjamin Brummer
31eb278f0d prefer files from image 2025-01-13 12:30:06 +00:00
Benjamin Brummer
44b460bf13 php optimization opcache and realpath 2025-01-13 12:22:01 +00:00
Benjamin Brummer
7bae300fd2 disable preload for artisan tinker 2025-01-13 12:20:03 +00:00
David Bomba
3394694ffc Merge pull request #676 from benbrummer/debian
arm64 image with chromium
2024-12-24 18:28:05 +11:00
Benjamin Brummer
99f280319c saxon is available for arm64 and amd64 2024-12-21 20:38:44 +01:00
Benjamin Brummer
470a3d036d EXPOSE is already inherited from base image 2024-12-21 20:37:47 +01:00
Benjamin Brummer
514ebb74c6 No need to have arm64 and amd64 for php extensions 2024-12-21 20:37:16 +01:00
Benjamin Brummer
dc3b87140f Install chromium for arm64 2024-12-21 20:36:20 +01:00
Benjamin Brummer
c0afd971e1 mariadb is the default on debian 2024-12-21 20:32:22 +01:00
Benjamin Brummer
677cc44a15 remove gosu 2024-12-21 20:31:42 +01:00
David Bomba
91c7b1ea2a Merge pull request #673 from turbo124/debian
Updates for github actions
2024-12-11 09:55:32 +11:00
David Bomba
a508ccc41e Updates for github actions 2024-12-11 09:53:54 +11:00
David Bomba
d42f66617c Merge pull request #672 from brdns/debian
Remove nginx `[warn]` log when uploading
2024-12-10 06:10:58 +11:00
brdns
8746015041 Removes nginx logs when uploading: [warn] a client request body is buffered to a temporary file
[warn] a client request body is buffered to a temporary file
Was already fixed with commit bfc61fb64e
Then got reverted by commit 66408fccb2
2024-12-09 18:02:44 +01:00
David Bomba
53c38b65f9 Merge pull request #664 from benbrummer/debian-dev
dockerfile cleanup, apt reduction, php module configuration, allow to run custom CMD
2024-12-06 08:49:18 +11:00
Benjamin Brummer
473e38259f Merge remote-tracking branch 'origin/debian' into debian-dev
CMD was not properly handled
2024-12-05 13:57:10 +01:00
Benjamin Brummer
d538666600 final fix for if statement 2024-12-05 13:47:42 +01:00
Benjamin Brummer
0ace427585 - supervisord.conf defines nodaemon already
- Fix if statement
2024-12-05 13:35:32 +01:00
benbrummer
8c1357fc4c Merge branch 'debian' into debian-dev
Signed-off-by: benbrummer <info@benjamin-brummer.de>
2024-12-05 10:52:43 +01:00
Benjamin Brummer
806a340a00 - make it possible to run a custom CMD
- rename volume according to their origin
- Add arguments for required, suggested and extra php-modules
2024-12-05 10:34:45 +01:00
Benjamin Brummer
d437dab72c remove upload folder 2024-12-04 10:24:10 +01:00
Benjamin Brummer
d64ed83abf temporarly install gpg 2024-12-03 23:57:20 +01:00
Benjamin Brummer
337f38e0dc remove default values 2024-12-03 10:53:13 +01:00
David Bomba
5d5c036175 Merge pull request #667 from turbo124/debian
Patches for copying files
2024-12-03 15:01:54 +11:00
David Bomba
d5ed1935f7 set port 80 2024-12-03 15:01:08 +11:00
David Bomba
5e40e34943 run local init.sh file 2024-12-03 14:59:41 +11:00
David Bomba
c4e1d0e3a5 Updates for copy files 2024-12-03 14:49:58 +11:00
David Bomba
84dcb8caab Merge pull request #665 from turbo124/debian
Update dockerfile
2024-12-03 12:40:39 +11:00
Benjamin Brummer
733e72d5dd curl is already installed 2024-12-02 12:56:24 +01:00
Benjamin Brummer
7eaf6968d2 - fonts-noto-cjk-extra depends on fonts-noto-cjk
- *-dev packages are not required
- fonts depends on libpng16-16 (no dev)
2024-12-02 12:30:17 +01:00
Benjamin Brummer
66408fccb2 align php settings with recommendations opcache/jit from php.net (aligned for php 8.3 and 8.4), increased buffernumber to allow parallel requests without writing to file 2024-12-02 11:53:27 +01:00
Benjamin Brummer
79647d4f8c Fix do not delete public folder on container restart 2024-12-02 11:29:40 +01:00
Benjamin Brummer
067b5eb194 remove value, which matches default 2024-12-01 14:53:48 +01:00
Benjamin Brummer
eed358c32b extended gzip configuration 2024-12-01 14:38:48 +01:00
Benjamin Brummer
71909c73e0 configure chrome during installation 2024-12-01 13:46:58 +01:00
Benjamin Brummer
fab57c9db3 Ensure permissions on volumes are correct
mv public directory inside a single RUN to not increase the image
2024-12-01 12:11:57 +01:00
Benjamin Brummer
e7bc565745 Set correct owner, file and directory permissions. 2024-12-01 10:39:40 +01:00
Benjamin Brummer
87092bb8bd All directories apart of "uploads" exist already 2024-12-01 10:27:06 +01:00
Benjamin Brummer
5abd297c7f switch to user www-data before running tar. tar -o will set correct ownership afterwards. 2024-12-01 09:48:12 +01:00
Benjamin Brummer
8be252781f google-chrome only needs to have ownership for /var/www, which is by default owned by root 2024-12-01 09:42:29 +01:00
David Bomba
f281b33ea1 Update dockerfile 2024-11-30 22:05:28 +11:00
Benjamin Brummer
22d170a4e5 shrink directory configuration 2024-11-29 13:40:46 +01:00
Benjamin Brummer
f722c91d21 Merge chrome related configuration into one RUN 2024-11-29 11:04:11 +01:00
Benjamin Brummer
641b527702 fix if else 2024-11-29 10:48:14 +01:00
Benjamin Brummer
d139a48303 move google-chrome-stable related apt packages to arm64 2024-11-29 10:26:46 +01:00
benbrummer
a75b6f0a00 Merge branch 'invoiceninja:debian' into debian 2024-11-29 09:45:20 +01:00
David Bomba
113c700754 Merge pull request #663 from turbo124/debian
Corrective fixes for new dockerfile
2024-11-29 13:57:39 +11:00
David Bomba
b6be06c977 Corrective fixes for new dockerfile 2024-11-29 13:56:46 +11:00
benbrummer
8c53895c97 Merge branch 'invoiceninja:debian' into debian 2024-11-28 21:52:35 +01:00
Benjamin Brummer
8204465048 cleanup 2024-11-28 21:35:05 +01:00
David Bomba
baad65c737 Merge pull request #661 from benbrummer/debian
php 8.3 and apt package optimization
2024-11-29 07:17:52 +11:00
benbrummer
9fd35b874d second try for nginx
Signed-off-by: benbrummer <info@benjamin-brummer.de>
2024-11-28 16:18:05 +01:00
benbrummer
fe4993f8a3 set correct mount destination for nginx
Signed-off-by: benbrummer <info@benjamin-brummer.de>
2024-11-28 15:50:38 +01:00
Benjamin Brummer
b83fb831b9 - Use default laravel nginx and extend it with invoiceninja -specific settings
- Overwrite php.ini/php-fpm.ini settings with customized settings
2024-11-28 14:04:11 +01:00
Benjamin Brummer
687e74c983 Fix: app-1 for supervisor warning redirect_stderr 2024-11-28 10:55:29 +01:00
Benjamin Brummer
7644151370 memory limits are not aligned with php/opcache and cause error 500 2024-11-28 10:26:23 +01:00
Benjamin Brummer
c84f80f9a9 add build context to docker-compose.yml 2024-11-28 10:23:25 +01:00
Benjamin Brummer
6cfdca078f - Update to php 8.3
- Minimal system packages
  - additional packages will be handled as dependencies of google-chrome-stable (amd64
  - arm64 will still install all apt packages
- "--no-install-recommends" for apt-get
2024-11-28 10:22:05 +01:00
David Bomba
74ed1b2432 Merge pull request #659 from benbrummer/debian
install saxon 12.5.0 with install-php-extensions
2024-11-28 11:28:26 +11:00
Benjamin Brummer
b3b7f7b9f0 - install saxon with install-php-extensions
- replace deprecated apt-key
- artisan optimize will handle caches
2024-11-27 13:01:46 +01:00
David Bomba
a6d8f663ae Merge pull request #656 from benbrummer/debian
Use php.ini-production
2024-11-27 19:27:34 +11:00
David Bomba
3024f11a31 Merge pull request #658 from brdns/debian-dev
move client_max_body_size from default.conf to nginx.conf
2024-11-27 19:19:14 +11:00
Benjamin Brummer
6274c432d9 Fix access for nginx to storage/public 2024-11-26 17:16:09 +01:00
Brandon
f5afd3f527 Revert "Prevents swapping on pdf generation with Chrome"
This reverts commit 3ce5983131.
2024-11-26 16:28:04 +01:00
Brandon
3ce5983131 Prevents swapping on pdf generation with Chrome
Increase allowed memory usage of main container from 512M to 1G

This is useful particularly if the server uses a hard drive, which can drastically slow down pdf generation during swap
2024-11-26 16:22:38 +01:00
Brandon
bfc61fb64e client_max_body_size is a parameter of nginx.conf and not of default.conf (https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size )
add client_body_buffer_size

prevents the following logs: [warn] a client request body is buffered to a temporary file
2024-11-26 16:07:27 +01:00
Benjamin Brummer
535d6d4c06 Refactoring docker-compose.yml 2024-11-26 12:50:59 +01:00
Benjamin Brummer
24d49a4374 refactoring dockerfile 2024-11-26 12:49:12 +01:00
Benjamin Brummer
30ad63f306 Use php.ini-production 2024-11-26 09:46:36 +01:00
David Bomba
60fd0aa79e Merge pull request #655 from turbo124/debian
Set home path for PHP when supervisor boots
2024-11-26 08:31:54 +11:00
David Bomba
d1786100ca Set home path for PHP when supervisor boots 2024-11-26 08:31:18 +11:00
David Bomba
f58ca724c9 Merge pull request #653 from turbo124/debian
Expose storage/ for nginx
2024-11-25 21:38:53 +11:00
David Bomba
53cadbf750 Expose storage/ for nginx 2024-11-25 21:38:26 +11:00
David Bomba
3fca330958 Merge pull request #651 from turbo124/debian
Updates for volume mounts
2024-11-25 11:39:13 +11:00
David Bomba
7d79b39bc2 Updates for volume mounts 2024-11-25 11:38:39 +11:00
David Bomba
aa271a1488 Merge pull request #650 from turbo124/debian
Add index.html to public/
2024-11-25 09:14:58 +11:00
David Bomba
451c1b872f Add index.html to public/ 2024-11-25 09:14:34 +11:00
David Bomba
5c74753da2 Merge pull request #648 from turbo124/debian
Updates for resolving filessystem
2024-11-24 19:58:47 +11:00
David Bomba
83f17aa669 Updates for resolving filessystem 2024-11-24 19:56:02 +11:00
David Bomba
394c4c8b5e Merge pull request #647 from turbo124/debian
Add storage link
2024-11-24 16:17:53 +11:00
David Bomba
9ed63a6762 add storage link 2024-11-24 15:48:15 +11:00
David Bomba
cb6d6d46c2 Merge pull request #646 from turbo124/debian
Adjustments for permissions
2024-11-24 11:51:49 +11:00
David Bomba
3b0e475de6 Adjustments for permissions 2024-11-24 11:50:13 +11:00
David Bomba
d5bb90fa04 Merge pull request #644 from turbo124/debian
Fixes for permissions on container init
2024-11-24 08:44:10 +11:00
David Bomba
1b62d86659 Fixes for permissions on container init 2024-11-24 08:43:50 +11:00
David Bomba
4431abcb88 Merge pull request #643 from turbo124/debian
Updates for permission handling in the container
2024-11-23 21:00:01 +11:00
David Bomba
d05e55a24e Updates for permission handling in the container 2024-11-23 20:58:56 +11:00
David Bomba
34e5043317 Merge pull request #642 from turbo124/debian
Fixes for tar command flags
2024-11-23 19:14:23 +11:00
David Bomba
6f92d1c155 Fixes for tar command flags 2024-11-23 19:13:59 +11:00
David Bomba
11330003a2 Merge pull request #641 from turbo124/debian
Updates for tar extraction
2024-11-23 19:01:32 +11:00
David Bomba
47b015af7c More explicity unpacking of .tar file 2024-11-23 19:00:45 +11:00
David Bomba
c6648a8511 Updates for tar extraction 2024-11-23 18:48:09 +11:00
David Bomba
de2036adff Merge pull request #640 from turbo124/debian
Fixes for tar command flags
2024-11-23 17:07:22 +11:00
David Bomba
ea8c5fed8e Fixes for tar command flags 2024-11-23 17:07:00 +11:00
David Bomba
c2f8cedc4a Merge pull request #639 from turbo124/debian
Enforce latest tags during build
2024-11-23 17:02:05 +11:00
David Bomba
7ddfe8a793 Enforce latest tags 2024-11-23 17:01:28 +11:00
David Bomba
196e66e06d updates for container 2024-11-23 16:57:44 +11:00
David Bomba
7498a94bd1 Merge pull request #638 from turbo124/debian
Update readme
2024-11-23 16:33:49 +11:00
David Bomba
8289c6c65e Update readme 2024-11-23 16:23:14 +11:00
David Bomba
b75ac4fd87 Update directory 2024-11-23 16:09:11 +11:00
David Bomba
94d3f6212e Merge pull request #636 from turbo124/debian
Update github action versions
2024-11-23 16:07:46 +11:00
David Bomba
a940bf2ed2 Update github action versions 2024-11-23 16:07:18 +11:00
David Bomba
76ca42bddb Merge pull request #635 from turbo124/debian
Finalize documentation
2024-11-23 14:26:12 +11:00
David Bomba
84194970b3 Merge branch 'debian' into debian
Signed-off-by: David Bomba <turbo124@gmail.com>
2024-11-23 14:26:06 +11:00
David Bomba
919e15fb40 Readme formatting 2024-11-23 14:24:50 +11:00
David Bomba
2b8bb21d04 Readme formatting 2024-11-23 14:24:14 +11:00
David Bomba
8ff82909c8 Updates for defaults 2024-11-23 14:20:08 +11:00
David Bomba
7ce743bd91 Shield Badges 2024-11-23 14:19:33 +11:00
David Bomba
ffc777d5f1 Shield Badges 2024-11-23 14:17:26 +11:00
David Bomba
1446bfabfc Shield Badges 2024-11-23 14:14:25 +11:00
David Bomba
5ae3240677 Update README.md
Signed-off-by: David Bomba <turbo124@gmail.com>
2024-11-23 14:12:02 +11:00
David Bomba
1fc60549c2 Update README.md
Signed-off-by: David Bomba <turbo124@gmail.com>
2024-11-23 14:10:04 +11:00
David Bomba
a5ad84f22b Merge pull request #634 from turbo124/debian
conditionally build saxon on amd64 only.
2024-11-23 09:44:06 +11:00
David Bomba
e5847a6ff1 Conditionally build saxon on amd64 2024-11-23 09:43:28 +11:00
David Bomba
1c1bc350dc Rename gh action 2024-11-23 08:58:24 +11:00
David Bomba
e83372d437 Merge pull request #633 from turbo124/debian
fixes for amd64 builds
2024-11-23 08:52:09 +11:00
David Bomba
22b2f5416a fixes for amd64 builds 2024-11-23 08:51:42 +11:00
David Bomba
dbb671eeab Merge pull request #632 from turbo124/debian
Fixes for build stages on different architectures.
2024-11-23 08:44:00 +11:00
David Bomba
baf7b2bff7 Conditional builds for google chrome 2024-11-23 08:43:25 +11:00
David Bomba
db7c7de624 Fixes for trailing backslashes 2024-11-23 08:41:54 +11:00
David Bomba
e8b62de217 Merge pull request #631 from turbo124/debian
Remove alpine build from Debian branch
2024-11-23 08:32:54 +11:00
David Bomba
065a7f94e6 Remove alpine build from Debian branch 2024-11-23 08:32:31 +11:00
David Bomba
47c2ee05b9 Merge pull request #630 from turbo124/debian
Fixes for publish release
2024-11-23 08:30:56 +11:00
David Bomba
adeba71a55 Fixes for publish release 2024-11-23 08:30:31 +11:00
David Bomba
65d5904f35 Merge pull request #629 from turbo124/debian
Fixes for publish release
2024-11-23 08:27:31 +11:00
David Bomba
00a346853c Fixes for publish release 2024-11-23 08:27:03 +11:00
David Bomba
ee74e6170c Merge pull request #628 from turbo124/debian
Debian
2024-11-22 19:05:41 +11:00
David Bomba
857eaf86bb Cleanup build iamge 2024-11-22 17:01:40 +11:00
David Bomba
b8dbe76900 Fixes for incorrect build path 2024-11-22 16:43:46 +11:00
David Bomba
bf07c49d31 Fixes for incorrect build path 2024-11-22 16:42:06 +11:00
David Bomba
397d19c06d Fixes for incorrect build path 2024-11-22 16:40:01 +11:00
David Bomba
4d16fb2efc Fixes for incorrect build path 2024-11-22 16:37:41 +11:00
David Bomba
01b30fdb1a Fixes for incorrect build path 2024-11-22 16:35:04 +11:00
David Bomba
814b8bd283 Fixes for incorrect build path 2024-11-22 16:32:19 +11:00
David Bomba
201a229ec7 Remove redundant gh builds 2024-11-22 16:29:10 +11:00
David Bomba
1a144db29a remove duplicate font-liberation 2024-11-22 16:26:32 +11:00
David Bomba
655e7b61ea change image name 2024-11-22 16:09:15 +11:00
David Bomba
113ed64aee Change installation of google-chrome in gh actions 2024-11-22 16:08:26 +11:00
David Bomba
6430ddcb92 Update readme 2024-11-22 16:03:08 +11:00
David Bomba
7a9d5f7187 Add build steps 2024-11-22 15:42:59 +11:00
David Bomba
eeaaf95d47 Complete build pipeline to include debian image 2024-11-22 15:37:45 +11:00
David Bomba
b338ef90cb Enable opcache 2024-11-22 14:01:12 +11:00
David Bomba
1f778c0945 updates for debian 2024-11-22 13:48:50 +11:00
David Bomba
b65257db66 New debian pipe 2024-11-22 10:45:30 +11:00
David Bomba
9941847af7 Merge pull request #608 from turbo124/master
Add intl extension
2024-07-08 09:44:43 +10:00
David Bomba
edf21b5d4f Add intl extension 2024-07-08 09:21:29 +10:00
David Bomba
7acd479cfd Merge pull request #593 from turbo124/master
Changes for release filename
2024-06-24 09:06:16 +10:00
David Bomba
bed751ce18 Changes for release filename 2024-06-24 09:05:48 +10:00
David Bomba
303bc81d3d Merge pull request #517 from Leopere/patch-1
Please don't bind mysql to all interfaces with default credentials in Docker-compose
2024-06-23 13:59:00 +10:00
David Bomba
47e5c41a19 Merge pull request #587 from Daniel15/patch-1
php.ini: Update opcache.preload example to use correct path
2024-06-12 16:43:49 +10:00
Daniel Lo Nigro
89a994b12f php.ini: Update opcache.preload to use correct path
Signed-off-by: Daniel Lo Nigro <d@d.sb>
2024-06-11 23:05:20 -07:00
David Bomba
5984339118 Merge pull request #586 from turbo124/master
Fixes for resource path download
2024-06-09 13:32:22 +10:00
David Bomba
47dba02b27 Fixes for build 2024-06-09 13:31:38 +10:00
David Bomba
1aca36878c Fixes for download url 2024-06-09 12:42:49 +10:00
David Bomba
cf324703a8 Merge pull request #585 from turbo124/master
Fixes for build
2024-06-09 12:32:11 +10:00
David Bomba
df2ea66cda Fixes for build 2024-06-09 12:31:47 +10:00
David Bomba
02eed022ac Merge pull request #584 from turbo124/master
Fixes for build
2024-06-09 12:30:28 +10:00
David Bomba
738546d7b1 Add back fonts 2024-06-09 12:30:02 +10:00
David Bomba
e31a2b77bc Fies for downloading package 2024-06-09 12:29:25 +10:00
David Bomba
50debff2da Fixes for build 2024-06-09 11:57:23 +10:00
David Bomba
492d895d06 Merge pull request #583 from turbo124/master
Fixes for build
2024-06-09 11:38:28 +10:00
David Bomba
51294f6b76 Fixes for build 2024-06-09 11:38:04 +10:00
David Bomba
81617a3dec Updates for build 2024-06-07 21:10:51 +10:00
David Bomba
a874ceb7c2 Merge pull request #581 from chaseSpace/master
build: add Chinese font pkg support
2024-06-06 13:06:47 +10:00
Leigg
4a3d8783d4 build: add Chinese font pkg support
Signed-off-by: Leigg <34116031+chaseSpace@users.noreply.github.com>
2024-06-06 09:44:17 +08:00
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
Leopere
6a05bdbbd5 Update docker-compose.yml
Please don't do this. Default credentials on the sql container in the .env file and then bind blindly 3305 on all interfaces for the public  to log in with ninja//ninja
2023-06-23 11:06:27 -04: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
David Bomba
eb58c26ebf Update env 2021-07-12 21:01:48 +10:00
Ween Jiann
d50bfde676 Remove storage persistence (#383) 2021-07-10 11:25:40 +08:00
Ween Jiann
c12e985f81 Refactor Github workflow files (#382)
* Refactor

* Add sha

* Add missing dash
2021-07-10 11:20:09 +08:00
Ween Jiann
8ef0df3d41 Check init via tinker (#381) 2021-07-10 02:43:43 +08:00
Ween Jiann
f55e9a2b49 Temporarily re-enable storage persistence (#380)
* Temporarily re-enable storage persistence

* Bump version
2021-07-10 01:04:30 +08:00
Ween Jiann
e3f47d2932 Add appURL override to chart (#379)
* Add appURL override

* Bump version
2021-07-10 00:42:44 +08:00
Ween Jiann
1636faf40d Add access modes to PVC in chart (#378)
* Add accessmodes

* Bump chart version
2021-07-09 22:23:18 +08:00
Ween Jiann
ea285c41ec Add Nginx to IN pod in chart (#377)
* Add inline-nginx

* Bump chart version

* Fix missing s in key

* Update lock file

* Add ingress
2021-07-09 20:48:21 +08:00
Ween Jiann
1537b87a3d Default persistence for storage to false in chart (#376)
* Default storage persistence to false

* Bump chart version

* Updated README.md
2021-07-09 16:37:56 +08:00
Ween Jiann
225c0eb275 Allow use of existing secret in chart (#375)
* Added existingSecrets

* Bump chart version
2021-07-09 11:42:15 +08:00
Ween Jiann
34878d0f93 Extend liveness probe delay to prevent first migration failure (#374)
* Change liveness probe type

* Change liveness probe values

* Bump chart version
2021-07-09 11:16:24 +08:00
Ween Jiann
8b9e69d51b Updated Redis chart dependencies (#372)
* Updated chart dependencies

* Change redis password flag
2021-07-08 02:11:39 +08:00
Ween Jiann
7238e521e6 Automatically set values for Nginx sub-chart based on install name (#370)
* Automatically set serverblock from IN chart

* Automatically set nginx PVC

* Bump chart version

* Upgrade dependencies

* Updated k8s test versions
2021-07-07 04:19:03 +08:00
Ween Jiann
5a1bf5c430 Refactor dockerfile for caching (#371)
* Improve caching

* Updated publish-image workflow
2021-07-06 17:11:08 +08:00
Ween Jiann
7a935a0eef Add caching to build (#369)
* Rename publish workflow

* Add caching to v5

* Updated cache buster
2021-07-02 21:42:18 +08:00
Ween Jiann
ff897d568f Change php-alpine from latest to 3.13 (#367) 2021-06-27 18:00:41 +08:00
David Bomba
b0bb0ffd25 Merge pull request #366 from turbo124/master
Rollback php-installer tags
2021-06-27 15:57:54 +10:00
David Bomba
3902b40bc1 remove tags 2021-06-27 15:55:52 +10:00
David Bomba
29e2d93e59 Merge pull request #365 from turbo124/master
Download php-installer
2021-06-27 15:21:28 +10:00
David Bomba
b7aea66e62 Download php-installer 2021-06-27 15:17:43 +10:00
David Bomba
e2db08f207 Update env
Set QUEUE_CONNECTION=database as default
2021-06-07 08:01:09 +10:00
Ffaen
59291d8687 Set trusted proxy value to allow invoiceninja to read nginx headers (#356)
Fixes #355
2021-05-27 00:32:56 +08:00
Ween Jiann
6f747207ec Add values for initial user creation to Chart (#350)
* Added user details in values.yaml

* Fix grammer in README.md

* Remove '1' suffix in DB config

* Add user password to secret

* Bump version

* Updated wait-db

* Bump IN version
2021-05-21 18:32:42 +08:00
Ween Jiann
c2aabd14ac Fix storageClass (#353) 2021-05-18 09:55:04 +08:00
Ffaen
07f1e601ab Update README to add information on env variables (#351)
* Update README to add information on env variables

References #349

* Set APP_URL to https if TLS enabled
2021-05-17 09:41:20 +08:00
Ween Jiann
13423d38c0 Fix chown in v4 (#348) 2021-05-14 09:45:32 +08:00
Ween Jiann
e34ac95617 Use logging with timestamp (#346) 2021-05-13 09:59:43 +08:00
Ween Jiann
6c68882449 Automatically create user and skip setup page (#345)
* Added checks to docker-entrypoint

* Add init scripts feature

* Added backward compatibility

* Added auto user creation

* Updated README.md and env

* Use dbCheck for checking DB connection
2021-05-13 09:41:08 +08:00
Ween Jiann
8e9e7c47da Updated dependent charts (#340)
* Updated dependent charts

* Fix releaser version

* Bump chart version
2021-05-11 09:40:19 +08:00
Ffaen
7da83b40f4 Change github actions chart release branch from master to main (#338)
The repo has renamed their master branch to main: https://github.com/helm/chart-releaser-action
2021-05-11 09:30:11 +08:00
Ween Jiann
1b48ab6983 Fix environment issues (#337)
* Clean env file

* Remove generated .env

* Fix file_env exporting empty values
2021-05-10 16:40:55 +08:00
Ween Jiann
14357b93a1 Update Chart Dependency (#336)
* Updated IN version

* Bump chart version
2021-05-10 12:15:23 +08:00
Ween Jiann
8a68fda3f3 Added volume permissions initcontainer (#335) 2021-05-10 11:40:45 +08:00
Ween Jiann
4ee20766ef Updated chart readme and bump IN version (#323)
* Updated README.md

* Bump chart version

* Fix trailing slash in APP_URL

* Bump IN version
2021-04-09 13:01:27 +08:00
David Bomba
5ba28528c3 Merge pull request #321 from turbo124/master
Set larger client max body size
2021-04-08 10:15:23 +10:00
David Bomba
9388f66a29 Set larger client max body size 2021-04-08 10:14:58 +10:00
Ween Jiann
b445cf0402 Fix Redis password in Chart (#320)
* Fix NOTES.txt

* Added Redis password

* Updated README.md
2021-04-07 22:42:42 +08:00
Ween Jiann
11c8901fe4 Use registry cache 2021-04-07 00:47:20 +08:00
Ween Jiann
3814e957e0 Use Redis Sentinel for chart (#317)
* Added sentinel config

* Bump chart version

* Fix trailing space
2021-04-06 18:18:34 +08:00
Thibaut De Muynck
62b1d8cb94 Added MariaDB to Docker compose for ARM64 (#315)
* Added option to use MariaDB instead of MySQL

* Moved MYSQL environment variables to env file
2021-04-06 09:29:04 +08:00
Ween Jiann
4cd773700e Update .gitignore 2021-04-05 17:31:27 +08:00
Ween Jiann
9f6e086633 Added Redis to Chart (#312)
* Added redis to chart

* Add snappdf config

* Updated configmap

* Updated appVersion
2021-03-29 22:20:33 +08:00
Ween Jiann
8df49feaf8 Update README.md 2021-03-29 00:54:57 +08:00
Ween Jiann
de856d0a88 Remove chmod for rootfs files 2021-03-28 23:39:37 +08:00
Ween Jiann
1f7458c9f7 Update build_push.yml 2021-03-28 23:16:04 +08:00
Ween Jiann
40e3add863 Update README.md 2021-03-28 14:47:40 +08:00
Ween Jiann
f4f8c79ce7 Split docker v4 and v5 files to different directories (#310)
* Move v4/5 files to separate folders

* Updated github build_push.yml action

* Updated docker-compose.yml
2021-03-28 14:18:54 +08:00
Ween Jiann
524e79c486 Build on ARM64 (#307)
* Updated Dockerfile for multiplatform

* Added linux/arm64 to build_push.yml
2021-03-26 09:09:37 +08:00
Ween Jiann
4ec70c8da6 Reshuffle Dockerfile to optimise caching (#306)
* Refactor alpine folder

* Rearrange Dockerfile

* Updated build_push.yml for testing

* Updated build_push.yml for production

* Added IS_DOCKER env

* Added target to build_push.yml
2021-03-25 22:05:47 +08:00
Ween Jiann
176e2c96d6 Fixed entrypoint chown statement (#304)
* Fix entrypoint

* Rescope chart actions
2021-03-25 11:18:23 +08:00
Ween Jiann
36db897022 Update bug_report.md 2021-03-24 23:58:14 +08:00
Lee Ween Jiann
022cf8c1e8 Refactor chart to charts 2021-03-24 10:12:10 +08:00
Lee Ween Jiann
517ef61313 Updated chart README.md 2021-03-24 10:08:17 +08:00
Lee Ween Jiann
8e75344717 Updated token in release.yaml 2021-03-24 09:56:29 +08:00
Ween Jiann
e19641f754 Merge Helm to Master branch (#302)
* Added chart

* Added github actions

* Fix actions

* Added README.md

Co-authored-by: David Bomba <turbo124@gmail.com>
2021-03-24 09:33:29 +08:00
David Bomba
789e49fe1b Merge pull request #301 from lwj5/actions
Rescope build_push.yaml
2021-03-24 12:28:16 +11:00
Lee Ween Jiann
d462cd64ed Rescope build_push.yaml 2021-03-24 09:18:19 +08:00
David Bomba
51629ef283 Merge pull request #300 from lwj5/docker-helm
Updated Dockerfile and supervisord.conf
2021-03-24 11:58:56 +11:00
Lee Ween Jiann
8d37d6a4c5 Added DB_PORT1 to env 2021-03-24 08:40:35 +08:00
Lee Ween Jiann
a604f4e8b6 Updated entrypoint to chown only in <4 2021-03-24 08:14:30 +08:00
Lee Ween Jiann
18fb27ad9f Merge branch 'master' into docker-helm 2021-03-24 07:59:56 +08:00
David Bomba
ff1dfee088 Merge pull request #279 from tms0/cleanup_supervisor
Cleanup supervisor conf
2021-03-24 07:51:13 +11:00
Lee Ween Jiann
f16815e960 Updated supervisor files 2021-03-23 23:18:29 +08:00
Lee Ween Jiann
c0350de418 Modified to fit k8s 2021-03-23 19:47:11 +08:00
David Bomba
f175fa4fb0 Update env 2021-03-20 16:47:37 +11:00
David Bomba
0d93596cde Update README.md 2021-03-05 20:44:54 +11:00
=
10aaf3fb6e Set auto DB backups to optin by default 2021-03-03 16:48:54 +11:00
David Bomba
8117d0c5bd Merge pull request #291 from danielgroen/master
auto db backup script
2021-03-03 16:46:13 +11:00
danielgroen
fef92891cb auto db backup script 2021-03-02 13:05:12 +01:00
David Bomba
7f415803fb Merge pull request #286 from invoiceninja/revert-284-dotenv_improvements
Revert "got all the vars onto the dotenv file"
2021-02-11 16:04:19 +11:00
David Bomba
1caa8c7e70 Revert "got all the vars onto the dotenv file" 2021-02-11 16:04:11 +11:00
David Bomba
e35653fe59 Merge pull request #284 from danielgroen/dotenv_improvements
got all the vars onto the dotenv file
2021-02-09 22:48:47 +11:00
danielgroen
4d7cc8e464 got all the vars onto the dotenv file 2021-02-09 11:35:45 +01:00
David Bomba
f42fc93aa5 Merge branch 'master' into cleanup_supervisor 2021-02-03 09:35:50 +11:00
David Bomba
c6e122b81f Merge pull request #282 from turbo124/master
Remove redis queue worker from defaults
2021-02-03 09:32:29 +11:00
David Bomba
421a1f10e6 Remove redis queue worker from defaults 2021-02-03 09:31:14 +11:00
David Bomba
84db77cde8 Merge pull request #281 from turbo124/master
Improve supervisor configuration
2021-02-01 08:31:32 +11:00
David Bomba
e8706de11c Improve supervisor configuration 2021-02-01 08:30:50 +11:00
Valentin Day
f9f79ceb21 Cleanup supervisor conf 2021-01-28 11:11:24 +01:00
David Bomba
960a85d8a7 Merge pull request #278 from turbo124/master
fix for defaults of supervisor
2021-01-28 21:03:28 +11:00
David Bomba
6cd85f48cd fix for defaults of supervisor 2021-01-28 21:03:09 +11:00
David Bomba
eca3af3da5 Merge pull request #277 from turbo124/master
Adjustments for supervisor
2021-01-28 20:38:28 +11:00
David Bomba
b141cfe449 Adjustments for supervisor 2021-01-28 20:38:03 +11:00
36 changed files with 904 additions and 685 deletions

View File

@@ -7,20 +7,52 @@ assignees: ''
---
# Before creating an issue
<!--
*** Before creating an issue ***
*** Be sure the issue isn't yet reported here or dicussed on stackoverflow ***
-->
Be sure the issue isn't yet reported here or dicussed on stackoverflow
**Setup information**
<!-- Remove accordingly -->
docker run / docker-compose / Helm
# Logs
**Describe the bug**
A clear and concise description of what the bug is.
Did you check the logs ?
If any Error is present there please copy/paste it below
**To reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots/logs**
If applicable, add screenshots to help explain your problem.
<!-- Did you check the logs? If any Error is present there please copy/paste it below -->
```
Any Error that sucks
```
# Setup information
**Docker/Kubernetes/Helm**:
- Output of `docker version`:
```
(paste your output here)
```
<!-- Additional info if using helm on k8s, add the info below -->
<!-- Delete this block if not applicable -->
- Output of `helm version`:
```
(paste your output here)
```
- Output of `kubectl version`:
```
(paste your output here)
```
<!-- End Additional info if using helm on k8s -->
What version do you run?
Do you run docker-compose or a single Dockerfile ?
**Additional context**
Add any other context about the problem here.

6
.github/ct-install.yaml vendored Normal file
View File

@@ -0,0 +1,6 @@
chart-dirs:
- charts
chart-repos:
- bitnami=https://charts.bitnami.com/bitnami
check-version-increment: true
debug: false

9
.github/ct-lint.yaml vendored Normal file
View File

@@ -0,0 +1,9 @@
chart-dirs:
- charts
chart-repos:
- bitnami=https://charts.bitnami.com/bitnami
check-version-increment: true
debug: false
validate-chart-schema: true
validate-maintainers: true
validate-yaml: true

19
.github/workflows/auto-close-issues.yml vendored Normal file
View File

@@ -0,0 +1,19 @@
name: Close stale issues after 5 days
on:
schedule:
- cron: "0 0 * * *"
jobs:
close-issues:
runs-on: ubuntu-latest
permissions:
issues: write
steps:
- uses: actions/stale@v10
with:
days-before-issue-stale: 4
days-before-issue-close: 1
stale-issue-label: "stale"
close-issue-message: "This issue has been automatically closed due to inactivity for 5 days."
repo-token: ${{ secrets.GITHUB_TOKEN }}
exempt-issue-labels: "keep-open,triage,bug"

View File

@@ -0,0 +1,49 @@
name: Build Debian Container Image
on:
pull_request:
paths:
- ".github/**"
- "debian/**"
push:
paths:
- ".github/**"
- "debian/**"
env:
REGISTRY_IMAGE: invoiceninja/invoiceninja-debian
jobs:
build:
runs-on: ${{ startsWith(matrix.platform, 'linux/arm') && 'ubuntu-24.04-arm' || 'ubuntu-latest' }}
strategy:
fail-fast: false
matrix:
platform:
- linux/amd64
- linux/arm64
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY_IMAGE }}
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3
- name: Build
id: build
uses: docker/build-push-action@v6
with:
context: debian
platforms: ${{ matrix.platform }}
labels: ${{ steps.meta.outputs.labels }}
tags: ${{ env.REGISTRY_IMAGE }}
outputs: type=image,push-by-digest=true,name-canonical=true
cache-from: type=gha
cache-to: type=gha,mode=max

View File

@@ -1,35 +0,0 @@
name: Docker images
on:
release:
types: [published]
jobs:
deploy:
name: Build images
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Login to DockerHub
run: echo ${{ secrets.DOCKERHUB_PASSWORD }} | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin
- name: Get the latest tag
id: vars
run: echo ::set-output name=tag::$(echo ${GITHUB_REF:10})
- name: Build image from alpine - v5
run: make build-alpine-v5 TAG="${{steps.vars.outputs.tag}}"
- name: Push alpine-based image - v5
run: make push-alpine-v5 TAG="${{steps.vars.outputs.tag}}"
- name: Build image from alpine - v4
run: make build-alpine TAG="${{steps.vars.outputs.tag}}"
- name: Push alpine-based image - v4
run: make push-alpine TAG="${{steps.vars.outputs.tag}}"
- name: Logout from DockerHub
run: docker logout

View File

@@ -0,0 +1,166 @@
name: Publish Debian Container Images
on:
push:
tags-ignore:
- "invoiceninja-*"
env:
REGISTRY_IMAGE: invoiceninja/invoiceninja-debian
jobs:
version:
runs-on: ubuntu-latest
outputs:
version: ${{ steps.version.outputs.version }}
major: ${{ steps.version.outputs.major }}
minor: ${{ steps.version.outputs.minor }}
url: ${{ steps.version.outputs.url }}
steps:
- id: version
run: |
VERSION=edge
if [[ $GITHUB_REF == refs/tags/* ]]; then
VERSION=${GITHUB_REF#refs/tags/}
# Remove -o or -d suffix if present
VERSION=${VERSION%-*}
fi
MAJOR="$(echo "${VERSION}" | cut -d. -f1)"
MINOR="$(echo "${VERSION}" | cut -d. -f2)"
URL=https://github.com/invoiceninja/invoiceninja/releases/download/v${VERSION}/invoiceninja.tar.gz
# Debug output
echo "Current version: ${VERSION}"
echo "Version pattern check: $([[ $VERSION =~ ^5\.[0-9]{1,3}\.[0-9]{1,3}$ ]] && echo "matches" || echo "doesn't match")"
echo "version=${VERSION}" >> $GITHUB_OUTPUT
echo "major=${MAJOR}" >> $GITHUB_OUTPUT
echo "minor=${MINOR}" >> $GITHUB_OUTPUT
echo "url=${URL}" >> $GITHUB_OUTPUT
build:
runs-on: ${{ startsWith(matrix.platform, 'linux/arm') && 'ubuntu-24.04-arm' || 'ubuntu-latest' }}
needs:
- version
strategy:
fail-fast: false
matrix:
platform:
- linux/amd64
- linux/arm64
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Prepare
id: prep
run: |
platform=${{ matrix.platform }}
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY_IMAGE }}
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3
- name: Build and push by digest
id: build
uses: docker/build-push-action@v6
with:
context: debian
build-args: URL=${{ needs.version.outputs.url }}
platforms: ${{ matrix.platform }}
labels: ${{ steps.meta.outputs.labels }}
tags: ${{ env.REGISTRY_IMAGE }}
outputs: type=image,push-by-digest=true,name-canonical=true,push=${{ github.event_name != 'pull_request' }}
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Export digest
run: |
mkdir -p ${{ runner.temp }}/digests
digest="${{ steps.build.outputs.digest }}"
touch "${{ runner.temp }}/digests/${digest#sha256:}"
- name: Upload digest
uses: actions/upload-artifact@v4
with:
name: digests-${{ env.PLATFORM_PAIR }}
path: ${{ runner.temp }}/digests/*
if-no-files-found: error
retention-days: 1
merge:
runs-on: ubuntu-latest
needs:
- version
- build
steps:
- name: Download digests
uses: actions/download-artifact@v4
with:
path: ${{ runner.temp }}/digests
pattern: digests-*
merge-multiple: true
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY_IMAGE }}
tags: |
${{ needs.version.outputs.version }}
${{ needs.version.outputs.major }}
${{ needs.version.outputs.major }}.${{ needs.version.outputs.minor }}
latest
- name: Create manifest list and push
working-directory: ${{ runner.temp }}/digests
if: ${{ github.event_name != 'pull_request' }}
run: |
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
$(printf '${{ env.REGISTRY_IMAGE }}@sha256:%s ' *)
- name: Inspect image
if: ${{ github.event_name != 'pull_request' }}
run: |
docker buildx imagetools inspect ${{ env.REGISTRY_IMAGE }}:${{ steps.meta.outputs.version }}
Description:
if: ${{ github.event_name != 'pull_request' }}
runs-on: ubuntu-latest
needs:
- merge
steps:
- name: Checkout
uses: actions/checkout@v5
with:
sparse-checkout: "README.md"
- name: Docker Hub Description
uses: peter-evans/dockerhub-description@v4
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
repository: ${{ env.REGISTRY_IMAGE }}

34
.github/workflows/release-chart.yaml vendored Normal file
View File

@@ -0,0 +1,34 @@
name: Release Charts
on:
push:
branches:
- master
paths:
- "charts/**"
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Configure Git
run: |
git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
- 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.4.1
env:
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"

111
.github/workflows/test-charts.yaml vendored Normal file
View File

@@ -0,0 +1,111 @@
name: Lint and Test Charts
on:
pull_request:
paths:
- "charts/**"
jobs:
lint-chart:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Helm
uses: azure/setup-helm@v3
- uses: actions/setup-python@v4
with:
python-version: "3.9"
check-latest: true
- name: Set up chart-testing
uses: helm/chart-testing-action@v2.3.1
- name: Run chart-testing (list-changed)
id: list-changed
run: |
echo "::set-output name=changed::[\"$(ct list-changed --config .github/ct-lint.yaml)\"]"
- name: Parse list-changed
id: set-matrix
env:
CHANGED: ${{ steps.list-changed.outputs.changed }}
run: |
echo "::set-output name=matrix::$(echo "${CHANGED//\\n/\",\"}")"
- name: Run chart-testing (lint)
run: ct lint --config .github/ct-lint.yaml
kubeconform-chart:
runs-on: ubuntu-latest
needs:
- lint-chart
strategy:
matrix:
chart: ${{ fromJson(needs.lint-chart.outputs.matrix) }}
k8s:
- "1.25.5"
- "1.24.9"
- "1.23.15"
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Update Helm depdendencies
env:
CHART_DIR: ${{ matrix.chart }}
run: |
helm dependency update "${CHART_DIR}"
mkdir tmp
helm template "${CHART_DIR}" > tmp/combined.yaml
- uses: yokawasa/action-setup-kube-tools@v0.9.2
with:
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
- kubeconform-chart
strategy:
matrix:
k8s:
- v1.25.3
- v1.24.7
- v1.23.13
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Create kind ${{ matrix.k8s }} cluster
uses: helm/kind-action@v1.4.0
with:
node_image: kindest/node:${{ matrix.k8s }}
- uses: actions/setup-python@v4
with:
python-version: "3.9"
check-latest: true
- name: Set up chart-testing
uses: helm/chart-testing-action@v2.3.1
- name: Run chart-testing (install)
run: ct install --config .github/ct-install.yaml

14
.gitignore vendored Normal file
View File

@@ -0,0 +1,14 @@
# OS files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
# Helm
charts/**/charts/
# Compose filesystem
/docker

View File

@@ -1,58 +0,0 @@
ifndef TAG
$(error The TAG variable is missing.)
endif
# Docker Hub namespace
HUB_NAMESPACE="invoiceninja"
# Image name
IMAGE="invoiceninja"
# Check if v5 tag is passed, so that a v5 version should be built
IS_V5=$(shell echo ${TAG} | egrep ^5)
# Version of Invoice Ninja. As the tag can be something like 5.0.4-p1, the version is 5.0.4.
# This supports changes to the Dockerfiles with always the same Invoice Ninja version
VERSION=$(shell echo ${TAG} | sed "s/-.*//")
# Building docker images based on alpine.
# Assigned tags:
# - :alpine
# - :alpine-<RELEASE VERSION>
.PHONY: build-alpine
build-alpine:
ifeq ($(IS_V5),)
$(info Make: Building "$(VERSION)" tagged images from alpine.)
@docker build -t ${HUB_NAMESPACE}/${IMAGE}:alpine-${VERSION} --build-arg INVOICENINJA_VERSION=${VERSION} --file ./alpine/Dockerfile .
# Tag as alpine-4
@docker tag ${HUB_NAMESPACE}/${IMAGE}:alpine-${VERSION} ${HUB_NAMESPACE}/${IMAGE}:alpine-4
$(info Make: Done.)
endif
.PHONY: push-alpine
push-alpine:
ifeq ($(IS_V5),)
$(info Make: Pushing tagged images from alpine.)
@docker push ${HUB_NAMESPACE}/${IMAGE}:alpine-${VERSION}
@docker push ${HUB_NAMESPACE}/${IMAGE}:alpine-4
$(info Make: Done.)
endif
.PHONY: build-alpine-v5
build-alpine-v5:
ifneq ($(IS_V5),)
$(info Make: Building "$(VERSION)" tagged images from alpine.)
@docker build -t ${HUB_NAMESPACE}/${IMAGE}:${VERSION} --build-arg INVOICENINJA_VERSION=${VERSION} --file ./alpine/Dockerfile_v5 .
@docker tag ${HUB_NAMESPACE}/${IMAGE}:${VERSION} ${HUB_NAMESPACE}/${IMAGE}:5
@docker tag ${HUB_NAMESPACE}/${IMAGE}:${VERSION} ${HUB_NAMESPACE}/${IMAGE}:latest
$(info Make: Done.)
endif
.PHONY: push-alpine-v5
push-alpine-v5:
ifneq ($(IS_V5),)
$(info Make: Pushing tagged images from alpine.)
@docker push ${HUB_NAMESPACE}/${IMAGE}:${VERSION}
@docker push ${HUB_NAMESPACE}/${IMAGE}:5
@docker push ${HUB_NAMESPACE}/${IMAGE}:latest
endif

113
README.md
View File

@@ -1,75 +1,94 @@
![Docker images](https://github.com/invoiceninja/dockerfiles/workflows/Docker%20images/badge.svg)
[![Docker image, latest](https://img.shields.io/docker/image-size/invoiceninja/invoiceninja/latest?label=latest)](https://hub.docker.com/r/invoiceninja/invoiceninja)
[![Docker image, alpine](https://img.shields.io/docker/image-size/invoiceninja/invoiceninja/alpine?label=alpine)](https://hub.docker.com/r/invoiceninja/invoiceninja)
[![Docker Image Size](https://img.shields.io/docker/image-size/invoiceninja/invoiceninja-debian?label=debian)](https://hub.docker.com/r/invoiceninja/invoiceninja-debian)
[![Docker Pulls](https://img.shields.io/docker/pulls/invoiceninja/invoiceninja-debian)](https://hub.docker.com/r/invoiceninja/invoiceninja-debian)
[![Publish Status](https://github.com/invoiceninja/dockerfiles/actions/workflows/publish-image-debian.yaml/badge.svg)](https://github.com/invoiceninja/dockerfiles/actions/workflows/publish-image-debian.yaml)
[![Build Status](https://github.com/invoiceninja/dockerfiles/actions/workflows/build-image-debian.yaml/badge.svg)](https://github.com/invoiceninja/dockerfiles/actions/workflows/build-image-debian.yaml)
# Docker for [Invoice Ninja](https://www.invoiceninja.com/)
# Debian Docker for [Invoice Ninja](https://www.invoiceninja.com/)
:crown: **Features**
👑 **Features**
:lock: Automatic HTTPS (:heart: [Caddy](https://caddyserver.com/))
:fire: NGINX webserver support [NGINX](https://nginx.org/)
:hammer: Fully production-ready through docker-compose
:pencil: Adjustable to your needs via environment variable
NGINX webserver support [NGINX](https://nginx.org/)
Built-in Chrome for PDF generation and other features
Saxon XLST 2 engine
OPcache
Multi language support
## Quickstart V5 Launch
## Get started with Docker Compose
The dockerfile has been revamped to make is easier to get started, by default the base image selected in 5 which will pull in the latest v5 stable image.
This Debian-based image includes Chrome for enhanced PDF generation and other features. To get started:
```
git clone https://github.com/invoiceninja/dockerfiles.git
cd dockerfiles
```bash
git clone https://github.com/invoiceninja/dockerfiles.git -b debian
cd dockerfiles/debian
```
Instead of defining our environment variables inside our docker-compose.yml file we now define this in the ```env``` file, open this file up and insert your APP_URL and your APP_KEY
Instead of defining our environment variables inside our docker-compose.yml file we now define this in the `.env` file, open this file up and insert your `APP_URL`, `APP_KEY` and update the rest of the variables as required.
```
APP_URL=http://in.localhost:8003/
APP_KEY=<insert your generated key in here>
APP_DEBUG=true
MULTI_DB_ENABLED=false
DB_HOST1=db
DB_USERNAME1=ninja
DB_PASSWORD1=ninja
DB_DATABASE1=ninja
PHANTOMJS_PDF_GENERATION=false
REQUIRE_HTTPS=false
IN_USER_EMAIL=
IN_PASSWORD=
```
The ```APP_KEY``` can be generated by running
## Initial account setup
```
docker run --rm -it invoiceninja/invoiceninja php artisan key:generate --show
### Primary account setup
Prior to starting the container for the first time, open the .env file and update the IN_USER_EMAIL and IN_PASSWORD variables with your primary account.
This will take care of the initial account setup. You can later remove these .env variables.
> ⚠️ **Warning**
> If `IN_USER_EMAIL` and `IN_PASSWORD` are not set the default user email and password is "admin@example.com" and "changeme!" respectively.
After the container has completed the first startup you can delete these two environment variables.
### Generate a APP_KEY
The `APP_KEY` can be generated by running:
```bash
# If you haven't started the containers yet:
docker run --rm -it invoiceninja/invoiceninja-debian php artisan key:generate --show
# Or if your containers are already running:
docker compose exec app php artisan key:generate --show
```
Copy the entire string and insert in the env file at ```APP_KEY=base64....```
Copy the entire string and insert in the .env file at `APP_KEY=base64....`
To ensure folder permissions are correct when the container comes up for the first time it is important that you set the correct folder permissions on the ```docker``` folder.
**Note: For PDF generation using localhost, your domain name MUST end in .test for PDFs to generate correctly due to Chrome's DNS resolver.
From the terminal run
Start the container with:
```sudo chown -R 1500:1500 docker/app```
```bash
docker compose up -d
```
### Note for people running the container locally on their PC ###
**Note: When performing the setup, the Database host is ```mysql```
If you are running the container locally, then the container will need to resolve the host, to support this you will want to insert your LAN IP address and the host name in the hosts file located in ```config/hosts```
### Updating the Image
For example, lets say your APP_URL is ```http://in5.test:8000``` and your LAN IP is 192.168.0.124 the hosts file will have an entry looking like this:
To upgrade to a newer release image, update your docker-compose.yml first by running:
```bash
docker compose pull
docker compose up -d
```
It is recommended to perform a backup before updating.
### Support
If you discover a bug, please create an issue. For general queries, visit our [Forum](https://forum.invoiceninja.com/)
```192.168.0.124 in5.test```
**Please note that PDF generation using local host your domain name MUST end in .test for your PDFs to generate correctly, this is a DNS resolver issue with chromium.
All that is left to do now is bring up the container
``` docker-compose up -d```
**Note: When performing the setup, the Database host is ```db```
## 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/)
### Todo
This is a new image which should provide much better support for all users, however there are some items left to complete
- [ ] Backup script
- [ ] Integrate soketi server
- [ ] Add elastic search for site wide search

View File

@@ -1,73 +0,0 @@
ARG PHP_VERSION=7.2
ARG BAK_STORAGE_PATH=/var/www/app/docker-backup-storage/
ARG BAK_PUBLIC_PATH=/var/www/app/docker-backup-public/
FROM php:${PHP_VERSION}-fpm-alpine
LABEL maintainer="David Bomba <turbo124@gmail.com>"
#####
# SYSTEM REQUIREMENT
#####
ARG INVOICENINJA_VERSION
ARG BAK_STORAGE_PATH
ARG BAK_PUBLIC_PATH
ENV BAK_STORAGE_PATH $BAK_STORAGE_PATH
ENV BAK_PUBLIC_PATH $BAK_PUBLIC_PATH
WORKDIR /var/www/app
COPY entrypoint.sh /usr/local/bin/docker-entrypoint
RUN chmod +x /usr/local/bin/docker-entrypoint \
&& 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:1.1.41 /usr/bin/install-php-extensions /usr/local/bin/
RUN install-php-extensions \
gd \
gmp \
opcache \
pdo_mysql \
zip
COPY ./config/php/php.ini /usr/local/etc/php/conf.d/in-php.ini
# Separate user
ENV INVOICENINJA_USER=invoiceninja
RUN addgroup --gid=1500 -S "$INVOICENINJA_USER" && \
adduser --uid=1500 \
--disabled-password \
--gecos "" \
--home "$(pwd)" \
--ingroup "$INVOICENINJA_USER" \
--no-create-home \
"$INVOICENINJA_USER"; \
addgroup "$INVOICENINJA_USER" www-data; \
chown -R "$INVOICENINJA_USER":"$INVOICENINJA_USER" .
USER 1500
# Download and install IN
ENV INVOICENINJA_VERSION="${INVOICENINJA_VERSION}"
RUN curl -o /tmp/ninja.zip -L https://download.invoiceninja.com/ninja-v${INVOICENINJA_VERSION}.zip \
&& unzip -q /tmp/ninja.zip -d /tmp/ \
&& mv /tmp/ninja/* /var/www/app \
&& rm -rf /tmp/ninja* \
&& mv /var/www/app/storage $BAK_STORAGE_PATH \
&& mv /var/www/app/public $BAK_PUBLIC_PATH \
&& mkdir -p /var/www/app/public/logo /var/www/app/storage \
&& chmod -R 755 /var/www/app/storage \
&& rm -rf /var/www/app/docs /var/www/app/tests
# Override the environment settings from projects .env file
ENV LOG errorlog
ENV SELF_UPDATER_SOURCE ''
# Use to be mounted into nginx
VOLUME /var/www/app/public
ENTRYPOINT ["docker-entrypoint"]
CMD ["php-fpm"]

View File

@@ -1,105 +0,0 @@
ARG PHP_VERSION=7.4
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 node:lts-alpine as frontend
ARG INVOICENINJA_VERSION
ARG BAK_STORAGE_PATH
ARG BAK_PUBLIC_PATH
# Install dependencies
RUN set -eux; \
apk add --no-cache \
curl
# Download Invoice Ninja
RUN curl -o /tmp/ninja.tar.gz -L https://github.com/invoiceninja/invoiceninja/tarball/v$INVOICENINJA_VERSION \
&& 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
WORKDIR /var/www/app/
# Install node packages
RUN npm install --production \
&& npm run production \
&& rm -rf node_modules \
&& mv /var/www/app/storage $BAK_STORAGE_PATH \
&& mv /var/www/app/public $BAK_PUBLIC_PATH
# Prepare php image
FROM php:${PHP_VERSION}-fpm-alpine
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
LABEL maintainer="David Bomba <turbo124@gmail.com>"
WORKDIR /var/www/app
COPY --from=frontend /var/www/app /var/www/app
COPY entrypoint.sh /usr/local/bin/docker-entrypoint
RUN chmod +x /usr/local/bin/docker-entrypoint \
&& 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:1.1.41 /usr/bin/install-php-extensions /usr/local/bin/
RUN install-php-extensions \
bcmath \
exif \
gd \
gmp \
mysqli \
opcache \
pdo_mysql \
zip \
@composer
# Install chromium
RUN set -eux; \
apk add --no-cache \
supervisor \
mysql-client \
git \
chromium \
ttf-freefont
COPY ./config/php/php.ini /usr/local/etc/php/conf.d/in-php.ini
COPY ./config/supervisor/supervisord.conf /
## Separate user
ARG UID=1500
ENV INVOICENINJA_USER=invoiceninja
RUN addgroup --gid=$UID -S "$INVOICENINJA_USER" \
&& adduser --uid=$UID \
--disabled-password \
--gecos "" \
--home "$(pwd)" \
--ingroup "$INVOICENINJA_USER" \
--no-create-home \
"$INVOICENINJA_USER" \
&& addgroup "$INVOICENINJA_USER" www-data \
&& mkdir /var/log/supervisord /var/run/supervisord \
&& chown -R "$INVOICENINJA_USER":"$INVOICENINJA_USER" /var/www/app \
&& chown $INVOICENINJA_USER:www-data /var/log/supervisord /var/run/supervisord
USER $UID
RUN /usr/local/bin/composer install --no-dev --quiet
# Override the environment settings from projects .env file
ENV APP_ENV production
ENV LOG errorlog
ENV SNAPPDF_EXECUTABLE_PATH /usr/bin/chromium-browser
ENTRYPOINT ["docker-entrypoint"]
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]

View File

@@ -1,6 +0,0 @@
{$APP_URL} {
root * /var/www/app/public
php_fastcgi app:9000
encode zstd gzip
file_server browse
}

View File

@@ -1,16 +0,0 @@
#!/bin/sh
echo "Early Entry"
cleanup ()
{
kill -s SIGTERM $!
exit 0
}
trap cleanup SIGINT SIGTERM
while :
do
sleep 60 ; cd /var/www/app/ && php artisan schedule:run;
done

View File

@@ -1,3 +0,0 @@
#!/usr/bin/env sh
cd /var/www/app; php artisan schedule:run >> /dev/null 2>&1

View File

@@ -1 +0,0 @@
192.168.0.124 in5.test

View File

@@ -1,17 +0,0 @@
; How often (in seconds) to check file timestamps for changes to the shared
; memory storage allocation. ("1" means validate once per second, but only
; once per request. "0" means always validate)
;opcache.revalidate_freq=2
opcache.revalidate_freq=60
# http://symfony.com/doc/current/performance.html
; Duration of time, in seconds for which to cache realpath information for a given
; file or directory. For systems with rarely changing files, consider increasing this
; value.
; http://php.net/realpath-cache-ttl
;realpath_cache_ttl = 120
realpath_cache_ttl = 600
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 8M

View File

@@ -1,33 +0,0 @@
[supervisord]
process_name=%(program_name)s_%(process_num)02d
nodaemon=true
user=invoiceninja
pidfile=/var/run/supervisord/supervisord.pid
logfile=/dev/null ; nodaemon will cause logs to go to stdout
logfile_maxbytes=0
loglevel=error
[program:php-fpm]
process_name=%(program_name)s_%(process_num)02d
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=php-fpm
[program:scheduler]
process_name=%(program_name)s_%(process_num)02d
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=php artisan schedule:work
[program:queue-worker]
process_name=%(program_name)s_%(process_num)02d
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
numprocs=2
command=php artisan queue:work --sleep=3 --tries=1 --memory=1024 --timeout=3600 --daemon

62
debian/.env vendored Normal file
View File

@@ -0,0 +1,62 @@
# IN application vars
APP_URL=http://localhost:8012
APP_KEY=base64:RR++yx2rJ9kdxbdh3+AmbHLDQu+Q76i++co9Y8ybbno=
APP_ENV=production
APP_DEBUG=true
REQUIRE_HTTPS=false
PHANTOMJS_PDF_GENERATION=false
PDF_GENERATOR=snappdf
TRUSTED_PROXIES='*'
CACHE_DRIVER=redis
QUEUE_CONNECTION=redis
SESSION_DRIVER=redis
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
FILESYSTEM_DISK=debian_docker
# DB connection
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=ninja
DB_USERNAME=ninja
DB_PASSWORD=ninja
DB_ROOT_PASSWORD=ninjaAdm1nPassword
DB_CONNECTION=mysql
# Create initial user
# Default to these values if empty
IN_USER_EMAIL=admin@example.com
IN_PASSWORD=changeme!
# IN_USER_EMAIL=
# IN_PASSWORD=
# Mail options
MAIL_MAILER=log
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS='user@example.com'
MAIL_FROM_NAME='Self Hosted User'
# MySQL
MYSQL_ROOT_PASSWORD=ninjaAdm1nPassword
MYSQL_USER=ninja
MYSQL_PASSWORD=ninja
MYSQL_DATABASE=ninja
# GoCardless/Nordigen API key for banking integration
NORDIGEN_SECRET_ID=
NORDIGEN_SECRET_KEY=
IS_DOCKER=true
SCOUT_DRIVER=null
#SNAPPDF_CHROMIUM_PATH=/usr/bin/google-chrome-stable

90
debian/Dockerfile vendored Normal file
View File

@@ -0,0 +1,90 @@
ARG PHP=8.4
FROM php:${PHP}-fpm AS prepare-app
ARG URL=https://github.com/invoiceninja/invoiceninja/releases/latest/download/invoiceninja.tar.gz
ADD ${URL} /tmp/invoiceninja.tar.gz
RUN tar -xzf /tmp/invoiceninja.tar.gz -C /var/www/html \
&& ln -s /var/www/html/resources/views/react/index.blade.php /var/www/html/public/index.html \
&& php artisan storage:link \
# Workaround for application updates
&& mv /var/www/html/public /tmp/public
# ==================
# InvoiceNinja image
# ==================
FROM php:${PHP}-fpm
# PHP modules
ARG php_require="bcmath gd mbstring pdo_mysql zip"
ARG php_suggest="exif imagick intl pcntl saxon soap"
ARG php_extra="opcache"
# Install system dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
libfcgi-bin \
mariadb-client \
gpg \
supervisor \
# Unicode support for PDF
fonts-noto-cjk-extra \
fonts-wqy-microhei \
fonts-wqy-zenhei \
xfonts-wqy \
# Install google-chrome-stable(amd64)/chromium(arm64)
&& if [ "$(dpkg --print-architecture)" = "amd64" ]; then \
mkdir -p /etc/apt/keyrings \
&& curl -fsSL https://dl.google.com/linux/linux_signing_key.pub | \
gpg --dearmor -o /etc/apt/keyrings/google.gpg \
&& echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/google.gpg] https://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list \
&& apt-get update \
&& apt-get install -y --no-install-recommends google-chrome-stable; \
elif [ "$(dpkg --print-architecture)" = "arm64" ]; then \
apt-get install -y --no-install-recommends \
chromium; \
fi \
# Create config directory for chromium/google-chrome-stable
&& mkdir /var/www/.config \
&& chown www-data:www-data /var/www/.config \
# Cleanup
&& apt-get purge -y gpg \
&& apt-get autoremove -y \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Install PHP extensions
COPY --from=ghcr.io/mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/local/bin/
RUN install-php-extensions \
${php_require} \
${php_suggest} \
${php_extra}
# Configure PHP
RUN ln -s "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
COPY php/php.ini /usr/local/etc/php/conf.d/invoiceninja.ini
COPY php/php-fpm.conf /usr/local/etc/php-fpm.d/invoiceninja.conf
# Workaround: Disable SSL for mariadb-client for compatibility with MySQL
RUN echo "skip-ssl = true" >> /etc/mysql/mariadb.conf.d/50-client.cnf
# Setup supervisor
COPY supervisor/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
# Setup InvoiceNinja
COPY --from=prepare-app --chown=www-data:www-data /var/www/html /var/www/html
COPY --from=prepare-app --chown=www-data:www-data /tmp/public /tmp/public
# Add initialization script
COPY --chmod=0755 scripts/init.sh /usr/local/bin/init.sh
# Health check
HEALTHCHECK --start-period=100s \
CMD REMOTE_ADDR=127.0.0.1 REQUEST_URI=/health REQUEST_METHOD=GET SCRIPT_FILENAME=/var/www/html/public/index.php cgi-fcgi -bind -connect 127.0.0.1:9000 | grep '{"status":"ok","message":"API is healthy"}'
ENTRYPOINT ["/usr/local/bin/init.sh"]
CMD ["supervisord", "-c", "/etc/supervisor/supervisord.conf"]

72
debian/docker-compose.yml vendored Normal file
View File

@@ -0,0 +1,72 @@
services:
app:
build:
context: .
image: invoiceninja/invoiceninja-debian:${TAG:-latest}
restart: unless-stopped
env_file:
- ./.env
volumes:
# - ./php/php.ini:/usr/local/etc/php/conf.d/invoiceninja.ini:ro
# - ./php/php-fpm.conf:/usr/local/etc/php-fpm.d/invoiceninja.conf:ro
# - ./supervisor/supervisord.conf:/etc/supervisor/conf.d/supervisord.conf:ro
- app_public:/var/www/html/public
- app_storage:/var/www/html/storage
depends_on:
mysql:
condition: service_healthy
redis:
condition: service_healthy
nginx:
image: nginx:alpine
restart: unless-stopped
ports:
- "80:80"
volumes:
- ./nginx:/etc/nginx/conf.d:ro
- app_public:/var/www/html/public:ro
- app_storage:/var/www/html/storage:ro
depends_on:
app:
condition: service_healthy
mysql:
image: mysql:8
restart: unless-stopped
environment:
MYSQL_DATABASE: ${DB_DATABASE}
MYSQL_USER: ${DB_USERNAME}
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
volumes:
- mysql_data:/var/lib/mysql
healthcheck:
test:
[
"CMD",
"mysqladmin",
"ping",
"-h",
"localhost",
"-u${MYSQL_USER}",
"-p${MYSQL_PASSWORD}",
]
redis:
image: redis:alpine
restart: unless-stopped
volumes:
- redis_data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
volumes:
app_public:
driver: local
app_storage:
driver: local
mysql_data:
driver: local
redis_data:
driver: local

14
debian/nginx/invoiceninja.conf vendored Normal file
View File

@@ -0,0 +1,14 @@
# https://nginx.org/en/docs/http/ngx_http_core_module.html
client_max_body_size 10M;
client_body_buffer_size 10M;
server_tokens off;
# https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html
fastcgi_buffers 32 16K;
# https://nginx.org/en/docs/http/ngx_http_gzip_module.html
gzip on;
gzip_comp_level 2;
gzip_min_length 1M;
gzip_proxied any;
gzip_types *;

View File

@@ -1,25 +1,32 @@
# https://laravel.com/docs/master/deployment#nginx
server {
listen 80 default_server;
server_name _;
server_name _;
root /var/www/html/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
root /var/www/app/public/;
index index.php;
charset utf-8;
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; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
}
location ~ /\.(?!well-known).* {
deny all;
}
}

1
debian/php/php-fpm.conf vendored Normal file
View File

@@ -0,0 +1 @@
pm.max_children = 10

24
debian/php/php.ini vendored Normal file
View File

@@ -0,0 +1,24 @@
[core]
; https://www.php.net/manual/en/ini.core.php
post_max_size=10M
upload_max_filesize=10M
memory_limit=512M
[opcache]
; https://www.php.net/manual/en/opcache.installation.php#opcache.installation.recommended
opcache.enable_cli=1
[jit]
; https://wiki.php.net/rfc/jit_config_defaults
opcache.jit=tracing
opcache.jit_buffer_size=64M
[extra]
; http://symfony.com/doc/current/performance.html
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.preload=/var/www/html/preload.php
opcache.preload_user=www-data
opcache.validate_timestamps=0
realpath_cache_size = 4096K
realpath_cache_ttl = 600

71
debian/scripts/init.sh vendored Executable file
View File

@@ -0,0 +1,71 @@
#!/bin/sh -eu
# Set PDF generation browser path based on architecture
if [ "$(dpkg --print-architecture)" = "amd64" ]; then
export SNAPPDF_CHROMIUM_PATH=/usr/bin/google-chrome-stable
elif [ "$(dpkg --print-architecture)" = "arm64" ]; then
export SNAPPDF_CHROMIUM_PATH=/usr/bin/chromium
fi
if [ "$*" = 'supervisord -c /etc/supervisor/supervisord.conf' ]; then
# Check for required folders and create if needed
[ -d /var/www/html/public] || mkdir -p /var/www/html/public
[ -d /var/www/html/storage/app/public ] || mkdir -p /var/www/html/storage/app/public
[ -d /var/www/html/storage/framework/sessions ] || mkdir -p /var/www/html/storage/framework/sessions
[ -d /var/www/html/storage/framework/views ] || mkdir -p /var/www/html/storage/framework/views
[ -d /var/www/html/storage/framework/cache ] || mkdir -p /var/www/html/storage/framework/cache
# Workaround for application updates
if [ "$(ls -A /tmp/public)" ]; then
echo "Updating public folder..."
rm -rf /var/www/html/public/.htaccess \
/var/www/html/public/.well-known \
/var/www/html/public/*
cp -r /tmp/public/* \
/tmp/public/.htaccess \
/tmp/public/.well-known \
/var/www/html/public/ && \
rm -rf /tmp/public/*
fi
echo "Public Folder is up to date"
# Ensure owner, file and directory permissions are correct
chown -R www-data:www-data \
/var/www/html/public \
/var/www/html/storage
find /var/www/html/public \
/var/www/html/storage \
-type f -exec chmod 644 {} \;
find /var/www/html/public \
/var/www/html/storage \
-type d -exec chmod 755 {} \;
# Clear and cache config in production
if [ "$APP_ENV" = "production" ]; then
runuser -u www-data -- php artisan migrate --force
runuser -u www-data -- php artisan cache:clear # Clear after the migration
runuser -u www-data -- php artisan ninja:design-update
runuser -u www-data -- php artisan optimize
# If first IN run, it needs to be initialized
if [ "$(runuser -u www-data -- php artisan tinker --execute='echo Schema::hasTable("accounts") && !App\Models\Account::all()->first();')" = "1" ]; then
echo "Running initialization..."
runuser -u www-data -- php artisan db:seed --force
if [ -n "${IN_USER_EMAIL}" ] && [ -n "${IN_PASSWORD}" ]; then
runuser -u www-data -- php artisan ninja:create-account --email "${IN_USER_EMAIL}" --password "${IN_PASSWORD}"
else
echo "Initialization failed - Set IN_USER_EMAIL and IN_PASSWORD in .env"
exit 1
fi
fi
echo "Production setup completed"
fi
echo "Starting supervisord..."
fi
exec "$@"

39
debian/supervisor/supervisord.conf vendored Normal file
View File

@@ -0,0 +1,39 @@
[supervisord]
nodaemon=true
user=root
logfile=/dev/null
logfile_maxbytes=0
pidfile=/var/run/supervisord.pid
[program:php-fpm]
command=/usr/local/sbin/php-fpm -F
autostart=true
autorestart=true
priority=5
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
redirect_stderr=true
[program:queue-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/artisan queue:work --sleep=3 --tries=3 --max-time=3600 --verbose
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=www-data
numprocs=2
environment=HOME="/var/www"
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
redirect_stderr=true
stopwaitsecs=3600
[program:scheduler]
command=php /var/www/html/artisan schedule:work --verbose
autostart=true
autorestart=true
user=www-data
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
redirect_stderr=true

View File

@@ -1,101 +0,0 @@
version: '3.7'
services:
server:
image: nginx
restart: always
env_file: env
volumes:
# Vhost configuration
#- ./config/caddy/Caddyfile:/etc/caddy/Caddyfiledocker-com
- ./config/nginx/in-vhost.conf:/etc/nginx/conf.d/in-vhost.conf:ro
# you may use a bind-mounted host directory instead, so that it is harder to accidentally remove the volume and lose all your data!
- ./docker/app/public:/var/www/app/public:rw,delegated
- ./docker/app/storage:/var/www/app/storage:rw,delegated
depends_on:
- app
# Run webserver nginx on port 80
# Feel free to modify depending what port is already occupied
ports:
- "80:80"
#- "443:443"
networks:
- invoiceninja
extra_hosts:
- "in5.localhost:192.168.0.124 " #host and ip
app:
image: invoiceninja/invoiceninja:5
env_file: env
restart: always
volumes:
# you may use a bind-mounted host directory instead, so that it is harder to accidentally remove the volume and lose all your data!
- ./config/hosts:/etc/hosts:ro
- ./docker/app/public:/var/www/app/public:rw,delegated
- ./docker/app/storage:/var/www/app/storage:rw,delegated
depends_on:
- db
networks:
- invoiceninja
extra_hosts:
- "in5.localhost:192.168.0.124 " #host and ip
db:
image: mysql:5
ports:
- "3305:3306"
restart: always
environment:
- MYSQL_ROOT_PASSWORD=ninjaAdm1nPassword
- MYSQL_USER=ninja
- MYSQL_PASSWORD=ninja
- MYSQL_DATABASE=ninja
volumes:
# you may use a bind-mounted host directory instead, so that it is harder to accidentally remove the volume and lose all your data!
- ./docker/mysql/data:/var/lib/mysql:rw,delegated
networks:
- invoiceninja
extra_hosts:
- "in5.localhost:192.168.0.124 " #host and ip
# THIS IS ONLY A VALID CONFIGURATION FOR IN 5. DO NOT USE FOR IN 4.
# cron:
# image: invoiceninja/invoiceninja:5
# env_file: env
# volumes:
# - ./config/cron.sh:/usr/local/bin/cron.sh
# - ./config/hosts:/etc/hosts:ro
# - ./docker/app/public:/var/www/app/public:rw,delegated
# - ./docker/app/storage:/var/www/app/storage:rw,delegated
# command:
# - cron.sh
# depends_on:
# - app
# networks:
# - invoiceninja
# extra_hosts:
# - "in5.localhost:192.168.0.124 " #host and ip
# THIS IS ONLY A VALID CONFIGURATION FOR IN 4. DO NOT USE FOR IN 5.
# cron:
# image: invoiceninja/invoiceninja:alpine-4
# volumes:
# - ./docker/app/public:/var/www/app/public:rw,delegated
# - ./docker/app/storage:/var/www/app/storage:rw,delegated
# - ./docker/app/public/logo:/var/www/app/public/logo:rw,delegated
# entrypoint: |
# /bin/sh -c 'sh -s <<EOF
# trap "break;exit" SIGHUP SIGINT SIGTERM
# sleep 300s
# while /bin/true; do
# ./artisan ninja:send-invoices
# ./artisan ninja:send-reminders
# sleep 1d
# done
# EOF'
# networks:
# - invoiceninja
#
networks:
invoiceninja:

View File

@@ -1 +0,0 @@

View File

@@ -1 +0,0 @@

View File

@@ -1,109 +0,0 @@
#!/usr/bin/env sh
set -e
# logging functions
in_log() {
local type="$1"; shift
printf '%s [%s] [Entrypoint]: %s\n' "$(date -u '+%Y-%m-%dT%H:%M:%SZ')" "$type" "$*"
}
in_error() {
in_log ERROR "$@" >&2
exit 1
}
# Indirect expansion (ie) is not supported in bourne shell. That's why we are using this "magic" here.
ie_gv() {
eval "echo \$$1"
}
# usage: file_env VAR [DEFAULT]
# ie: file_env 'XYZ_DB_PASSWORD' 'example'
# (will allow for "$XYZ_DB_PASSWORD_FILE" to fill in the value of
# "$XYZ_DB_PASSWORD" from a file, especially for Docker's secrets feature)
file_env() {
local var="$1"
local fileVar="${var}_FILE"
local def="${2:-}"
if [ "$(ie_gv ${var})" != "" ] && [ "$(ie_gv ${fileVar})" != "" ]; then
in_error "Both $var and $fileVar are set (but are exclusive)"
fi
local val="$def"
if [ "$(ie_gv ${var})" != "" ]; then
val=$(ie_gv ${var})
elif [ "$(ie_gv ${fileVar})" != "" ]; then
val=`cat $(ie_gv ${fileVar})`
fi
export "$var"="$val"
unset "$fileVar"
}
# first arg is `-f` or `--some-option`
if [ "${1#-}" != "$1" ]; then
set -- php-fpm "$@"
fi
# create storage volume
if [ ! -d /var/www/app/storage ] && [ -d "$BAK_STORAGE_PATH" ]; then
mv "$BAK_STORAGE_PATH" /var/www/app/storage
elif [ -d "$BAK_STORAGE_PATH" ]; then
# copy missing folders in storage
IN_STORAGE_BACKUP="$(ls "$BAK_STORAGE_PATH")"
for path in $IN_STORAGE_BACKUP; do
if [ ! -e "/var/www/app/storage/$path" ]; then
cp -Rp "$BAK_STORAGE_PATH/$path" "/var/www/app/storage/"
fi
done
fi
rm -rf "$BAK_STORAGE_PATH"
# create public volume
if [ ! -d /var/www/app/public ] && [ -d "$BAK_PUBLIC_PATH" ]; then
mv "$BAK_PUBLIC_PATH" /var/www/app/public
elif [ ! -e /var/www/app/public/version ] || [ "$INVOICENINJA_VERSION" != "$(cat /var/www/app/public/version)" ]; then
# version mismatch, update all
cp -au "$BAK_PUBLIC_PATH/"* /var/www/app/public
echo "$INVOICENINJA_VERSION" > /var/www/app/public/version
elif [ ! -d /var/www/app/public/logo ] && [ -d "$BAK_PUBLIC_PATH/logo" ]; then
# missing logo folder only, copy folder
cp -a "$BAK_PUBLIC_PATH/logo" /var/www/app/public/logo
elif [ -d "$BAK_PUBLIC_PATH/logo" ]; then
# copy missing folders in logo
IN_LOGO_BACKUP="$(ls "$BAK_PUBLIC_PATH/logo")"
for path in $IN_LOGO_BACKUP; do
if [ ! -e "/var/www/app/public/logo/$path" ]; then
cp -a "$BAK_PUBLIC_PATH/logo/$path" "/var/www/app/public/logo/"
fi
done
fi
rm -rf "$BAK_PUBLIC_PATH"
# Set permission for web server to create/update files
chown -R "$INVOICENINJA_USER":www-data /var/www/app/storage /var/www/app/public /var/www/app/bootstrap
# Initialize values that might be stored in a file
file_env 'APP_KEY'
file_env 'API_SECRET'
file_env 'CLOUDFLARE_API_KEY'
file_env 'DB_USERNAME'
file_env 'DB_USERNAME1'
file_env 'DB_USERNAME2'
file_env 'DB_PASSWORD'
file_env 'DB_PASSWORD1'
file_env 'DB_PASSWORD2'
file_env 'MAIL_USERNAME'
file_env 'MAIL_PASSWORD'
file_env 'MAILGUN_SECRET'
file_env 'S3_KEY'
file_env 'S3_SECRET'
# Run Laravel stuff
php artisan config:cache
php artisan optimize
php artisan migrate --force
exec docker-php-entrypoint "$@"

19
env
View File

@@ -1,19 +0,0 @@
APP_URL=http://in.localhost:8003/
APP_KEY=<insert your generated key in here>
APP_DEBUG=true
MULTI_DB_ENABLED=false
DB_HOST1=db
DB_USERNAME1=ninja
DB_PASSWORD1=ninja
DB_DATABASE1=ninja
#this is a system variable please do not remove
IS_DOCKER=true
#V4 env vars
DB_STRICT=false
DB_HOST=db
DB_DATABASE=ninja
DB_USERNAME=ninja
DB_PASSWORD=ninja
APP_CIPHER=AES-256-CBC

View File

@@ -1,13 +0,0 @@
FROM invoiceninja/invoiceninja:5
USER root
RUN apk add --no-cache supervisor \
&& mkdir /var/log/supervisord /var/run/supervisord \
&& chown $INVOICENINJA_USER:www-data /var/log/supervisord /var/run/supervisord
COPY supervisord.conf /
USER $INVOICENINJA_USER
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]

View File

@@ -1,29 +0,0 @@
[supervisord]
nodaemon=true
user=invoiceninja
pidfile=/var/run/supervisord/supervisord.pid
logfile=/dev/null ; nodaemon will cause logs to go to stdout
logfile_maxbytes=0
loglevel=error
[program:php-fpm]
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=php-fpm
[program:scheduler]
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=php artisan schedule:work
[program:queue-worker]
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
numprocs=2
command=php artisan queue:work --sleep=3 --tries=1 --memory=1024 --timeout=3600 --daemon