Skip to content

Commit 9448d0f

Browse files
committed
feat: Add Invoice Ninja service configuration to Service model
1 parent 128d732 commit 9448d0f

File tree

3 files changed

+76
-9
lines changed

3 files changed

+76
-9
lines changed

app/Models/Service.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,27 @@ public function extraFields()
285285
foreach ($applications as $application) {
286286
$image = str($application->image)->before(':')->value();
287287
switch ($image) {
288+
case str($image)?->contains('invoiceninja'):
289+
$data = collect([]);
290+
$email = $this->environment_variables()->where('key', 'IN_USER_EMAIL')->first();
291+
$data = $data->merge([
292+
'Email' => [
293+
'key' => 'IN_USER_EMAIL',
294+
'value' => data_get($email, 'value'),
295+
'rules' => 'required|email',
296+
],
297+
]);
298+
$password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_INVOICENINJAUSER')->first();
299+
$data = $data->merge([
300+
'Password' => [
301+
'key' => 'IN_PASSWORD',
302+
'value' => data_get($password, 'value'),
303+
'rules' => 'required',
304+
'isPassword' => true,
305+
],
306+
]);
307+
$fields->put('Invoice Ninja', $data->toArray());
308+
break;
288309
case str($image)?->contains('argilla'):
289310
$data = collect([]);
290311
$api_key = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_APIKEY')->first();

templates/compose/invoice-ninja.yaml

Lines changed: 54 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
# ignore: true
21
# documentation: https://invoiceninja.github.io/selfhost.html
32
# slogan: The leading open-source invoicing platform
43
# tags: invoicing, billing, accounting, finance, self-hosted
@@ -11,18 +10,20 @@ services:
1110
- SERVICE_FQDN_INVOICENINJA
1211
- APP_ENV=${APP_ENV:-production}
1312
- APP_URL=${SERVICE_FQDN_INVOICENINJA}
14-
- APP_KEY=${SERVICE_REALBASE64_INVOICENINJA}
13+
- APP_KEY=base64:${SERVICE_REALBASE64_INVOICENINJA}
1514
- APP_DEBUG=${APP_DEBUG:-false}
1615
- REQUIRE_HTTPS=${REQUIRE_HTTPS:-false}
1716
- PHANTOMJS_PDF_GENERATION=${PHANTOMJS_PDF_GENERATION:-false}
1817
- PDF_GENERATOR=${PDF_GENERATOR:-snappdf}
1918
- TRUSTED_PROXIES=${TRUSTED_PROXIES:-*}
2019
- QUEUE_CONNECTION=${QUEUE_CONNECTION:-database}
20+
- IN_USER_EMAIL=${IN_USER_EMAIL:[email protected]}
21+
- IN_PASSWORD=${SERVICE_PASSWORD_INVOICENINJAUSER}
2122
- DB_HOST=${DB_HOST:-mariadb}
2223
- DB_PORT=${DB_PORT:-3306}
2324
- DB_DATABASE=${DB_DATABASE:-invoiceninja}
24-
- DB_USERNAME=$SERVICE_USER_INVOICENINJA
25-
- DB_PASSWORD=$SERVICE_PASSWORD_INVOICENINJA
25+
- DB_USERNAME=$SERVICE_USER_MARIADB
26+
- DB_PASSWORD=$SERVICE_PASSWORD_MARIADB
2627
healthcheck:
2728
test: ['CMD', 'echo', 'ok']
2829
interval: 5s
@@ -31,6 +32,52 @@ services:
3132
volumes:
3233
- invoice-ninja-public:/var/www/app/public
3334
- invoice-ninja-storage:/var/www/app/storage
35+
- type: bind
36+
source: ./supervisord.conf
37+
target: /etc/supervisord.conf
38+
content: |
39+
[supervisord]
40+
nodaemon=true
41+
pidfile=/tmp/supervisord.pid
42+
logfile=/dev/null ; nodaemon will cause logs to go to stdout
43+
logfile_maxbytes=0
44+
loglevel=info
45+
46+
[program:php-fpm]
47+
redirect_stderr=true
48+
stdout_logfile=/dev/stdout
49+
stdout_logfile_maxbytes=0
50+
stderr_logfile=/dev/stderr
51+
stderr_logfile_maxbytes=0
52+
command=php artisan serve --host 0.0.0.0 --port 9000
53+
54+
[program:scheduler]
55+
autorestart=true
56+
redirect_stderr=true
57+
stdout_logfile=/dev/stdout
58+
stdout_logfile_maxbytes=0
59+
stderr_logfile=/dev/stderr
60+
stderr_logfile_maxbytes=0
61+
command=php artisan schedule:work
62+
63+
[program:queue-worker]
64+
process_name=%(program_name)s_%(process_num)02d
65+
autorestart=true
66+
redirect_stderr=true
67+
stdout_logfile=/dev/stdout
68+
stdout_logfile_maxbytes=0
69+
stderr_logfile=/dev/stderr
70+
stderr_logfile_maxbytes=0
71+
numprocs=2
72+
command=php artisan queue:work --sleep=3 --tries=1 --memory=256 --timeout=3600
73+
74+
[eventlistener:shutdown]
75+
command=shutdown.sh
76+
events=PROCESS_STATE_STOPPED, PROCESS_STATE_EXITED, PROCESS_STATE_FATAL
77+
stdout_logfile=/dev/stdout
78+
stdout_logfile_maxbytes=0
79+
stderr_logfile=/dev/stderr
80+
stderr_logfile_maxbytes=0
3481
- type: bind
3582
source: ./php.ini
3683
target: /usr/local/etc/php/php.ini
@@ -52,7 +99,6 @@ services:
5299
; opcache.jit=1205
53100
; opcache.memory_consumption=1024M
54101
55-
56102
post_max_size = 60M
57103
upload_max_filesize = 50M
58104
memory_limit=512M
@@ -86,10 +132,10 @@ services:
86132
volumes:
87133
- mariadb-data:/var/lib/mysql
88134
environment:
89-
- MYSQL_ROOT_PASSWORD=$SERVICE_PASSWORD_ROOT
135+
- MYSQL_ROOT_PASSWORD=$SERVICE_PASSWORD_MARIADBROOT
90136
- MYSQL_DATABASE=${DB_DATABASE:-invoiceninja}
91-
- MYSQL_USER=$SERVICE_USER_INVOICENINJA
92-
- MYSQL_PASSWORD=$SERVICE_PASSWORD_INVOICENINJA
137+
- MYSQL_USER=$SERVICE_USER_MARIADB
138+
- MYSQL_PASSWORD=$SERVICE_PASSWORD_MARIADB
93139
healthcheck:
94140
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
95141
interval: 5s

templates/service-templates.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)