mirror of
https://github.com/invoiceninja/dockerfiles.git
synced 2026-01-06 22:47:26 +01:00
Compare commits
27 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9d99120693 | ||
|
|
a5204ccb7d | ||
|
|
995d70ab60 | ||
|
|
11855e0701 | ||
|
|
42816b6282 | ||
|
|
2ad607fa2d | ||
|
|
2c25caf627 | ||
|
|
a2b64d2060 | ||
|
|
b58d4e1259 | ||
|
|
a7683ada33 | ||
|
|
3e8a6c72a7 | ||
|
|
3b0f7c463a | ||
|
|
c00d44380c | ||
|
|
cb4120fc54 | ||
|
|
f2c5a1f842 | ||
|
|
029bc57fac | ||
|
|
d60bf39950 | ||
|
|
31eb278f0d | ||
|
|
44b460bf13 | ||
|
|
7bae300fd2 | ||
|
|
3394694ffc | ||
|
|
99f280319c | ||
|
|
470a3d036d | ||
|
|
514ebb74c6 | ||
|
|
dc3b87140f | ||
|
|
c0afd971e1 | ||
|
|
677cc44a15 |
21
.github/workflows/auto-close-issues.yml
vendored
Normal file
21
.github/workflows/auto-close-issues.yml
vendored
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
name: Close stale issues after 5 days
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
# Run this workflow every day at midnight
|
||||||
|
- cron: '0 0 * * *'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
close-stale-issues:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Close stale issues
|
||||||
|
uses: actions/stale@v7
|
||||||
|
with:
|
||||||
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
stale-issue-message: "This issue has been automatically closed due to inactivity for 5 days."
|
||||||
|
days-before-stale: 4 # Number of days before marking an issue as stale
|
||||||
|
days-before-close: 1 # Number of days after being marked stale before closing
|
||||||
|
stale-label: "stale" # Label to add to stale issues
|
||||||
|
exempt-issue-labels: "keep-open,triage,bug" # Prevents issues with this label from being closed
|
||||||
|
only-issues: true # Only affects issues, not pull requests
|
||||||
2
.github/workflows/build-image-debian.yaml
vendored
2
.github/workflows/build-image-debian.yaml
vendored
@@ -12,7 +12,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
docker:
|
docker:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|||||||
2
.github/workflows/publish-image.yaml
vendored
2
.github/workflows/publish-image.yaml
vendored
@@ -7,7 +7,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
docker:
|
docker:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-22.04
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
|
|||||||
134
debian/Dockerfile
vendored
134
debian/Dockerfile
vendored
@@ -1,118 +1,88 @@
|
|||||||
FROM php:8.3-fpm AS base
|
ARG PHP=8.3
|
||||||
|
|
||||||
ARG php_require="bcmath gd pdo_mysql zip"
|
FROM php:${PHP}-fpm AS prepare-app
|
||||||
ARG php_suggest="exif imagick intl pcntl soap"
|
|
||||||
ARG php_suggest_debian="saxon-12.5.0"
|
USER www-data
|
||||||
|
|
||||||
|
RUN curl -s "https://api.github.com/repos/invoiceninja/invoiceninja/releases/latest" | \
|
||||||
|
grep -o '"browser_download_url": "[^"]*invoiceninja.tar.gz"' | \
|
||||||
|
cut -d '"' -f 4 | \
|
||||||
|
xargs curl -sL | \
|
||||||
|
tar -xz --strip-components=1 -C /var/www/html \
|
||||||
|
&& ln -s /var/www/html/resources/views/react/index.blade.php /var/www/html/public/index.html \
|
||||||
|
&& php -d opcache.preload='' 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 pdo_mysql zip mbstring"
|
||||||
|
ARG php_suggest="exif imagick intl pcntl soap saxon-12.5.0"
|
||||||
ARG php_extra="opcache"
|
ARG php_extra="opcache"
|
||||||
|
|
||||||
# Install system dependencies
|
# Install system dependencies
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
default-mysql-client \
|
mariadb-client \
|
||||||
gpg \
|
gpg \
|
||||||
gosu \
|
|
||||||
supervisor \
|
supervisor \
|
||||||
# Unicode support for PDF
|
# Unicode support for PDF
|
||||||
fonts-noto-cjk-extra \
|
fonts-noto-cjk-extra \
|
||||||
fonts-wqy-microhei \
|
fonts-wqy-microhei \
|
||||||
fonts-wqy-zenhei \
|
fonts-wqy-zenhei \
|
||||||
xfonts-wqy \
|
xfonts-wqy \
|
||||||
|
# Install google-chrome-stable(amd64)/chromium(arm64)
|
||||||
&& if [ "$(dpkg --print-architecture)" = "amd64" ]; then \
|
&& if [ "$(dpkg --print-architecture)" = "amd64" ]; then \
|
||||||
mkdir -p /etc/apt/keyrings \
|
mkdir -p /etc/apt/keyrings \
|
||||||
&& curl -fsSL https://dl.google.com/linux/linux_signing_key.pub | \
|
&& curl -fsSL https://dl.google.com/linux/linux_signing_key.pub | \
|
||||||
gpg --dearmor -o /etc/apt/keyrings/google.gpg \
|
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 \
|
&& 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 update \
|
||||||
&& apt-get install -y --no-install-recommends google-chrome-stable \
|
&& apt-get install -y --no-install-recommends google-chrome-stable; \
|
||||||
&& mkdir -p /var/www/.config/google-chrome \
|
|
||||||
&& chown -R www-data:www-data /var/www/.config/google-chrome; \
|
|
||||||
elif [ "$(dpkg --print-architecture)" = "arm64" ]; then \
|
elif [ "$(dpkg --print-architecture)" = "arm64" ]; then \
|
||||||
apt-get install -y --no-install-recommends \
|
apt-get install -y --no-install-recommends \
|
||||||
# Packages for chrome
|
chromium; \
|
||||||
fonts-liberation \
|
|
||||||
libasound2 \
|
|
||||||
libatk-bridge2.0-0 \
|
|
||||||
libatk1.0-0 \
|
|
||||||
libatspi2.0-0 \
|
|
||||||
libcups2 \
|
|
||||||
libdbus-1-3 \
|
|
||||||
libdrm2 \
|
|
||||||
libgbm1 \
|
|
||||||
libgtk-3-0 \
|
|
||||||
libnspr4 \
|
|
||||||
libnss3 \
|
|
||||||
libwayland-client0 \
|
|
||||||
libxcomposite1 \
|
|
||||||
libxdamage1 \
|
|
||||||
libxfixes3 \
|
|
||||||
libxkbcommon0 \
|
|
||||||
libxrandr2 \
|
|
||||||
xdg-utils \
|
|
||||||
&& mkdir -p /var/www/.chrome/chrome-profile \
|
|
||||||
&& chown -R www-data:www-data /var/www/.chrome/chrome-profile; \
|
|
||||||
fi \
|
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 purge -y gpg \
|
||||||
&& apt-get autoremove -y \
|
&& apt-get autoremove -y \
|
||||||
&& apt-get clean \
|
&& apt-get clean \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# Install Required PHP extensions.
|
# Install PHP extensions
|
||||||
RUN if [ "$(dpkg --print-architecture)" = "amd64" ]; then \
|
COPY --from=ghcr.io/mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/local/bin/
|
||||||
( curl -sSLf https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions -o - || echo 'return 1' ) | sh -s \
|
|
||||||
${php_require} \
|
RUN install-php-extensions \
|
||||||
${php_suggest} \
|
${php_require} \
|
||||||
${php_suggest_debian} \
|
${php_suggest} \
|
||||||
${php_extra} \
|
${php_extra}
|
||||||
@composer; \
|
|
||||||
elif [ "$(dpkg --print-architecture)" = "arm64" ]; then \
|
|
||||||
( curl -sSLf https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions -o - || echo 'return 1' ) | sh -s \
|
|
||||||
${php_require} \
|
|
||||||
${php_suggest} \
|
|
||||||
${php_extra} \
|
|
||||||
@composer; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Configure PHP
|
# Configure PHP
|
||||||
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
|
RUN ln -s "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
|
||||||
|
|
||||||
# Copy scripts
|
COPY php/php.ini /usr/local/etc/php/conf.d/invoiceninja.ini
|
||||||
COPY rootfs /
|
|
||||||
|
|
||||||
USER www-data
|
COPY php/php-fpm.conf /usr/local/etc/php-fpm.d/invoiceninja.conf
|
||||||
|
|
||||||
WORKDIR /var/www/html
|
|
||||||
|
|
||||||
# Setup InvoiceNinja
|
|
||||||
RUN curl -s "https://api.github.com/repos/invoiceninja/invoiceninja/releases/latest" | \
|
|
||||||
grep -o '"browser_download_url": "[^"]*invoiceninja.tar"' | \
|
|
||||||
cut -d '"' -f 4 | \
|
|
||||||
xargs curl -sL | \
|
|
||||||
tar -oxz -C /var/www/html \
|
|
||||||
&& cp /var/www/html/resources/views/react/index.blade.php /var/www/html/public/index.html \
|
|
||||||
# File permissions
|
|
||||||
&& find /var/www/html/ -type f -exec chmod 644 {} \; \
|
|
||||||
# Directory permissions
|
|
||||||
&& find /var/www/html/ -type d -exec chmod 755 {} \; \
|
|
||||||
# Install dependencies
|
|
||||||
&& composer install --no-dev --no-scripts --no-autoloader \
|
|
||||||
&& composer dump-autoload --optimize \
|
|
||||||
&& php artisan optimize \
|
|
||||||
&& php artisan storage:link \
|
|
||||||
# Workaround for application updates
|
|
||||||
&& mv /var/www/html/public /tmp/public
|
|
||||||
|
|
||||||
USER root
|
|
||||||
|
|
||||||
# Setup supervisor
|
# Setup supervisor
|
||||||
COPY supervisor/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
|
COPY supervisor/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
|
||||||
|
|
||||||
|
# Setup InvoiceNinja
|
||||||
|
COPY --from=prepare-app /var/www/html /var/www/html
|
||||||
|
COPY --from=prepare-app /tmp/public /tmp/public
|
||||||
|
|
||||||
# Add initialization script
|
# Add initialization script
|
||||||
COPY --chmod=0755 scripts/init.sh /usr/local/bin/init.sh
|
COPY --chmod=0755 scripts/init.sh /usr/local/bin/init.sh
|
||||||
|
|
||||||
# Health check
|
# Health check
|
||||||
HEALTHCHECK --interval=30s --timeout=5s --start-period=30s --retries=3 \
|
HEALTHCHECK --interval=30s --timeout=5s --start-period=30s --retries=3 \
|
||||||
CMD php -v || exit 1
|
CMD pgrep -f "php-fpm: master process"
|
||||||
|
|
||||||
EXPOSE 9000
|
|
||||||
|
|
||||||
ENTRYPOINT ["/usr/local/bin/init.sh"]
|
ENTRYPOINT ["/usr/local/bin/init.sh"]
|
||||||
CMD ["supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]
|
CMD ["supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]
|
||||||
|
|||||||
6
debian/docker-compose.yml
vendored
6
debian/docker-compose.yml
vendored
@@ -14,9 +14,9 @@ services:
|
|||||||
- ./.env
|
- ./.env
|
||||||
volumes:
|
volumes:
|
||||||
- ./.env:/var/www/html/.env
|
- ./.env:/var/www/html/.env
|
||||||
- ./php/php.ini:/usr/local/etc/php/conf.d/zzz-php.ini:ro
|
# - ./php/php.ini:/usr/local/etc/php/conf.d/invoiceninja.ini:ro
|
||||||
- ./php/php-fpm.conf:/usr/local/etc/php-fpm.d/zzz-php-fpm.conf:ro
|
# - ./php/php-fpm.conf:/usr/local/etc/php-fpm.d/invoiceninja.conf:ro
|
||||||
- ./supervisor/supervisord.conf:/etc/supervisor/conf.d/supervisord.conf:ro
|
# - ./supervisor/supervisord.conf:/etc/supervisor/conf.d/supervisord.conf:ro
|
||||||
- app_cache:/var/www/html/bootstrap/cache
|
- app_cache:/var/www/html/bootstrap/cache
|
||||||
- app_public:/var/www/html/public
|
- app_public:/var/www/html/public
|
||||||
- app_storage:/var/www/html/storage
|
- app_storage:/var/www/html/storage
|
||||||
|
|||||||
22
debian/php/php.ini
vendored
22
debian/php/php.ini
vendored
@@ -1,15 +1,23 @@
|
|||||||
[core]
|
[core]
|
||||||
# https://www.php.net/manual/en/ini.core.php
|
; https://www.php.net/manual/en/ini.core.php
|
||||||
post_max_size = 10M
|
post_max_size=10M
|
||||||
upload_max_filesize = 10M
|
upload_max_filesize=10M
|
||||||
|
|
||||||
[opcache]
|
[opcache]
|
||||||
# https://www.php.net/manual/en/opcache.installation.php#opcache.installation.recommended
|
; https://www.php.net/manual/en/opcache.installation.php#opcache.installation.recommended
|
||||||
opcache.enable_cli=1
|
opcache.enable_cli=1
|
||||||
opcache.max_accelerated_files=4000
|
|
||||||
opcache.revalidate_freq=60
|
|
||||||
|
|
||||||
[jit]
|
[jit]
|
||||||
# https://wiki.php.net/rfc/jit_config_defaults
|
; https://wiki.php.net/rfc/jit_config_defaults
|
||||||
opcache.jit=tracing
|
opcache.jit=tracing
|
||||||
opcache.jit_buffer_size=64M
|
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
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
php artisan db:seed --force
|
|
||||||
|
|
||||||
# Build up array of arguments...
|
|
||||||
if [ ! -z "${IN_USER_EMAIL}" ]; then
|
|
||||||
email="--email ${IN_USER_EMAIL}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -z "${IN_PASSWORD}" ]; then
|
|
||||||
password="--password ${IN_PASSWORD}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
php artisan ninja:create-account $email $password
|
|
||||||
55
debian/scripts/init.sh
vendored
55
debian/scripts/init.sh
vendored
@@ -1,33 +1,4 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh -eu
|
||||||
set -e
|
|
||||||
|
|
||||||
in_log() {
|
|
||||||
local type="$1"
|
|
||||||
shift
|
|
||||||
printf '%s [%s] [Entrypoint]: %s\n' "$(date -u '+%Y-%m-%dT%H:%M:%SZ')" "$type" "$*"
|
|
||||||
}
|
|
||||||
|
|
||||||
docker_process_init_files() {
|
|
||||||
echo
|
|
||||||
local f
|
|
||||||
for f; do
|
|
||||||
case "$f" in
|
|
||||||
*.sh)
|
|
||||||
# https://github.com/docker-library/postgres/issues/450#issuecomment-393167936
|
|
||||||
# https://github.com/docker-library/postgres/pull/452
|
|
||||||
if [ -x "$f" ]; then
|
|
||||||
in_log INFO "$0: running $f"
|
|
||||||
"$f"
|
|
||||||
else
|
|
||||||
in_log INFO "$0: sourcing $f"
|
|
||||||
. "$f"
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
*) in_log INFO "$0: ignoring $f" ;;
|
|
||||||
esac
|
|
||||||
echo
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ "$*" = 'supervisord -c /etc/supervisor/conf.d/supervisord.conf' ]; then
|
if [ "$*" = 'supervisord -c /etc/supervisor/conf.d/supervisord.conf' ]; then
|
||||||
# Workaround for application updates
|
# Workaround for application updates
|
||||||
@@ -56,23 +27,25 @@ if [ "$*" = 'supervisord -c /etc/supervisor/conf.d/supervisord.conf' ]; then
|
|||||||
|
|
||||||
# Clear and cache config in production
|
# Clear and cache config in production
|
||||||
if [ "$APP_ENV" = "production" ]; then
|
if [ "$APP_ENV" = "production" ]; then
|
||||||
gosu www-data php artisan optimize
|
runuser -u www-data -- php artisan optimize
|
||||||
gosu www-data php artisan package:discover
|
runuser -u www-data -- php artisan package:discover
|
||||||
gosu www-data php artisan migrate --force
|
runuser -u www-data -- php artisan migrate --force
|
||||||
|
|
||||||
# If first IN run, it needs to be initialized
|
# If first IN run, it needs to be initialized
|
||||||
echo "Checking initialization status..."
|
if [ "$(php -d opcache.preload='' artisan tinker --execute='echo Schema::hasTable("accounts") && !App\Models\Account::all()->first();')" = "1" ]; then
|
||||||
IN_INIT=$(php artisan tinker --execute='echo Schema::hasTable("accounts") && !App\Models\Account::all()->first();')
|
echo "Running initialization..."
|
||||||
echo "IN_INIT value: $IN_INIT"
|
|
||||||
|
|
||||||
if [ "$IN_INIT" = "1" ]; then
|
php artisan db:seed --force
|
||||||
echo "Running initialization scripts..."
|
|
||||||
docker_process_init_files /docker-entrypoint-init.d/*
|
if [ -n "${IN_USER_EMAIL}" ] && [ -n "${IN_PASSWORD}" ]; then
|
||||||
|
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
|
fi
|
||||||
|
|
||||||
echo "Production setup completed"
|
echo "Production setup completed"
|
||||||
echo "IN_INIT value: $IN_INIT"
|
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Starting supervisord..."
|
echo "Starting supervisord..."
|
||||||
|
|||||||
29
debian/supervisor/supervisord.conf
vendored
29
debian/supervisor/supervisord.conf
vendored
@@ -1,32 +1,25 @@
|
|||||||
[unix_http_server]
|
|
||||||
file=/var/run/supervisor.sock
|
|
||||||
chmod=0700
|
|
||||||
|
|
||||||
[supervisord]
|
[supervisord]
|
||||||
nodaemon=true
|
nodaemon=true
|
||||||
user=root
|
user=root
|
||||||
logfile=/var/log/supervisor/supervisord.log
|
logfile=/dev/null
|
||||||
|
logfile_maxbytes=0
|
||||||
pidfile=/var/run/supervisord.pid
|
pidfile=/var/run/supervisord.pid
|
||||||
|
|
||||||
[rpcinterface:supervisor]
|
[rpcinterface:supervisor]
|
||||||
supervisor.rpcinterface_factory=supervisor.rpcinterface:make_main_rpcinterface
|
supervisor.rpcinterface_factory=supervisor.rpcinterface:make_main_rpcinterface
|
||||||
|
|
||||||
[supervisorctl]
|
|
||||||
serverurl=unix:///var/run/supervisor.sock
|
|
||||||
|
|
||||||
[program:php-fpm]
|
[program:php-fpm]
|
||||||
command=/usr/local/sbin/php-fpm -F
|
command=/usr/local/sbin/php-fpm -F
|
||||||
autostart=true
|
autostart=true
|
||||||
autorestart=true
|
autorestart=true
|
||||||
priority=5
|
priority=5
|
||||||
stdout_logfile=/dev/stdout
|
stdout_logfile=/dev/fd/1
|
||||||
stdout_logfile_maxbytes=0
|
stdout_logfile_maxbytes=0
|
||||||
stderr_logfile=/dev/stderr
|
redirect_stderr=true
|
||||||
stderr_logfile_maxbytes=0
|
|
||||||
|
|
||||||
[program:queue-worker]
|
[program:queue-worker]
|
||||||
process_name=%(program_name)s_%(process_num)02d
|
process_name=%(program_name)s_%(process_num)02d
|
||||||
command=php /var/www/html/artisan queue:work --sleep=3 --tries=3 --max-time=3600
|
command=php /var/www/html/artisan queue:work --sleep=3 --tries=3 --max-time=3600 --verbose
|
||||||
autostart=true
|
autostart=true
|
||||||
autorestart=true
|
autorestart=true
|
||||||
stopasgroup=true
|
stopasgroup=true
|
||||||
@@ -34,16 +27,16 @@ killasgroup=true
|
|||||||
user=www-data
|
user=www-data
|
||||||
numprocs=2
|
numprocs=2
|
||||||
environment=HOME="/var/www"
|
environment=HOME="/var/www"
|
||||||
stdout_logfile=/var/log/php-worker.log
|
stdout_logfile=/dev/fd/1
|
||||||
stderr_logfile=/var/log/php-worker.err.log
|
stdout_logfile_maxbytes=0
|
||||||
|
redirect_stderr=true
|
||||||
stopwaitsecs=3600
|
stopwaitsecs=3600
|
||||||
|
|
||||||
[program:scheduler]
|
[program:scheduler]
|
||||||
command=/bin/sh -c "while [ true ]; do (php /var/www/html/artisan schedule:run --verbose --no-interaction &); sleep 60; done"
|
command=php /var/www/html/artisan schedule:work --verbose
|
||||||
autostart=true
|
autostart=true
|
||||||
autorestart=true
|
autorestart=true
|
||||||
user=www-data
|
user=www-data
|
||||||
stdout_logfile=/dev/stdout
|
stdout_logfile=/dev/fd/1
|
||||||
stdout_logfile_maxbytes=0
|
stdout_logfile_maxbytes=0
|
||||||
stderr_logfile=/dev/stderr
|
redirect_stderr=true
|
||||||
stderr_logfile_maxbytes=0
|
|
||||||
|
|||||||
Reference in New Issue
Block a user