feat: PHP 增加 supervisor

This commit is contained in:
zhengkunwang223 2023-11-30 17:52:26 +08:00
parent 95069a81d4
commit 89cec863f7
67 changed files with 1834 additions and 15 deletions

View File

@ -17,6 +17,8 @@ RUN curl -o /usr/bin/composer https://mirrors.aliyun.com/composer/composer.phar
&& chmod +x /usr/bin/composer && chmod +x /usr/bin/composer
ENV COMPOSER_HOME=/tmp/composer ENV COMPOSER_HOME=/tmp/composer
RUN apk add supervisor \
&& mkdir -p /var/log/supervisor
# php image's www-data user uid & gid are 82, change them to 1000 (primary user) # php image's www-data user uid & gid are 82, change them to 1000 (primary user)
RUN usermod -u 1000 www-data && groupmod -g 1000 www-data RUN usermod -u 1000 www-data && groupmod -g 1000 www-data

View File

@ -13,6 +13,11 @@ services:
- ./log:/var/log/php - ./log:/var/log/php
- ./composer:/tmp/composer - ./composer:/tmp/composer
- ./extensions:/php/extensions - ./extensions:/php/extensions
- ./supervisor/supervisord.conf:/etc/supervisord.conf
- ./supervisor/supervisor.d:/etc/supervisor.d
- ./supervisor/log/supervisord.log:/var/log/supervisord.log
- ./supervisor/run.sh:/run.sh
command: sh /run.sh
ports: ports:
- 127.0.0.1:${PANEL_APP_PORT_HTTP}:9000 - 127.0.0.1:${PANEL_APP_PORT_HTTP}:9000
labels: labels:

View File

@ -0,0 +1,3 @@
#!/bin/sh
supervisord -c /etc/supervisord.conf

View File

@ -0,0 +1,155 @@
; Sample supervisor config file.
;
; For more information on the config file, please see:
; http://supervisord.org/configuration.html
;
; Notes:
; - Shell expansion ("~" or "$HOME") is not supported. Environment
; variables can be expanded using this syntax: "%(ENV_HOME)s".
; - Quotes around values are not supported, except in the case of
; the environment= options as shown below.
; - Comments must have a leading space: "a=b ;comment" not "a=b;comment".
; - Command will be truncated if it looks like a config file comment, e.g.
; "command=bash -c 'foo ; bar'" will truncate to "command=bash -c 'foo ".
[unix_http_server]
; the path to the socket file
file = /run/supervisor.sock
; chmod=0700 ; socket file mode (default 0700)
; chown=nobody:nogroup ; socket file uid:gid owner
; username=user ; default is no username (open server)
; password=123 ; default is no password (open server)
; inet (TCP) server disabled by default
[inet_http_server]
; ip_address:port specifier, *:port for all iface
port = 127.0.0.1:9002
; username=user ; default is no username (open server)
; password=123 ; default is no password (open server)
[supervisord]
; main log file; default $CWD/supervisord.log
logfile = /var/log/supervisord.log
; max main logfile bytes b4 rotation; default 50MB
logfile_maxbytes = 50MB
; # of main logfile backups; 0 means none, default 11
logfile_backups = 10
; log level; default info; others: debug,warn,trace
loglevel = info
; supervisord pidfile; default supervisord.pid
pidfile = /run/supervisord.pid
; start in foreground if true; default false
nodaemon = true
; min. avail startup file descriptors; default 1024
minfds = 1024
; min. avail process descriptors;default 200
minprocs = 200
; umask=022 ; process file creation umask; default 022
; user=supervisord ; setuid to this UNIX account at startup; recommended if root
; identifier=supervisor ; supervisord identifier, default is 'supervisor'
; directory=/tmp ; default is not to cd during start
; nocleanup=true ; don't clean up tempfiles at start; default false
; 'AUTO' child log dir, default $TEMP
childlogdir = /var/log/supervisor
; environment=KEY="value" ; key value pairs to add to environment
; strip_ansi=false ; strip ansi escape codes in logs; def. false
; The rpcinterface:supervisor section must remain in the config file for
; RPC (supervisorctl/web interface) to work. Additional interfaces may be
; added by defining them in separate [rpcinterface:x] sections.
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
; The supervisorctl section configures how supervisorctl will connect to
; supervisord. configure it match the settings in either the unix_http_server
; or inet_http_server section.
[supervisorctl]
; use a unix:// URL for a unix socket
serverurl = unix:///run/supervisor.sock
; serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
; username=chris ; should be same as in [*_http_server] if set
; password=123 ; should be same as in [*_http_server] if set
; prompt=mysupervisor ; cmd line prompt (default "supervisor")
; history_file=~/.sc_history ; use readline history if available
; The sample program section below shows all possible program subsection values.
; Create one or more 'real' program: sections to be able to control them under
; supervisor.
; [program:theprogramname]
; command=/bin/cat ; the program (relative uses PATH, can take args)
; process_name=%(program_name)s ; process_name expr (default %(program_name)s)
; numprocs=1 ; number of processes copies to start (def 1)
; directory=/tmp ; directory to cwd to before exec (def no cwd)
; umask=022 ; umask for process (default None)
; priority=999 ; the relative start priority (default 999)
; autostart=true ; start at supervisord start (default: true)
; startsecs=1 ; # of secs prog must stay up to be running (def. 1)
; startretries=3 ; max # of serial start failures when starting (default 3)
; autorestart=unexpected ; when to restart if exited after running (def: unexpected)
; exitcodes=0 ; 'expected' exit codes used with autorestart (default 0)
; stopsignal=QUIT ; signal used to kill process (default TERM)
; stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
; stopasgroup=false ; send stop signal to the UNIX process group (default false)
; killasgroup=false ; SIGKILL the UNIX process group (def false)
; user=chrism ; setuid to this UNIX account to run the program
; redirect_stderr=true ; redirect proc stderr to stdout (default false)
; stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
; stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
; stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
; stdout_events_enabled=false ; emit events on stdout writes (default false)
; stdout_syslog=false ; send stdout to syslog with process name (default false)
; stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
; stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stderr_logfile_backups=10 ; # of stderr logfile backups (0 means none, default 10)
; stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
; stderr_events_enabled=false ; emit events on stderr writes (default false)
; stderr_syslog=false ; send stderr to syslog with process name (default false)
; environment=A="1",B="2" ; process environment additions (def no adds)
; serverurl=AUTO ; override serverurl computation (childutils)
; The sample eventlistener section below shows all possible eventlistener
; subsection values. Create one or more 'real' eventlistener: sections to be
; able to handle event notifications sent by supervisord.
; [eventlistener:theeventlistenername]
; command=/bin/eventlistener ; the program (relative uses PATH, can take args)
; process_name=%(program_name)s ; process_name expr (default %(program_name)s)
; numprocs=1 ; number of processes copies to start (def 1)
; events=EVENT ; event notif. types to subscribe to (req'd)
; buffer_size=10 ; event buffer queue size (default 10)
; directory=/tmp ; directory to cwd to before exec (def no cwd)
; umask=022 ; umask for process (default None)
; priority=-1 ; the relative start priority (default -1)
; autostart=true ; start at supervisord start (default: true)
; startsecs=1 ; # of secs prog must stay up to be running (def. 1)
; startretries=3 ; max # of serial start failures when starting (default 3)
; autorestart=unexpected ; autorestart if exited after running (def: unexpected)
; exitcodes=0 ; 'expected' exit codes used with autorestart (default 0)
; stopsignal=QUIT ; signal used to kill process (default TERM)
; stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
; stopasgroup=false ; send stop signal to the UNIX process group (default false)
; killasgroup=false ; SIGKILL the UNIX process group (def false)
; user=chrism ; setuid to this UNIX account to run the program
; redirect_stderr=false ; redirect_stderr=true is not allowed for eventlisteners
; stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
; stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
; stdout_events_enabled=false ; emit events on stdout writes (default false)
; stdout_syslog=false ; send stdout to syslog with process name (default false)
; stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
; stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stderr_logfile_backups=10 ; # of stderr logfile backups (0 means none, default 10)
; stderr_events_enabled=false ; emit events on stderr writes (default false)
; stderr_syslog=false ; send stderr to syslog with process name (default false)
; environment=A="1",B="2" ; process environment additions
; serverurl=AUTO ; override serverurl computation (childutils)
; The sample group section below shows all possible group values. Create one
; or more 'real' group: sections to create "heterogeneous" process groups.
; [group:thegroupname]
; programs=progname1,progname2 ; each refers to 'x' in [program:x] definitions
; priority=999 ; the relative start priority (default 999)
; The [include] section can just contain the "files" setting. This
; setting can list multiple files (separated by whitespace or
; newlines). It can also contain wildcards. The filenames are
; interpreted as relative to this file. Included files *cannot*
; include files themselves.
[include]
files = /etc/supervisor.d/*.ini

View File

@ -16,7 +16,8 @@ WORKDIR /tmp/extensions
RUN chmod +x install.sh \ RUN chmod +x install.sh \
&& sh install.sh && sh install.sh
RUN apk add supervisor \
&& mkdir -p /var/log/supervisor
RUN apk --no-cache add tzdata \ RUN apk --no-cache add tzdata \
&& cp "/usr/share/zoneinfo/$TZ" /etc/localtime \ && cp "/usr/share/zoneinfo/$TZ" /etc/localtime \
@ -33,7 +34,6 @@ RUN curl -ksS https://getcomposer.org/installer | php -- --install-dir=/usr/bin
&& chmod +x /usr/bin/composer \ && chmod +x /usr/bin/composer \
&& rm -rf /tmp/composer-setup.php && rm -rf /tmp/composer-setup.php
# php image's www-data user uid & gid are 82, change them to 1000 (primary user) # php image's www-data user uid & gid are 82, change them to 1000 (primary user)
RUN apk --no-cache add shadow && usermod -u 1000 www-data && groupmod -g 1000 www-data RUN apk --no-cache add shadow && usermod -u 1000 www-data && groupmod -g 1000 www-data

View File

@ -13,6 +13,11 @@ services:
- ./log:/var/log/php - ./log:/var/log/php
- ./composer:/tmp/composer - ./composer:/tmp/composer
- ./extensions:/php/extensions - ./extensions:/php/extensions
- ./supervisor/supervisord.conf:/etc/supervisord.conf
- ./supervisor/supervisor.d:/etc/supervisor.d
- ./supervisor/log/supervisord.log:/var/log/supervisord.log
- ./supervisor/run.sh:/run.sh
command: sh /run.sh
ports: ports:
- 127.0.0.1:${PANEL_APP_PORT_HTTP}:9000 - 127.0.0.1:${PANEL_APP_PORT_HTTP}:9000
labels: labels:

View File

@ -0,0 +1,3 @@
#!/bin/sh
supervisord -c /etc/supervisord.conf

View File

@ -0,0 +1,155 @@
; Sample supervisor config file.
;
; For more information on the config file, please see:
; http://supervisord.org/configuration.html
;
; Notes:
; - Shell expansion ("~" or "$HOME") is not supported. Environment
; variables can be expanded using this syntax: "%(ENV_HOME)s".
; - Quotes around values are not supported, except in the case of
; the environment= options as shown below.
; - Comments must have a leading space: "a=b ;comment" not "a=b;comment".
; - Command will be truncated if it looks like a config file comment, e.g.
; "command=bash -c 'foo ; bar'" will truncate to "command=bash -c 'foo ".
[unix_http_server]
; the path to the socket file
file = /run/supervisor.sock
; chmod=0700 ; socket file mode (default 0700)
; chown=nobody:nogroup ; socket file uid:gid owner
; username=user ; default is no username (open server)
; password=123 ; default is no password (open server)
; inet (TCP) server disabled by default
[inet_http_server]
; ip_address:port specifier, *:port for all iface
port = 127.0.0.1:9002
; username=user ; default is no username (open server)
; password=123 ; default is no password (open server)
[supervisord]
; main log file; default $CWD/supervisord.log
logfile = /var/log/supervisord.log
; max main logfile bytes b4 rotation; default 50MB
logfile_maxbytes = 50MB
; # of main logfile backups; 0 means none, default 11
logfile_backups = 10
; log level; default info; others: debug,warn,trace
loglevel = info
; supervisord pidfile; default supervisord.pid
pidfile = /run/supervisord.pid
; start in foreground if true; default false
nodaemon = true
; min. avail startup file descriptors; default 1024
minfds = 1024
; min. avail process descriptors;default 200
minprocs = 200
; umask=022 ; process file creation umask; default 022
; user=supervisord ; setuid to this UNIX account at startup; recommended if root
; identifier=supervisor ; supervisord identifier, default is 'supervisor'
; directory=/tmp ; default is not to cd during start
; nocleanup=true ; don't clean up tempfiles at start; default false
; 'AUTO' child log dir, default $TEMP
childlogdir = /var/log/supervisor
; environment=KEY="value" ; key value pairs to add to environment
; strip_ansi=false ; strip ansi escape codes in logs; def. false
; The rpcinterface:supervisor section must remain in the config file for
; RPC (supervisorctl/web interface) to work. Additional interfaces may be
; added by defining them in separate [rpcinterface:x] sections.
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
; The supervisorctl section configures how supervisorctl will connect to
; supervisord. configure it match the settings in either the unix_http_server
; or inet_http_server section.
[supervisorctl]
; use a unix:// URL for a unix socket
serverurl = unix:///run/supervisor.sock
; serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
; username=chris ; should be same as in [*_http_server] if set
; password=123 ; should be same as in [*_http_server] if set
; prompt=mysupervisor ; cmd line prompt (default "supervisor")
; history_file=~/.sc_history ; use readline history if available
; The sample program section below shows all possible program subsection values.
; Create one or more 'real' program: sections to be able to control them under
; supervisor.
; [program:theprogramname]
; command=/bin/cat ; the program (relative uses PATH, can take args)
; process_name=%(program_name)s ; process_name expr (default %(program_name)s)
; numprocs=1 ; number of processes copies to start (def 1)
; directory=/tmp ; directory to cwd to before exec (def no cwd)
; umask=022 ; umask for process (default None)
; priority=999 ; the relative start priority (default 999)
; autostart=true ; start at supervisord start (default: true)
; startsecs=1 ; # of secs prog must stay up to be running (def. 1)
; startretries=3 ; max # of serial start failures when starting (default 3)
; autorestart=unexpected ; when to restart if exited after running (def: unexpected)
; exitcodes=0 ; 'expected' exit codes used with autorestart (default 0)
; stopsignal=QUIT ; signal used to kill process (default TERM)
; stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
; stopasgroup=false ; send stop signal to the UNIX process group (default false)
; killasgroup=false ; SIGKILL the UNIX process group (def false)
; user=chrism ; setuid to this UNIX account to run the program
; redirect_stderr=true ; redirect proc stderr to stdout (default false)
; stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
; stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
; stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
; stdout_events_enabled=false ; emit events on stdout writes (default false)
; stdout_syslog=false ; send stdout to syslog with process name (default false)
; stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
; stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stderr_logfile_backups=10 ; # of stderr logfile backups (0 means none, default 10)
; stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
; stderr_events_enabled=false ; emit events on stderr writes (default false)
; stderr_syslog=false ; send stderr to syslog with process name (default false)
; environment=A="1",B="2" ; process environment additions (def no adds)
; serverurl=AUTO ; override serverurl computation (childutils)
; The sample eventlistener section below shows all possible eventlistener
; subsection values. Create one or more 'real' eventlistener: sections to be
; able to handle event notifications sent by supervisord.
; [eventlistener:theeventlistenername]
; command=/bin/eventlistener ; the program (relative uses PATH, can take args)
; process_name=%(program_name)s ; process_name expr (default %(program_name)s)
; numprocs=1 ; number of processes copies to start (def 1)
; events=EVENT ; event notif. types to subscribe to (req'd)
; buffer_size=10 ; event buffer queue size (default 10)
; directory=/tmp ; directory to cwd to before exec (def no cwd)
; umask=022 ; umask for process (default None)
; priority=-1 ; the relative start priority (default -1)
; autostart=true ; start at supervisord start (default: true)
; startsecs=1 ; # of secs prog must stay up to be running (def. 1)
; startretries=3 ; max # of serial start failures when starting (default 3)
; autorestart=unexpected ; autorestart if exited after running (def: unexpected)
; exitcodes=0 ; 'expected' exit codes used with autorestart (default 0)
; stopsignal=QUIT ; signal used to kill process (default TERM)
; stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
; stopasgroup=false ; send stop signal to the UNIX process group (default false)
; killasgroup=false ; SIGKILL the UNIX process group (def false)
; user=chrism ; setuid to this UNIX account to run the program
; redirect_stderr=false ; redirect_stderr=true is not allowed for eventlisteners
; stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
; stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
; stdout_events_enabled=false ; emit events on stdout writes (default false)
; stdout_syslog=false ; send stdout to syslog with process name (default false)
; stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
; stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stderr_logfile_backups=10 ; # of stderr logfile backups (0 means none, default 10)
; stderr_events_enabled=false ; emit events on stderr writes (default false)
; stderr_syslog=false ; send stderr to syslog with process name (default false)
; environment=A="1",B="2" ; process environment additions
; serverurl=AUTO ; override serverurl computation (childutils)
; The sample group section below shows all possible group values. Create one
; or more 'real' group: sections to create "heterogeneous" process groups.
; [group:thegroupname]
; programs=progname1,progname2 ; each refers to 'x' in [program:x] definitions
; priority=999 ; the relative start priority (default 999)
; The [include] section can just contain the "files" setting. This
; setting can list multiple files (separated by whitespace or
; newlines). It can also contain wildcards. The filenames are
; interpreted as relative to this file. Included files *cannot*
; include files themselves.
[include]
files = /etc/supervisor.d/*.ini

View File

@ -21,6 +21,9 @@ RUN apk --no-cache add tzdata \
&& cp "/usr/share/zoneinfo/$TZ" /etc/localtime \ && cp "/usr/share/zoneinfo/$TZ" /etc/localtime \
&& echo "$TZ" > /etc/timezone && echo "$TZ" > /etc/timezone
RUN apk add supervisor \
&& mkdir -p /var/log/supervisor
# Fix: https://github.com/docker-library/php/issues/1121 # Fix: https://github.com/docker-library/php/issues/1121
RUN apk add --no-cache --repository http://${CONTAINER_PACKAGE_URL}/alpine/v3.13/community/ gnu-libiconv=1.15-r3 RUN apk add --no-cache --repository http://${CONTAINER_PACKAGE_URL}/alpine/v3.13/community/ gnu-libiconv=1.15-r3

View File

@ -13,6 +13,11 @@ services:
- ./log:/var/log/php - ./log:/var/log/php
- ./composer:/tmp/composer - ./composer:/tmp/composer
- ./extensions:/php/extensions - ./extensions:/php/extensions
- ./supervisor/supervisord.conf:/etc/supervisord.conf
- ./supervisor/supervisor.d:/etc/supervisor.d
- ./supervisor/log/supervisord.log:/var/log/supervisord.log
- ./supervisor/run.sh:/run.sh
command: sh /run.sh
ports: ports:
- 127.0.0.1:${PANEL_APP_PORT_HTTP}:9000 - 127.0.0.1:${PANEL_APP_PORT_HTTP}:9000
labels: labels:

View File

@ -0,0 +1,3 @@
#!/bin/sh
supervisord -c /etc/supervisord.conf

View File

@ -0,0 +1,155 @@
; Sample supervisor config file.
;
; For more information on the config file, please see:
; http://supervisord.org/configuration.html
;
; Notes:
; - Shell expansion ("~" or "$HOME") is not supported. Environment
; variables can be expanded using this syntax: "%(ENV_HOME)s".
; - Quotes around values are not supported, except in the case of
; the environment= options as shown below.
; - Comments must have a leading space: "a=b ;comment" not "a=b;comment".
; - Command will be truncated if it looks like a config file comment, e.g.
; "command=bash -c 'foo ; bar'" will truncate to "command=bash -c 'foo ".
[unix_http_server]
; the path to the socket file
file = /run/supervisor.sock
; chmod=0700 ; socket file mode (default 0700)
; chown=nobody:nogroup ; socket file uid:gid owner
; username=user ; default is no username (open server)
; password=123 ; default is no password (open server)
; inet (TCP) server disabled by default
[inet_http_server]
; ip_address:port specifier, *:port for all iface
port = 127.0.0.1:9002
; username=user ; default is no username (open server)
; password=123 ; default is no password (open server)
[supervisord]
; main log file; default $CWD/supervisord.log
logfile = /var/log/supervisord.log
; max main logfile bytes b4 rotation; default 50MB
logfile_maxbytes = 50MB
; # of main logfile backups; 0 means none, default 11
logfile_backups = 10
; log level; default info; others: debug,warn,trace
loglevel = info
; supervisord pidfile; default supervisord.pid
pidfile = /run/supervisord.pid
; start in foreground if true; default false
nodaemon = true
; min. avail startup file descriptors; default 1024
minfds = 1024
; min. avail process descriptors;default 200
minprocs = 200
; umask=022 ; process file creation umask; default 022
; user=supervisord ; setuid to this UNIX account at startup; recommended if root
; identifier=supervisor ; supervisord identifier, default is 'supervisor'
; directory=/tmp ; default is not to cd during start
; nocleanup=true ; don't clean up tempfiles at start; default false
; 'AUTO' child log dir, default $TEMP
childlogdir = /var/log/supervisor
; environment=KEY="value" ; key value pairs to add to environment
; strip_ansi=false ; strip ansi escape codes in logs; def. false
; The rpcinterface:supervisor section must remain in the config file for
; RPC (supervisorctl/web interface) to work. Additional interfaces may be
; added by defining them in separate [rpcinterface:x] sections.
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
; The supervisorctl section configures how supervisorctl will connect to
; supervisord. configure it match the settings in either the unix_http_server
; or inet_http_server section.
[supervisorctl]
; use a unix:// URL for a unix socket
serverurl = unix:///run/supervisor.sock
; serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
; username=chris ; should be same as in [*_http_server] if set
; password=123 ; should be same as in [*_http_server] if set
; prompt=mysupervisor ; cmd line prompt (default "supervisor")
; history_file=~/.sc_history ; use readline history if available
; The sample program section below shows all possible program subsection values.
; Create one or more 'real' program: sections to be able to control them under
; supervisor.
; [program:theprogramname]
; command=/bin/cat ; the program (relative uses PATH, can take args)
; process_name=%(program_name)s ; process_name expr (default %(program_name)s)
; numprocs=1 ; number of processes copies to start (def 1)
; directory=/tmp ; directory to cwd to before exec (def no cwd)
; umask=022 ; umask for process (default None)
; priority=999 ; the relative start priority (default 999)
; autostart=true ; start at supervisord start (default: true)
; startsecs=1 ; # of secs prog must stay up to be running (def. 1)
; startretries=3 ; max # of serial start failures when starting (default 3)
; autorestart=unexpected ; when to restart if exited after running (def: unexpected)
; exitcodes=0 ; 'expected' exit codes used with autorestart (default 0)
; stopsignal=QUIT ; signal used to kill process (default TERM)
; stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
; stopasgroup=false ; send stop signal to the UNIX process group (default false)
; killasgroup=false ; SIGKILL the UNIX process group (def false)
; user=chrism ; setuid to this UNIX account to run the program
; redirect_stderr=true ; redirect proc stderr to stdout (default false)
; stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
; stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
; stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
; stdout_events_enabled=false ; emit events on stdout writes (default false)
; stdout_syslog=false ; send stdout to syslog with process name (default false)
; stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
; stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stderr_logfile_backups=10 ; # of stderr logfile backups (0 means none, default 10)
; stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
; stderr_events_enabled=false ; emit events on stderr writes (default false)
; stderr_syslog=false ; send stderr to syslog with process name (default false)
; environment=A="1",B="2" ; process environment additions (def no adds)
; serverurl=AUTO ; override serverurl computation (childutils)
; The sample eventlistener section below shows all possible eventlistener
; subsection values. Create one or more 'real' eventlistener: sections to be
; able to handle event notifications sent by supervisord.
; [eventlistener:theeventlistenername]
; command=/bin/eventlistener ; the program (relative uses PATH, can take args)
; process_name=%(program_name)s ; process_name expr (default %(program_name)s)
; numprocs=1 ; number of processes copies to start (def 1)
; events=EVENT ; event notif. types to subscribe to (req'd)
; buffer_size=10 ; event buffer queue size (default 10)
; directory=/tmp ; directory to cwd to before exec (def no cwd)
; umask=022 ; umask for process (default None)
; priority=-1 ; the relative start priority (default -1)
; autostart=true ; start at supervisord start (default: true)
; startsecs=1 ; # of secs prog must stay up to be running (def. 1)
; startretries=3 ; max # of serial start failures when starting (default 3)
; autorestart=unexpected ; autorestart if exited after running (def: unexpected)
; exitcodes=0 ; 'expected' exit codes used with autorestart (default 0)
; stopsignal=QUIT ; signal used to kill process (default TERM)
; stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
; stopasgroup=false ; send stop signal to the UNIX process group (default false)
; killasgroup=false ; SIGKILL the UNIX process group (def false)
; user=chrism ; setuid to this UNIX account to run the program
; redirect_stderr=false ; redirect_stderr=true is not allowed for eventlisteners
; stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
; stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
; stdout_events_enabled=false ; emit events on stdout writes (default false)
; stdout_syslog=false ; send stdout to syslog with process name (default false)
; stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
; stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stderr_logfile_backups=10 ; # of stderr logfile backups (0 means none, default 10)
; stderr_events_enabled=false ; emit events on stderr writes (default false)
; stderr_syslog=false ; send stderr to syslog with process name (default false)
; environment=A="1",B="2" ; process environment additions
; serverurl=AUTO ; override serverurl computation (childutils)
; The sample group section below shows all possible group values. Create one
; or more 'real' group: sections to create "heterogeneous" process groups.
; [group:thegroupname]
; programs=progname1,progname2 ; each refers to 'x' in [program:x] definitions
; priority=999 ; the relative start priority (default 999)
; The [include] section can just contain the "files" setting. This
; setting can list multiple files (separated by whitespace or
; newlines). It can also contain wildcards. The filenames are
; interpreted as relative to this file. Included files *cannot*
; include files themselves.
[include]
files = /etc/supervisor.d/*.ini

View File

@ -21,6 +21,9 @@ RUN apk --no-cache add tzdata \
&& cp "/usr/share/zoneinfo/$TZ" /etc/localtime \ && cp "/usr/share/zoneinfo/$TZ" /etc/localtime \
&& echo "$TZ" > /etc/timezone && echo "$TZ" > /etc/timezone
RUN apk add supervisor \
&& mkdir -p /var/log/supervisor
# Fix: https://github.com/docker-library/php/issues/1121 # Fix: https://github.com/docker-library/php/issues/1121
RUN apk add --no-cache --repository http://${CONTAINER_PACKAGE_URL}/alpine/v3.13/community/ gnu-libiconv=1.15-r3 RUN apk add --no-cache --repository http://${CONTAINER_PACKAGE_URL}/alpine/v3.13/community/ gnu-libiconv=1.15-r3

View File

@ -13,6 +13,11 @@ services:
- ./log:/var/log/php - ./log:/var/log/php
- ./composer:/tmp/composer - ./composer:/tmp/composer
- ./extensions:/php/extensions - ./extensions:/php/extensions
- ./supervisor/supervisord.conf:/etc/supervisord.conf
- ./supervisor/supervisor.d:/etc/supervisor.d
- ./supervisor/log/supervisord.log:/var/log/supervisord.log
- ./supervisor/run.sh:/run.sh
command: sh /run.sh
ports: ports:
- 127.0.0.1:${PANEL_APP_PORT_HTTP}:9000 - 127.0.0.1:${PANEL_APP_PORT_HTTP}:9000
labels: labels:

View File

@ -0,0 +1,3 @@
#!/bin/sh
supervisord -c /etc/supervisord.conf

View File

@ -0,0 +1,155 @@
; Sample supervisor config file.
;
; For more information on the config file, please see:
; http://supervisord.org/configuration.html
;
; Notes:
; - Shell expansion ("~" or "$HOME") is not supported. Environment
; variables can be expanded using this syntax: "%(ENV_HOME)s".
; - Quotes around values are not supported, except in the case of
; the environment= options as shown below.
; - Comments must have a leading space: "a=b ;comment" not "a=b;comment".
; - Command will be truncated if it looks like a config file comment, e.g.
; "command=bash -c 'foo ; bar'" will truncate to "command=bash -c 'foo ".
[unix_http_server]
; the path to the socket file
file = /run/supervisor.sock
; chmod=0700 ; socket file mode (default 0700)
; chown=nobody:nogroup ; socket file uid:gid owner
; username=user ; default is no username (open server)
; password=123 ; default is no password (open server)
; inet (TCP) server disabled by default
[inet_http_server]
; ip_address:port specifier, *:port for all iface
port = 127.0.0.1:9002
; username=user ; default is no username (open server)
; password=123 ; default is no password (open server)
[supervisord]
; main log file; default $CWD/supervisord.log
logfile = /var/log/supervisord.log
; max main logfile bytes b4 rotation; default 50MB
logfile_maxbytes = 50MB
; # of main logfile backups; 0 means none, default 11
logfile_backups = 10
; log level; default info; others: debug,warn,trace
loglevel = info
; supervisord pidfile; default supervisord.pid
pidfile = /run/supervisord.pid
; start in foreground if true; default false
nodaemon = true
; min. avail startup file descriptors; default 1024
minfds = 1024
; min. avail process descriptors;default 200
minprocs = 200
; umask=022 ; process file creation umask; default 022
; user=supervisord ; setuid to this UNIX account at startup; recommended if root
; identifier=supervisor ; supervisord identifier, default is 'supervisor'
; directory=/tmp ; default is not to cd during start
; nocleanup=true ; don't clean up tempfiles at start; default false
; 'AUTO' child log dir, default $TEMP
childlogdir = /var/log/supervisor
; environment=KEY="value" ; key value pairs to add to environment
; strip_ansi=false ; strip ansi escape codes in logs; def. false
; The rpcinterface:supervisor section must remain in the config file for
; RPC (supervisorctl/web interface) to work. Additional interfaces may be
; added by defining them in separate [rpcinterface:x] sections.
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
; The supervisorctl section configures how supervisorctl will connect to
; supervisord. configure it match the settings in either the unix_http_server
; or inet_http_server section.
[supervisorctl]
; use a unix:// URL for a unix socket
serverurl = unix:///run/supervisor.sock
; serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
; username=chris ; should be same as in [*_http_server] if set
; password=123 ; should be same as in [*_http_server] if set
; prompt=mysupervisor ; cmd line prompt (default "supervisor")
; history_file=~/.sc_history ; use readline history if available
; The sample program section below shows all possible program subsection values.
; Create one or more 'real' program: sections to be able to control them under
; supervisor.
; [program:theprogramname]
; command=/bin/cat ; the program (relative uses PATH, can take args)
; process_name=%(program_name)s ; process_name expr (default %(program_name)s)
; numprocs=1 ; number of processes copies to start (def 1)
; directory=/tmp ; directory to cwd to before exec (def no cwd)
; umask=022 ; umask for process (default None)
; priority=999 ; the relative start priority (default 999)
; autostart=true ; start at supervisord start (default: true)
; startsecs=1 ; # of secs prog must stay up to be running (def. 1)
; startretries=3 ; max # of serial start failures when starting (default 3)
; autorestart=unexpected ; when to restart if exited after running (def: unexpected)
; exitcodes=0 ; 'expected' exit codes used with autorestart (default 0)
; stopsignal=QUIT ; signal used to kill process (default TERM)
; stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
; stopasgroup=false ; send stop signal to the UNIX process group (default false)
; killasgroup=false ; SIGKILL the UNIX process group (def false)
; user=chrism ; setuid to this UNIX account to run the program
; redirect_stderr=true ; redirect proc stderr to stdout (default false)
; stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
; stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
; stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
; stdout_events_enabled=false ; emit events on stdout writes (default false)
; stdout_syslog=false ; send stdout to syslog with process name (default false)
; stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
; stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stderr_logfile_backups=10 ; # of stderr logfile backups (0 means none, default 10)
; stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
; stderr_events_enabled=false ; emit events on stderr writes (default false)
; stderr_syslog=false ; send stderr to syslog with process name (default false)
; environment=A="1",B="2" ; process environment additions (def no adds)
; serverurl=AUTO ; override serverurl computation (childutils)
; The sample eventlistener section below shows all possible eventlistener
; subsection values. Create one or more 'real' eventlistener: sections to be
; able to handle event notifications sent by supervisord.
; [eventlistener:theeventlistenername]
; command=/bin/eventlistener ; the program (relative uses PATH, can take args)
; process_name=%(program_name)s ; process_name expr (default %(program_name)s)
; numprocs=1 ; number of processes copies to start (def 1)
; events=EVENT ; event notif. types to subscribe to (req'd)
; buffer_size=10 ; event buffer queue size (default 10)
; directory=/tmp ; directory to cwd to before exec (def no cwd)
; umask=022 ; umask for process (default None)
; priority=-1 ; the relative start priority (default -1)
; autostart=true ; start at supervisord start (default: true)
; startsecs=1 ; # of secs prog must stay up to be running (def. 1)
; startretries=3 ; max # of serial start failures when starting (default 3)
; autorestart=unexpected ; autorestart if exited after running (def: unexpected)
; exitcodes=0 ; 'expected' exit codes used with autorestart (default 0)
; stopsignal=QUIT ; signal used to kill process (default TERM)
; stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
; stopasgroup=false ; send stop signal to the UNIX process group (default false)
; killasgroup=false ; SIGKILL the UNIX process group (def false)
; user=chrism ; setuid to this UNIX account to run the program
; redirect_stderr=false ; redirect_stderr=true is not allowed for eventlisteners
; stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
; stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
; stdout_events_enabled=false ; emit events on stdout writes (default false)
; stdout_syslog=false ; send stdout to syslog with process name (default false)
; stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
; stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stderr_logfile_backups=10 ; # of stderr logfile backups (0 means none, default 10)
; stderr_events_enabled=false ; emit events on stderr writes (default false)
; stderr_syslog=false ; send stderr to syslog with process name (default false)
; environment=A="1",B="2" ; process environment additions
; serverurl=AUTO ; override serverurl computation (childutils)
; The sample group section below shows all possible group values. Create one
; or more 'real' group: sections to create "heterogeneous" process groups.
; [group:thegroupname]
; programs=progname1,progname2 ; each refers to 'x' in [program:x] definitions
; priority=999 ; the relative start priority (default 999)
; The [include] section can just contain the "files" setting. This
; setting can list multiple files (separated by whitespace or
; newlines). It can also contain wildcards. The filenames are
; interpreted as relative to this file. Included files *cannot*
; include files themselves.
[include]
files = /etc/supervisor.d/*.ini

View File

@ -21,6 +21,9 @@ RUN apk --no-cache add tzdata \
&& cp "/usr/share/zoneinfo/$TZ" /etc/localtime \ && cp "/usr/share/zoneinfo/$TZ" /etc/localtime \
&& echo "$TZ" > /etc/timezone && echo "$TZ" > /etc/timezone
RUN apk add supervisor \
&& mkdir -p /var/log/supervisor
# Fix: https://github.com/docker-library/php/issues/1121 # Fix: https://github.com/docker-library/php/issues/1121
RUN apk add --no-cache --repository http://${CONTAINER_PACKAGE_URL}/alpine/v3.13/community/ gnu-libiconv=1.15-r3 RUN apk add --no-cache --repository http://${CONTAINER_PACKAGE_URL}/alpine/v3.13/community/ gnu-libiconv=1.15-r3

View File

@ -13,6 +13,11 @@ services:
- ./log:/var/log/php - ./log:/var/log/php
- ./composer:/tmp/composer - ./composer:/tmp/composer
- ./extensions:/php/extensions - ./extensions:/php/extensions
- ./supervisor/supervisord.conf:/etc/supervisord.conf
- ./supervisor/supervisor.d:/etc/supervisor.d
- ./supervisor/log/supervisord.log:/var/log/supervisord.log
- ./supervisor/run.sh:/run.sh
command: sh /run.sh
ports: ports:
- 127.0.0.1:${PANEL_APP_PORT_HTTP}:9000 - 127.0.0.1:${PANEL_APP_PORT_HTTP}:9000
labels: labels:

View File

@ -0,0 +1,3 @@
#!/bin/sh
supervisord -c /etc/supervisord.conf

View File

@ -0,0 +1,155 @@
; Sample supervisor config file.
;
; For more information on the config file, please see:
; http://supervisord.org/configuration.html
;
; Notes:
; - Shell expansion ("~" or "$HOME") is not supported. Environment
; variables can be expanded using this syntax: "%(ENV_HOME)s".
; - Quotes around values are not supported, except in the case of
; the environment= options as shown below.
; - Comments must have a leading space: "a=b ;comment" not "a=b;comment".
; - Command will be truncated if it looks like a config file comment, e.g.
; "command=bash -c 'foo ; bar'" will truncate to "command=bash -c 'foo ".
[unix_http_server]
; the path to the socket file
file = /run/supervisor.sock
; chmod=0700 ; socket file mode (default 0700)
; chown=nobody:nogroup ; socket file uid:gid owner
; username=user ; default is no username (open server)
; password=123 ; default is no password (open server)
; inet (TCP) server disabled by default
[inet_http_server]
; ip_address:port specifier, *:port for all iface
port = 127.0.0.1:9002
; username=user ; default is no username (open server)
; password=123 ; default is no password (open server)
[supervisord]
; main log file; default $CWD/supervisord.log
logfile = /var/log/supervisord.log
; max main logfile bytes b4 rotation; default 50MB
logfile_maxbytes = 50MB
; # of main logfile backups; 0 means none, default 11
logfile_backups = 10
; log level; default info; others: debug,warn,trace
loglevel = info
; supervisord pidfile; default supervisord.pid
pidfile = /run/supervisord.pid
; start in foreground if true; default false
nodaemon = true
; min. avail startup file descriptors; default 1024
minfds = 1024
; min. avail process descriptors;default 200
minprocs = 200
; umask=022 ; process file creation umask; default 022
; user=supervisord ; setuid to this UNIX account at startup; recommended if root
; identifier=supervisor ; supervisord identifier, default is 'supervisor'
; directory=/tmp ; default is not to cd during start
; nocleanup=true ; don't clean up tempfiles at start; default false
; 'AUTO' child log dir, default $TEMP
childlogdir = /var/log/supervisor
; environment=KEY="value" ; key value pairs to add to environment
; strip_ansi=false ; strip ansi escape codes in logs; def. false
; The rpcinterface:supervisor section must remain in the config file for
; RPC (supervisorctl/web interface) to work. Additional interfaces may be
; added by defining them in separate [rpcinterface:x] sections.
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
; The supervisorctl section configures how supervisorctl will connect to
; supervisord. configure it match the settings in either the unix_http_server
; or inet_http_server section.
[supervisorctl]
; use a unix:// URL for a unix socket
serverurl = unix:///run/supervisor.sock
; serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
; username=chris ; should be same as in [*_http_server] if set
; password=123 ; should be same as in [*_http_server] if set
; prompt=mysupervisor ; cmd line prompt (default "supervisor")
; history_file=~/.sc_history ; use readline history if available
; The sample program section below shows all possible program subsection values.
; Create one or more 'real' program: sections to be able to control them under
; supervisor.
; [program:theprogramname]
; command=/bin/cat ; the program (relative uses PATH, can take args)
; process_name=%(program_name)s ; process_name expr (default %(program_name)s)
; numprocs=1 ; number of processes copies to start (def 1)
; directory=/tmp ; directory to cwd to before exec (def no cwd)
; umask=022 ; umask for process (default None)
; priority=999 ; the relative start priority (default 999)
; autostart=true ; start at supervisord start (default: true)
; startsecs=1 ; # of secs prog must stay up to be running (def. 1)
; startretries=3 ; max # of serial start failures when starting (default 3)
; autorestart=unexpected ; when to restart if exited after running (def: unexpected)
; exitcodes=0 ; 'expected' exit codes used with autorestart (default 0)
; stopsignal=QUIT ; signal used to kill process (default TERM)
; stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
; stopasgroup=false ; send stop signal to the UNIX process group (default false)
; killasgroup=false ; SIGKILL the UNIX process group (def false)
; user=chrism ; setuid to this UNIX account to run the program
; redirect_stderr=true ; redirect proc stderr to stdout (default false)
; stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
; stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
; stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
; stdout_events_enabled=false ; emit events on stdout writes (default false)
; stdout_syslog=false ; send stdout to syslog with process name (default false)
; stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
; stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stderr_logfile_backups=10 ; # of stderr logfile backups (0 means none, default 10)
; stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
; stderr_events_enabled=false ; emit events on stderr writes (default false)
; stderr_syslog=false ; send stderr to syslog with process name (default false)
; environment=A="1",B="2" ; process environment additions (def no adds)
; serverurl=AUTO ; override serverurl computation (childutils)
; The sample eventlistener section below shows all possible eventlistener
; subsection values. Create one or more 'real' eventlistener: sections to be
; able to handle event notifications sent by supervisord.
; [eventlistener:theeventlistenername]
; command=/bin/eventlistener ; the program (relative uses PATH, can take args)
; process_name=%(program_name)s ; process_name expr (default %(program_name)s)
; numprocs=1 ; number of processes copies to start (def 1)
; events=EVENT ; event notif. types to subscribe to (req'd)
; buffer_size=10 ; event buffer queue size (default 10)
; directory=/tmp ; directory to cwd to before exec (def no cwd)
; umask=022 ; umask for process (default None)
; priority=-1 ; the relative start priority (default -1)
; autostart=true ; start at supervisord start (default: true)
; startsecs=1 ; # of secs prog must stay up to be running (def. 1)
; startretries=3 ; max # of serial start failures when starting (default 3)
; autorestart=unexpected ; autorestart if exited after running (def: unexpected)
; exitcodes=0 ; 'expected' exit codes used with autorestart (default 0)
; stopsignal=QUIT ; signal used to kill process (default TERM)
; stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
; stopasgroup=false ; send stop signal to the UNIX process group (default false)
; killasgroup=false ; SIGKILL the UNIX process group (def false)
; user=chrism ; setuid to this UNIX account to run the program
; redirect_stderr=false ; redirect_stderr=true is not allowed for eventlisteners
; stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
; stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
; stdout_events_enabled=false ; emit events on stdout writes (default false)
; stdout_syslog=false ; send stdout to syslog with process name (default false)
; stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
; stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stderr_logfile_backups=10 ; # of stderr logfile backups (0 means none, default 10)
; stderr_events_enabled=false ; emit events on stderr writes (default false)
; stderr_syslog=false ; send stderr to syslog with process name (default false)
; environment=A="1",B="2" ; process environment additions
; serverurl=AUTO ; override serverurl computation (childutils)
; The sample group section below shows all possible group values. Create one
; or more 'real' group: sections to create "heterogeneous" process groups.
; [group:thegroupname]
; programs=progname1,progname2 ; each refers to 'x' in [program:x] definitions
; priority=999 ; the relative start priority (default 999)
; The [include] section can just contain the "files" setting. This
; setting can list multiple files (separated by whitespace or
; newlines). It can also contain wildcards. The filenames are
; interpreted as relative to this file. Included files *cannot*
; include files themselves.
[include]
files = /etc/supervisor.d/*.ini

View File

@ -21,6 +21,9 @@ RUN apk --no-cache add tzdata \
&& cp "/usr/share/zoneinfo/$TZ" /etc/localtime \ && cp "/usr/share/zoneinfo/$TZ" /etc/localtime \
&& echo "$TZ" > /etc/timezone && echo "$TZ" > /etc/timezone
RUN apk add supervisor \
&& mkdir -p /var/log/supervisor
# Fix: https://github.com/docker-library/php/issues/1121 # Fix: https://github.com/docker-library/php/issues/1121
RUN apk add --no-cache --repository http://${CONTAINER_PACKAGE_URL}/alpine/v3.13/community/ gnu-libiconv=1.15-r3 RUN apk add --no-cache --repository http://${CONTAINER_PACKAGE_URL}/alpine/v3.13/community/ gnu-libiconv=1.15-r3

View File

@ -13,6 +13,11 @@ services:
- ./log:/var/log/php - ./log:/var/log/php
- ./composer:/tmp/composer - ./composer:/tmp/composer
- ./extensions:/php/extensions - ./extensions:/php/extensions
- ./supervisor/supervisord.conf:/etc/supervisord.conf
- ./supervisor/supervisor.d:/etc/supervisor.d
- ./supervisor/log/supervisord.log:/var/log/supervisord.log
- ./supervisor/run.sh:/run.sh
command: sh /run.sh
ports: ports:
- 127.0.0.1:${PANEL_APP_PORT_HTTP}:9000 - 127.0.0.1:${PANEL_APP_PORT_HTTP}:9000
labels: labels:

View File

@ -0,0 +1,3 @@
#!/bin/sh
supervisord -c /etc/supervisord.conf

View File

@ -0,0 +1,155 @@
; Sample supervisor config file.
;
; For more information on the config file, please see:
; http://supervisord.org/configuration.html
;
; Notes:
; - Shell expansion ("~" or "$HOME") is not supported. Environment
; variables can be expanded using this syntax: "%(ENV_HOME)s".
; - Quotes around values are not supported, except in the case of
; the environment= options as shown below.
; - Comments must have a leading space: "a=b ;comment" not "a=b;comment".
; - Command will be truncated if it looks like a config file comment, e.g.
; "command=bash -c 'foo ; bar'" will truncate to "command=bash -c 'foo ".
[unix_http_server]
; the path to the socket file
file = /run/supervisor.sock
; chmod=0700 ; socket file mode (default 0700)
; chown=nobody:nogroup ; socket file uid:gid owner
; username=user ; default is no username (open server)
; password=123 ; default is no password (open server)
; inet (TCP) server disabled by default
[inet_http_server]
; ip_address:port specifier, *:port for all iface
port = 127.0.0.1:9002
; username=user ; default is no username (open server)
; password=123 ; default is no password (open server)
[supervisord]
; main log file; default $CWD/supervisord.log
logfile = /var/log/supervisord.log
; max main logfile bytes b4 rotation; default 50MB
logfile_maxbytes = 50MB
; # of main logfile backups; 0 means none, default 11
logfile_backups = 10
; log level; default info; others: debug,warn,trace
loglevel = info
; supervisord pidfile; default supervisord.pid
pidfile = /run/supervisord.pid
; start in foreground if true; default false
nodaemon = true
; min. avail startup file descriptors; default 1024
minfds = 1024
; min. avail process descriptors;default 200
minprocs = 200
; umask=022 ; process file creation umask; default 022
; user=supervisord ; setuid to this UNIX account at startup; recommended if root
; identifier=supervisor ; supervisord identifier, default is 'supervisor'
; directory=/tmp ; default is not to cd during start
; nocleanup=true ; don't clean up tempfiles at start; default false
; 'AUTO' child log dir, default $TEMP
childlogdir = /var/log/supervisor
; environment=KEY="value" ; key value pairs to add to environment
; strip_ansi=false ; strip ansi escape codes in logs; def. false
; The rpcinterface:supervisor section must remain in the config file for
; RPC (supervisorctl/web interface) to work. Additional interfaces may be
; added by defining them in separate [rpcinterface:x] sections.
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
; The supervisorctl section configures how supervisorctl will connect to
; supervisord. configure it match the settings in either the unix_http_server
; or inet_http_server section.
[supervisorctl]
; use a unix:// URL for a unix socket
serverurl = unix:///run/supervisor.sock
; serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
; username=chris ; should be same as in [*_http_server] if set
; password=123 ; should be same as in [*_http_server] if set
; prompt=mysupervisor ; cmd line prompt (default "supervisor")
; history_file=~/.sc_history ; use readline history if available
; The sample program section below shows all possible program subsection values.
; Create one or more 'real' program: sections to be able to control them under
; supervisor.
; [program:theprogramname]
; command=/bin/cat ; the program (relative uses PATH, can take args)
; process_name=%(program_name)s ; process_name expr (default %(program_name)s)
; numprocs=1 ; number of processes copies to start (def 1)
; directory=/tmp ; directory to cwd to before exec (def no cwd)
; umask=022 ; umask for process (default None)
; priority=999 ; the relative start priority (default 999)
; autostart=true ; start at supervisord start (default: true)
; startsecs=1 ; # of secs prog must stay up to be running (def. 1)
; startretries=3 ; max # of serial start failures when starting (default 3)
; autorestart=unexpected ; when to restart if exited after running (def: unexpected)
; exitcodes=0 ; 'expected' exit codes used with autorestart (default 0)
; stopsignal=QUIT ; signal used to kill process (default TERM)
; stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
; stopasgroup=false ; send stop signal to the UNIX process group (default false)
; killasgroup=false ; SIGKILL the UNIX process group (def false)
; user=chrism ; setuid to this UNIX account to run the program
; redirect_stderr=true ; redirect proc stderr to stdout (default false)
; stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
; stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
; stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
; stdout_events_enabled=false ; emit events on stdout writes (default false)
; stdout_syslog=false ; send stdout to syslog with process name (default false)
; stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
; stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stderr_logfile_backups=10 ; # of stderr logfile backups (0 means none, default 10)
; stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
; stderr_events_enabled=false ; emit events on stderr writes (default false)
; stderr_syslog=false ; send stderr to syslog with process name (default false)
; environment=A="1",B="2" ; process environment additions (def no adds)
; serverurl=AUTO ; override serverurl computation (childutils)
; The sample eventlistener section below shows all possible eventlistener
; subsection values. Create one or more 'real' eventlistener: sections to be
; able to handle event notifications sent by supervisord.
; [eventlistener:theeventlistenername]
; command=/bin/eventlistener ; the program (relative uses PATH, can take args)
; process_name=%(program_name)s ; process_name expr (default %(program_name)s)
; numprocs=1 ; number of processes copies to start (def 1)
; events=EVENT ; event notif. types to subscribe to (req'd)
; buffer_size=10 ; event buffer queue size (default 10)
; directory=/tmp ; directory to cwd to before exec (def no cwd)
; umask=022 ; umask for process (default None)
; priority=-1 ; the relative start priority (default -1)
; autostart=true ; start at supervisord start (default: true)
; startsecs=1 ; # of secs prog must stay up to be running (def. 1)
; startretries=3 ; max # of serial start failures when starting (default 3)
; autorestart=unexpected ; autorestart if exited after running (def: unexpected)
; exitcodes=0 ; 'expected' exit codes used with autorestart (default 0)
; stopsignal=QUIT ; signal used to kill process (default TERM)
; stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
; stopasgroup=false ; send stop signal to the UNIX process group (default false)
; killasgroup=false ; SIGKILL the UNIX process group (def false)
; user=chrism ; setuid to this UNIX account to run the program
; redirect_stderr=false ; redirect_stderr=true is not allowed for eventlisteners
; stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
; stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
; stdout_events_enabled=false ; emit events on stdout writes (default false)
; stdout_syslog=false ; send stdout to syslog with process name (default false)
; stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
; stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stderr_logfile_backups=10 ; # of stderr logfile backups (0 means none, default 10)
; stderr_events_enabled=false ; emit events on stderr writes (default false)
; stderr_syslog=false ; send stderr to syslog with process name (default false)
; environment=A="1",B="2" ; process environment additions
; serverurl=AUTO ; override serverurl computation (childutils)
; The sample group section below shows all possible group values. Create one
; or more 'real' group: sections to create "heterogeneous" process groups.
; [group:thegroupname]
; programs=progname1,progname2 ; each refers to 'x' in [program:x] definitions
; priority=999 ; the relative start priority (default 999)
; The [include] section can just contain the "files" setting. This
; setting can list multiple files (separated by whitespace or
; newlines). It can also contain wildcards. The filenames are
; interpreted as relative to this file. Included files *cannot*
; include files themselves.
[include]
files = /etc/supervisor.d/*.ini

View File

@ -21,6 +21,9 @@ RUN apk --no-cache add tzdata \
&& cp "/usr/share/zoneinfo/$TZ" /etc/localtime \ && cp "/usr/share/zoneinfo/$TZ" /etc/localtime \
&& echo "$TZ" > /etc/timezone && echo "$TZ" > /etc/timezone
RUN apk add supervisor \
&& mkdir -p /var/log/supervisor
# Fix: https://github.com/docker-library/php/issues/1121 # Fix: https://github.com/docker-library/php/issues/1121
RUN apk add --no-cache --repository http://${CONTAINER_PACKAGE_URL}/alpine/v3.13/community/ gnu-libiconv=1.15-r3 RUN apk add --no-cache --repository http://${CONTAINER_PACKAGE_URL}/alpine/v3.13/community/ gnu-libiconv=1.15-r3

View File

@ -13,6 +13,11 @@ services:
- ./log:/var/log/php - ./log:/var/log/php
- ./composer:/tmp/composer - ./composer:/tmp/composer
- ./extensions:/php/extensions - ./extensions:/php/extensions
- ./supervisor/supervisord.conf:/etc/supervisord.conf
- ./supervisor/supervisor.d:/etc/supervisor.d
- ./supervisor/log/supervisord.log:/var/log/supervisord.log
- ./supervisor/run.sh:/run.sh
command: sh /run.sh
ports: ports:
- 127.0.0.1:${PANEL_APP_PORT_HTTP}:9000 - 127.0.0.1:${PANEL_APP_PORT_HTTP}:9000
labels: labels:

View File

@ -0,0 +1,3 @@
#!/bin/sh
supervisord -c /etc/supervisord.conf

View File

@ -0,0 +1,155 @@
; Sample supervisor config file.
;
; For more information on the config file, please see:
; http://supervisord.org/configuration.html
;
; Notes:
; - Shell expansion ("~" or "$HOME") is not supported. Environment
; variables can be expanded using this syntax: "%(ENV_HOME)s".
; - Quotes around values are not supported, except in the case of
; the environment= options as shown below.
; - Comments must have a leading space: "a=b ;comment" not "a=b;comment".
; - Command will be truncated if it looks like a config file comment, e.g.
; "command=bash -c 'foo ; bar'" will truncate to "command=bash -c 'foo ".
[unix_http_server]
; the path to the socket file
file = /run/supervisor.sock
; chmod=0700 ; socket file mode (default 0700)
; chown=nobody:nogroup ; socket file uid:gid owner
; username=user ; default is no username (open server)
; password=123 ; default is no password (open server)
; inet (TCP) server disabled by default
[inet_http_server]
; ip_address:port specifier, *:port for all iface
port = 127.0.0.1:9002
; username=user ; default is no username (open server)
; password=123 ; default is no password (open server)
[supervisord]
; main log file; default $CWD/supervisord.log
logfile = /var/log/supervisord.log
; max main logfile bytes b4 rotation; default 50MB
logfile_maxbytes = 50MB
; # of main logfile backups; 0 means none, default 11
logfile_backups = 10
; log level; default info; others: debug,warn,trace
loglevel = info
; supervisord pidfile; default supervisord.pid
pidfile = /run/supervisord.pid
; start in foreground if true; default false
nodaemon = true
; min. avail startup file descriptors; default 1024
minfds = 1024
; min. avail process descriptors;default 200
minprocs = 200
; umask=022 ; process file creation umask; default 022
; user=supervisord ; setuid to this UNIX account at startup; recommended if root
; identifier=supervisor ; supervisord identifier, default is 'supervisor'
; directory=/tmp ; default is not to cd during start
; nocleanup=true ; don't clean up tempfiles at start; default false
; 'AUTO' child log dir, default $TEMP
childlogdir = /var/log/supervisor
; environment=KEY="value" ; key value pairs to add to environment
; strip_ansi=false ; strip ansi escape codes in logs; def. false
; The rpcinterface:supervisor section must remain in the config file for
; RPC (supervisorctl/web interface) to work. Additional interfaces may be
; added by defining them in separate [rpcinterface:x] sections.
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
; The supervisorctl section configures how supervisorctl will connect to
; supervisord. configure it match the settings in either the unix_http_server
; or inet_http_server section.
[supervisorctl]
; use a unix:// URL for a unix socket
serverurl = unix:///run/supervisor.sock
; serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
; username=chris ; should be same as in [*_http_server] if set
; password=123 ; should be same as in [*_http_server] if set
; prompt=mysupervisor ; cmd line prompt (default "supervisor")
; history_file=~/.sc_history ; use readline history if available
; The sample program section below shows all possible program subsection values.
; Create one or more 'real' program: sections to be able to control them under
; supervisor.
; [program:theprogramname]
; command=/bin/cat ; the program (relative uses PATH, can take args)
; process_name=%(program_name)s ; process_name expr (default %(program_name)s)
; numprocs=1 ; number of processes copies to start (def 1)
; directory=/tmp ; directory to cwd to before exec (def no cwd)
; umask=022 ; umask for process (default None)
; priority=999 ; the relative start priority (default 999)
; autostart=true ; start at supervisord start (default: true)
; startsecs=1 ; # of secs prog must stay up to be running (def. 1)
; startretries=3 ; max # of serial start failures when starting (default 3)
; autorestart=unexpected ; when to restart if exited after running (def: unexpected)
; exitcodes=0 ; 'expected' exit codes used with autorestart (default 0)
; stopsignal=QUIT ; signal used to kill process (default TERM)
; stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
; stopasgroup=false ; send stop signal to the UNIX process group (default false)
; killasgroup=false ; SIGKILL the UNIX process group (def false)
; user=chrism ; setuid to this UNIX account to run the program
; redirect_stderr=true ; redirect proc stderr to stdout (default false)
; stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
; stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
; stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
; stdout_events_enabled=false ; emit events on stdout writes (default false)
; stdout_syslog=false ; send stdout to syslog with process name (default false)
; stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
; stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stderr_logfile_backups=10 ; # of stderr logfile backups (0 means none, default 10)
; stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
; stderr_events_enabled=false ; emit events on stderr writes (default false)
; stderr_syslog=false ; send stderr to syslog with process name (default false)
; environment=A="1",B="2" ; process environment additions (def no adds)
; serverurl=AUTO ; override serverurl computation (childutils)
; The sample eventlistener section below shows all possible eventlistener
; subsection values. Create one or more 'real' eventlistener: sections to be
; able to handle event notifications sent by supervisord.
; [eventlistener:theeventlistenername]
; command=/bin/eventlistener ; the program (relative uses PATH, can take args)
; process_name=%(program_name)s ; process_name expr (default %(program_name)s)
; numprocs=1 ; number of processes copies to start (def 1)
; events=EVENT ; event notif. types to subscribe to (req'd)
; buffer_size=10 ; event buffer queue size (default 10)
; directory=/tmp ; directory to cwd to before exec (def no cwd)
; umask=022 ; umask for process (default None)
; priority=-1 ; the relative start priority (default -1)
; autostart=true ; start at supervisord start (default: true)
; startsecs=1 ; # of secs prog must stay up to be running (def. 1)
; startretries=3 ; max # of serial start failures when starting (default 3)
; autorestart=unexpected ; autorestart if exited after running (def: unexpected)
; exitcodes=0 ; 'expected' exit codes used with autorestart (default 0)
; stopsignal=QUIT ; signal used to kill process (default TERM)
; stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
; stopasgroup=false ; send stop signal to the UNIX process group (default false)
; killasgroup=false ; SIGKILL the UNIX process group (def false)
; user=chrism ; setuid to this UNIX account to run the program
; redirect_stderr=false ; redirect_stderr=true is not allowed for eventlisteners
; stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
; stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
; stdout_events_enabled=false ; emit events on stdout writes (default false)
; stdout_syslog=false ; send stdout to syslog with process name (default false)
; stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
; stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stderr_logfile_backups=10 ; # of stderr logfile backups (0 means none, default 10)
; stderr_events_enabled=false ; emit events on stderr writes (default false)
; stderr_syslog=false ; send stderr to syslog with process name (default false)
; environment=A="1",B="2" ; process environment additions
; serverurl=AUTO ; override serverurl computation (childutils)
; The sample group section below shows all possible group values. Create one
; or more 'real' group: sections to create "heterogeneous" process groups.
; [group:thegroupname]
; programs=progname1,progname2 ; each refers to 'x' in [program:x] definitions
; priority=999 ; the relative start priority (default 999)
; The [include] section can just contain the "files" setting. This
; setting can list multiple files (separated by whitespace or
; newlines). It can also contain wildcards. The filenames are
; interpreted as relative to this file. Included files *cannot*
; include files themselves.
[include]
files = /etc/supervisor.d/*.ini

View File

@ -21,6 +21,8 @@ RUN apk --no-cache add tzdata \
&& cp "/usr/share/zoneinfo/$TZ" /etc/localtime \ && cp "/usr/share/zoneinfo/$TZ" /etc/localtime \
&& echo "$TZ" > /etc/timezone && echo "$TZ" > /etc/timezone
RUN apk add supervisor \
&& mkdir -p /var/log/supervisor
# Fix: https://github.com/docker-library/php/issues/1121 # Fix: https://github.com/docker-library/php/issues/1121
RUN apk add --no-cache --repository http://${CONTAINER_PACKAGE_URL}/alpine/v3.13/community/ gnu-libiconv=1.15-r3 RUN apk add --no-cache --repository http://${CONTAINER_PACKAGE_URL}/alpine/v3.13/community/ gnu-libiconv=1.15-r3

View File

@ -13,6 +13,11 @@ services:
- ./log:/var/log/php - ./log:/var/log/php
- ./composer:/tmp/composer - ./composer:/tmp/composer
- ./extensions:/php/extensions - ./extensions:/php/extensions
- ./supervisor/supervisord.conf:/etc/supervisord.conf
- ./supervisor/supervisor.d:/etc/supervisor.d
- ./supervisor/log/supervisord.log:/var/log/supervisord.log
- ./supervisor/run.sh:/run.sh
command: sh /run.sh
ports: ports:
- 127.0.0.1:${PANEL_APP_PORT_HTTP}:9000 - 127.0.0.1:${PANEL_APP_PORT_HTTP}:9000
labels: labels:

View File

@ -0,0 +1,3 @@
#!/bin/sh
supervisord -c /etc/supervisord.conf

View File

@ -0,0 +1,155 @@
; Sample supervisor config file.
;
; For more information on the config file, please see:
; http://supervisord.org/configuration.html
;
; Notes:
; - Shell expansion ("~" or "$HOME") is not supported. Environment
; variables can be expanded using this syntax: "%(ENV_HOME)s".
; - Quotes around values are not supported, except in the case of
; the environment= options as shown below.
; - Comments must have a leading space: "a=b ;comment" not "a=b;comment".
; - Command will be truncated if it looks like a config file comment, e.g.
; "command=bash -c 'foo ; bar'" will truncate to "command=bash -c 'foo ".
[unix_http_server]
; the path to the socket file
file = /run/supervisor.sock
; chmod=0700 ; socket file mode (default 0700)
; chown=nobody:nogroup ; socket file uid:gid owner
; username=user ; default is no username (open server)
; password=123 ; default is no password (open server)
; inet (TCP) server disabled by default
[inet_http_server]
; ip_address:port specifier, *:port for all iface
port = 127.0.0.1:9002
; username=user ; default is no username (open server)
; password=123 ; default is no password (open server)
[supervisord]
; main log file; default $CWD/supervisord.log
logfile = /var/log/supervisord.log
; max main logfile bytes b4 rotation; default 50MB
logfile_maxbytes = 50MB
; # of main logfile backups; 0 means none, default 11
logfile_backups = 10
; log level; default info; others: debug,warn,trace
loglevel = info
; supervisord pidfile; default supervisord.pid
pidfile = /run/supervisord.pid
; start in foreground if true; default false
nodaemon = true
; min. avail startup file descriptors; default 1024
minfds = 1024
; min. avail process descriptors;default 200
minprocs = 200
; umask=022 ; process file creation umask; default 022
; user=supervisord ; setuid to this UNIX account at startup; recommended if root
; identifier=supervisor ; supervisord identifier, default is 'supervisor'
; directory=/tmp ; default is not to cd during start
; nocleanup=true ; don't clean up tempfiles at start; default false
; 'AUTO' child log dir, default $TEMP
childlogdir = /var/log/supervisor
; environment=KEY="value" ; key value pairs to add to environment
; strip_ansi=false ; strip ansi escape codes in logs; def. false
; The rpcinterface:supervisor section must remain in the config file for
; RPC (supervisorctl/web interface) to work. Additional interfaces may be
; added by defining them in separate [rpcinterface:x] sections.
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
; The supervisorctl section configures how supervisorctl will connect to
; supervisord. configure it match the settings in either the unix_http_server
; or inet_http_server section.
[supervisorctl]
; use a unix:// URL for a unix socket
serverurl = unix:///run/supervisor.sock
; serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
; username=chris ; should be same as in [*_http_server] if set
; password=123 ; should be same as in [*_http_server] if set
; prompt=mysupervisor ; cmd line prompt (default "supervisor")
; history_file=~/.sc_history ; use readline history if available
; The sample program section below shows all possible program subsection values.
; Create one or more 'real' program: sections to be able to control them under
; supervisor.
; [program:theprogramname]
; command=/bin/cat ; the program (relative uses PATH, can take args)
; process_name=%(program_name)s ; process_name expr (default %(program_name)s)
; numprocs=1 ; number of processes copies to start (def 1)
; directory=/tmp ; directory to cwd to before exec (def no cwd)
; umask=022 ; umask for process (default None)
; priority=999 ; the relative start priority (default 999)
; autostart=true ; start at supervisord start (default: true)
; startsecs=1 ; # of secs prog must stay up to be running (def. 1)
; startretries=3 ; max # of serial start failures when starting (default 3)
; autorestart=unexpected ; when to restart if exited after running (def: unexpected)
; exitcodes=0 ; 'expected' exit codes used with autorestart (default 0)
; stopsignal=QUIT ; signal used to kill process (default TERM)
; stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
; stopasgroup=false ; send stop signal to the UNIX process group (default false)
; killasgroup=false ; SIGKILL the UNIX process group (def false)
; user=chrism ; setuid to this UNIX account to run the program
; redirect_stderr=true ; redirect proc stderr to stdout (default false)
; stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
; stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
; stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
; stdout_events_enabled=false ; emit events on stdout writes (default false)
; stdout_syslog=false ; send stdout to syslog with process name (default false)
; stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
; stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stderr_logfile_backups=10 ; # of stderr logfile backups (0 means none, default 10)
; stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
; stderr_events_enabled=false ; emit events on stderr writes (default false)
; stderr_syslog=false ; send stderr to syslog with process name (default false)
; environment=A="1",B="2" ; process environment additions (def no adds)
; serverurl=AUTO ; override serverurl computation (childutils)
; The sample eventlistener section below shows all possible eventlistener
; subsection values. Create one or more 'real' eventlistener: sections to be
; able to handle event notifications sent by supervisord.
; [eventlistener:theeventlistenername]
; command=/bin/eventlistener ; the program (relative uses PATH, can take args)
; process_name=%(program_name)s ; process_name expr (default %(program_name)s)
; numprocs=1 ; number of processes copies to start (def 1)
; events=EVENT ; event notif. types to subscribe to (req'd)
; buffer_size=10 ; event buffer queue size (default 10)
; directory=/tmp ; directory to cwd to before exec (def no cwd)
; umask=022 ; umask for process (default None)
; priority=-1 ; the relative start priority (default -1)
; autostart=true ; start at supervisord start (default: true)
; startsecs=1 ; # of secs prog must stay up to be running (def. 1)
; startretries=3 ; max # of serial start failures when starting (default 3)
; autorestart=unexpected ; autorestart if exited after running (def: unexpected)
; exitcodes=0 ; 'expected' exit codes used with autorestart (default 0)
; stopsignal=QUIT ; signal used to kill process (default TERM)
; stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
; stopasgroup=false ; send stop signal to the UNIX process group (default false)
; killasgroup=false ; SIGKILL the UNIX process group (def false)
; user=chrism ; setuid to this UNIX account to run the program
; redirect_stderr=false ; redirect_stderr=true is not allowed for eventlisteners
; stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
; stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
; stdout_events_enabled=false ; emit events on stdout writes (default false)
; stdout_syslog=false ; send stdout to syslog with process name (default false)
; stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
; stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stderr_logfile_backups=10 ; # of stderr logfile backups (0 means none, default 10)
; stderr_events_enabled=false ; emit events on stderr writes (default false)
; stderr_syslog=false ; send stderr to syslog with process name (default false)
; environment=A="1",B="2" ; process environment additions
; serverurl=AUTO ; override serverurl computation (childutils)
; The sample group section below shows all possible group values. Create one
; or more 'real' group: sections to create "heterogeneous" process groups.
; [group:thegroupname]
; programs=progname1,progname2 ; each refers to 'x' in [program:x] definitions
; priority=999 ; the relative start priority (default 999)
; The [include] section can just contain the "files" setting. This
; setting can list multiple files (separated by whitespace or
; newlines). It can also contain wildcards. The filenames are
; interpreted as relative to this file. Included files *cannot*
; include files themselves.
[include]
files = /etc/supervisor.d/*.ini

View File

@ -22,6 +22,8 @@ RUN apk --no-cache add tzdata \
&& cp "/usr/share/zoneinfo/$TZ" /etc/localtime \ && cp "/usr/share/zoneinfo/$TZ" /etc/localtime \
&& echo "$TZ" > /etc/timezone && echo "$TZ" > /etc/timezone
RUN apk add supervisor \
&& mkdir -p /var/log/supervisor
# Fix: https://github.com/docker-library/php/issues/240 # Fix: https://github.com/docker-library/php/issues/240
RUN apk add gnu-libiconv libstdc++ --no-cache --repository http://${CONTAINER_PACKAGE_URL}/alpine/edge/community/ --allow-untrusted RUN apk add gnu-libiconv libstdc++ --no-cache --repository http://${CONTAINER_PACKAGE_URL}/alpine/edge/community/ --allow-untrusted

View File

@ -13,6 +13,11 @@ services:
- ./log:/var/log/php - ./log:/var/log/php
- ./composer:/tmp/composer - ./composer:/tmp/composer
- ./extensions:/php/extensions - ./extensions:/php/extensions
- ./supervisor/supervisord.conf:/etc/supervisord.conf
- ./supervisor/supervisor.d:/etc/supervisor.d
- ./supervisor/log/supervisord.log:/var/log/supervisord.log
- ./supervisor/run.sh:/run.sh
command: sh /run.sh
ports: ports:
- 127.0.0.1:${PANEL_APP_PORT_HTTP}:9000 - 127.0.0.1:${PANEL_APP_PORT_HTTP}:9000
labels: labels:

View File

@ -0,0 +1,3 @@
#!/bin/sh
supervisord -c /etc/supervisord.conf

View File

@ -0,0 +1,155 @@
; Sample supervisor config file.
;
; For more information on the config file, please see:
; http://supervisord.org/configuration.html
;
; Notes:
; - Shell expansion ("~" or "$HOME") is not supported. Environment
; variables can be expanded using this syntax: "%(ENV_HOME)s".
; - Quotes around values are not supported, except in the case of
; the environment= options as shown below.
; - Comments must have a leading space: "a=b ;comment" not "a=b;comment".
; - Command will be truncated if it looks like a config file comment, e.g.
; "command=bash -c 'foo ; bar'" will truncate to "command=bash -c 'foo ".
[unix_http_server]
; the path to the socket file
file = /run/supervisor.sock
; chmod=0700 ; socket file mode (default 0700)
; chown=nobody:nogroup ; socket file uid:gid owner
; username=user ; default is no username (open server)
; password=123 ; default is no password (open server)
; inet (TCP) server disabled by default
[inet_http_server]
; ip_address:port specifier, *:port for all iface
port = 127.0.0.1:9002
; username=user ; default is no username (open server)
; password=123 ; default is no password (open server)
[supervisord]
; main log file; default $CWD/supervisord.log
logfile = /var/log/supervisord.log
; max main logfile bytes b4 rotation; default 50MB
logfile_maxbytes = 50MB
; # of main logfile backups; 0 means none, default 11
logfile_backups = 10
; log level; default info; others: debug,warn,trace
loglevel = info
; supervisord pidfile; default supervisord.pid
pidfile = /run/supervisord.pid
; start in foreground if true; default false
nodaemon = true
; min. avail startup file descriptors; default 1024
minfds = 1024
; min. avail process descriptors;default 200
minprocs = 200
; umask=022 ; process file creation umask; default 022
; user=supervisord ; setuid to this UNIX account at startup; recommended if root
; identifier=supervisor ; supervisord identifier, default is 'supervisor'
; directory=/tmp ; default is not to cd during start
; nocleanup=true ; don't clean up tempfiles at start; default false
; 'AUTO' child log dir, default $TEMP
childlogdir = /var/log/supervisor
; environment=KEY="value" ; key value pairs to add to environment
; strip_ansi=false ; strip ansi escape codes in logs; def. false
; The rpcinterface:supervisor section must remain in the config file for
; RPC (supervisorctl/web interface) to work. Additional interfaces may be
; added by defining them in separate [rpcinterface:x] sections.
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
; The supervisorctl section configures how supervisorctl will connect to
; supervisord. configure it match the settings in either the unix_http_server
; or inet_http_server section.
[supervisorctl]
; use a unix:// URL for a unix socket
serverurl = unix:///run/supervisor.sock
; serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
; username=chris ; should be same as in [*_http_server] if set
; password=123 ; should be same as in [*_http_server] if set
; prompt=mysupervisor ; cmd line prompt (default "supervisor")
; history_file=~/.sc_history ; use readline history if available
; The sample program section below shows all possible program subsection values.
; Create one or more 'real' program: sections to be able to control them under
; supervisor.
; [program:theprogramname]
; command=/bin/cat ; the program (relative uses PATH, can take args)
; process_name=%(program_name)s ; process_name expr (default %(program_name)s)
; numprocs=1 ; number of processes copies to start (def 1)
; directory=/tmp ; directory to cwd to before exec (def no cwd)
; umask=022 ; umask for process (default None)
; priority=999 ; the relative start priority (default 999)
; autostart=true ; start at supervisord start (default: true)
; startsecs=1 ; # of secs prog must stay up to be running (def. 1)
; startretries=3 ; max # of serial start failures when starting (default 3)
; autorestart=unexpected ; when to restart if exited after running (def: unexpected)
; exitcodes=0 ; 'expected' exit codes used with autorestart (default 0)
; stopsignal=QUIT ; signal used to kill process (default TERM)
; stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
; stopasgroup=false ; send stop signal to the UNIX process group (default false)
; killasgroup=false ; SIGKILL the UNIX process group (def false)
; user=chrism ; setuid to this UNIX account to run the program
; redirect_stderr=true ; redirect proc stderr to stdout (default false)
; stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
; stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
; stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
; stdout_events_enabled=false ; emit events on stdout writes (default false)
; stdout_syslog=false ; send stdout to syslog with process name (default false)
; stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
; stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stderr_logfile_backups=10 ; # of stderr logfile backups (0 means none, default 10)
; stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
; stderr_events_enabled=false ; emit events on stderr writes (default false)
; stderr_syslog=false ; send stderr to syslog with process name (default false)
; environment=A="1",B="2" ; process environment additions (def no adds)
; serverurl=AUTO ; override serverurl computation (childutils)
; The sample eventlistener section below shows all possible eventlistener
; subsection values. Create one or more 'real' eventlistener: sections to be
; able to handle event notifications sent by supervisord.
; [eventlistener:theeventlistenername]
; command=/bin/eventlistener ; the program (relative uses PATH, can take args)
; process_name=%(program_name)s ; process_name expr (default %(program_name)s)
; numprocs=1 ; number of processes copies to start (def 1)
; events=EVENT ; event notif. types to subscribe to (req'd)
; buffer_size=10 ; event buffer queue size (default 10)
; directory=/tmp ; directory to cwd to before exec (def no cwd)
; umask=022 ; umask for process (default None)
; priority=-1 ; the relative start priority (default -1)
; autostart=true ; start at supervisord start (default: true)
; startsecs=1 ; # of secs prog must stay up to be running (def. 1)
; startretries=3 ; max # of serial start failures when starting (default 3)
; autorestart=unexpected ; autorestart if exited after running (def: unexpected)
; exitcodes=0 ; 'expected' exit codes used with autorestart (default 0)
; stopsignal=QUIT ; signal used to kill process (default TERM)
; stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
; stopasgroup=false ; send stop signal to the UNIX process group (default false)
; killasgroup=false ; SIGKILL the UNIX process group (def false)
; user=chrism ; setuid to this UNIX account to run the program
; redirect_stderr=false ; redirect_stderr=true is not allowed for eventlisteners
; stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
; stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
; stdout_events_enabled=false ; emit events on stdout writes (default false)
; stdout_syslog=false ; send stdout to syslog with process name (default false)
; stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
; stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stderr_logfile_backups=10 ; # of stderr logfile backups (0 means none, default 10)
; stderr_events_enabled=false ; emit events on stderr writes (default false)
; stderr_syslog=false ; send stderr to syslog with process name (default false)
; environment=A="1",B="2" ; process environment additions
; serverurl=AUTO ; override serverurl computation (childutils)
; The sample group section below shows all possible group values. Create one
; or more 'real' group: sections to create "heterogeneous" process groups.
; [group:thegroupname]
; programs=progname1,progname2 ; each refers to 'x' in [program:x] definitions
; priority=999 ; the relative start priority (default 999)
; The [include] section can just contain the "files" setting. This
; setting can list multiple files (separated by whitespace or
; newlines). It can also contain wildcards. The filenames are
; interpreted as relative to this file. Included files *cannot*
; include files themselves.
[include]
files = /etc/supervisor.d/*.ini

View File

@ -17,10 +17,13 @@ RUN chmod +x install.sh \
&& sh install.sh \ && sh install.sh \
&& rm -rf /tmp/extensions && rm -rf /tmp/extensions
RUN apk --no-cache add tzdata \ RUN apk --no-cache add tzdata \
&& cp "/usr/share/zoneinfo/$TZ" /etc/localtime \ && cp "/usr/share/zoneinfo/$TZ" /etc/localtime \
&& echo "$TZ" > /etc/timezone && echo "$TZ" > /etc/timezone
RUN apk add supervisor \
&& mkdir -p /var/log/supervisor
# Fix: https://github.com/docker-library/php/issues/240 # Fix: https://github.com/docker-library/php/issues/240
RUN apk add gnu-libiconv libstdc++ --no-cache --repository http://${CONTAINER_PACKAGE_URL}/alpine/edge/community/ --allow-untrusted RUN apk add gnu-libiconv libstdc++ --no-cache --repository http://${CONTAINER_PACKAGE_URL}/alpine/edge/community/ --allow-untrusted

View File

@ -13,6 +13,11 @@ services:
- ./log:/var/log/php - ./log:/var/log/php
- ./composer:/tmp/composer - ./composer:/tmp/composer
- ./extensions:/php/extensions - ./extensions:/php/extensions
- ./supervisor/supervisord.conf:/etc/supervisord.conf
- ./supervisor/supervisor.d:/etc/supervisor.d
- ./supervisor/log/supervisord.log:/var/log/supervisord.log
- ./supervisor/run.sh:/run.sh
command: sh /run.sh
ports: ports:
- 127.0.0.1:${PANEL_APP_PORT_HTTP}:9000 - 127.0.0.1:${PANEL_APP_PORT_HTTP}:9000
labels: labels:

View File

@ -0,0 +1,3 @@
#!/bin/sh
supervisord -c /etc/supervisord.conf

View File

@ -0,0 +1,155 @@
; Sample supervisor config file.
;
; For more information on the config file, please see:
; http://supervisord.org/configuration.html
;
; Notes:
; - Shell expansion ("~" or "$HOME") is not supported. Environment
; variables can be expanded using this syntax: "%(ENV_HOME)s".
; - Quotes around values are not supported, except in the case of
; the environment= options as shown below.
; - Comments must have a leading space: "a=b ;comment" not "a=b;comment".
; - Command will be truncated if it looks like a config file comment, e.g.
; "command=bash -c 'foo ; bar'" will truncate to "command=bash -c 'foo ".
[unix_http_server]
; the path to the socket file
file = /run/supervisor.sock
; chmod=0700 ; socket file mode (default 0700)
; chown=nobody:nogroup ; socket file uid:gid owner
; username=user ; default is no username (open server)
; password=123 ; default is no password (open server)
; inet (TCP) server disabled by default
[inet_http_server]
; ip_address:port specifier, *:port for all iface
port = 127.0.0.1:9002
; username=user ; default is no username (open server)
; password=123 ; default is no password (open server)
[supervisord]
; main log file; default $CWD/supervisord.log
logfile = /var/log/supervisord.log
; max main logfile bytes b4 rotation; default 50MB
logfile_maxbytes = 50MB
; # of main logfile backups; 0 means none, default 11
logfile_backups = 10
; log level; default info; others: debug,warn,trace
loglevel = info
; supervisord pidfile; default supervisord.pid
pidfile = /run/supervisord.pid
; start in foreground if true; default false
nodaemon = true
; min. avail startup file descriptors; default 1024
minfds = 1024
; min. avail process descriptors;default 200
minprocs = 200
; umask=022 ; process file creation umask; default 022
; user=supervisord ; setuid to this UNIX account at startup; recommended if root
; identifier=supervisor ; supervisord identifier, default is 'supervisor'
; directory=/tmp ; default is not to cd during start
; nocleanup=true ; don't clean up tempfiles at start; default false
; 'AUTO' child log dir, default $TEMP
childlogdir = /var/log/supervisor
; environment=KEY="value" ; key value pairs to add to environment
; strip_ansi=false ; strip ansi escape codes in logs; def. false
; The rpcinterface:supervisor section must remain in the config file for
; RPC (supervisorctl/web interface) to work. Additional interfaces may be
; added by defining them in separate [rpcinterface:x] sections.
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
; The supervisorctl section configures how supervisorctl will connect to
; supervisord. configure it match the settings in either the unix_http_server
; or inet_http_server section.
[supervisorctl]
; use a unix:// URL for a unix socket
serverurl = unix:///run/supervisor.sock
; serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
; username=chris ; should be same as in [*_http_server] if set
; password=123 ; should be same as in [*_http_server] if set
; prompt=mysupervisor ; cmd line prompt (default "supervisor")
; history_file=~/.sc_history ; use readline history if available
; The sample program section below shows all possible program subsection values.
; Create one or more 'real' program: sections to be able to control them under
; supervisor.
; [program:theprogramname]
; command=/bin/cat ; the program (relative uses PATH, can take args)
; process_name=%(program_name)s ; process_name expr (default %(program_name)s)
; numprocs=1 ; number of processes copies to start (def 1)
; directory=/tmp ; directory to cwd to before exec (def no cwd)
; umask=022 ; umask for process (default None)
; priority=999 ; the relative start priority (default 999)
; autostart=true ; start at supervisord start (default: true)
; startsecs=1 ; # of secs prog must stay up to be running (def. 1)
; startretries=3 ; max # of serial start failures when starting (default 3)
; autorestart=unexpected ; when to restart if exited after running (def: unexpected)
; exitcodes=0 ; 'expected' exit codes used with autorestart (default 0)
; stopsignal=QUIT ; signal used to kill process (default TERM)
; stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
; stopasgroup=false ; send stop signal to the UNIX process group (default false)
; killasgroup=false ; SIGKILL the UNIX process group (def false)
; user=chrism ; setuid to this UNIX account to run the program
; redirect_stderr=true ; redirect proc stderr to stdout (default false)
; stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
; stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
; stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
; stdout_events_enabled=false ; emit events on stdout writes (default false)
; stdout_syslog=false ; send stdout to syslog with process name (default false)
; stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
; stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stderr_logfile_backups=10 ; # of stderr logfile backups (0 means none, default 10)
; stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
; stderr_events_enabled=false ; emit events on stderr writes (default false)
; stderr_syslog=false ; send stderr to syslog with process name (default false)
; environment=A="1",B="2" ; process environment additions (def no adds)
; serverurl=AUTO ; override serverurl computation (childutils)
; The sample eventlistener section below shows all possible eventlistener
; subsection values. Create one or more 'real' eventlistener: sections to be
; able to handle event notifications sent by supervisord.
; [eventlistener:theeventlistenername]
; command=/bin/eventlistener ; the program (relative uses PATH, can take args)
; process_name=%(program_name)s ; process_name expr (default %(program_name)s)
; numprocs=1 ; number of processes copies to start (def 1)
; events=EVENT ; event notif. types to subscribe to (req'd)
; buffer_size=10 ; event buffer queue size (default 10)
; directory=/tmp ; directory to cwd to before exec (def no cwd)
; umask=022 ; umask for process (default None)
; priority=-1 ; the relative start priority (default -1)
; autostart=true ; start at supervisord start (default: true)
; startsecs=1 ; # of secs prog must stay up to be running (def. 1)
; startretries=3 ; max # of serial start failures when starting (default 3)
; autorestart=unexpected ; autorestart if exited after running (def: unexpected)
; exitcodes=0 ; 'expected' exit codes used with autorestart (default 0)
; stopsignal=QUIT ; signal used to kill process (default TERM)
; stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
; stopasgroup=false ; send stop signal to the UNIX process group (default false)
; killasgroup=false ; SIGKILL the UNIX process group (def false)
; user=chrism ; setuid to this UNIX account to run the program
; redirect_stderr=false ; redirect_stderr=true is not allowed for eventlisteners
; stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
; stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
; stdout_events_enabled=false ; emit events on stdout writes (default false)
; stdout_syslog=false ; send stdout to syslog with process name (default false)
; stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
; stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stderr_logfile_backups=10 ; # of stderr logfile backups (0 means none, default 10)
; stderr_events_enabled=false ; emit events on stderr writes (default false)
; stderr_syslog=false ; send stderr to syslog with process name (default false)
; environment=A="1",B="2" ; process environment additions
; serverurl=AUTO ; override serverurl computation (childutils)
; The sample group section below shows all possible group values. Create one
; or more 'real' group: sections to create "heterogeneous" process groups.
; [group:thegroupname]
; programs=progname1,progname2 ; each refers to 'x' in [program:x] definitions
; priority=999 ; the relative start priority (default 999)
; The [include] section can just contain the "files" setting. This
; setting can list multiple files (separated by whitespace or
; newlines). It can also contain wildcards. The filenames are
; interpreted as relative to this file. Included files *cannot*
; include files themselves.
[include]
files = /etc/supervisor.d/*.ini

View File

@ -5,26 +5,28 @@ ARG TZ
ARG PHP_EXTENSIONS ARG PHP_EXTENSIONS
ARG CONTAINER_PACKAGE_URL ARG CONTAINER_PACKAGE_URL
RUN if [ $CONTAINER_PACKAGE_URL ] ; then sed -i "s/dl-cdn.alpinelinux.org/${CONTAINER_PACKAGE_URL}/g" /etc/apk/repositories ; fi RUN if [ $CONTAINER_PACKAGE_URL ] ; then sed -i "s/dl-cdn.alpinelinux.org/${CONTAINER_PACKAGE_URL}/g" /etc/apk/repositories ; fi
ADD ./extensions/install-php-extensions /usr/local/bin/ ADD ./extensions/install-php-extensions /usr/local/bin/
RUN chmod uga+x /usr/local/bin/install-php-extensions RUN chmod uga+x /usr/local/bin/install-php-extensions
RUN apk --no-cache add tzdata
COPY ./extensions /tmp/extensions COPY ./extensions /tmp/extensions
WORKDIR /tmp/extensions WORKDIR /tmp/extensions
RUN chmod +x install.sh \ RUN chmod +x install.sh \
&& sh install.sh \ && sh install.sh \
&& rm -rf /tmp/extensions \ && rm -rf /tmp/extensions
RUN apk add tzdata \
RUN apk --no-cache add tzdata \
&& cp "/usr/share/zoneinfo/$TZ" /etc/localtime \ && cp "/usr/share/zoneinfo/$TZ" /etc/localtime \
&& echo "$TZ" > /etc/timezone && echo "$TZ" > /etc/timezone
RUN apk add supervisor \
&& mkdir -p /var/log/supervisor
# Fix: https://github.com/docker-library/php/issues/240 # Fix: https://github.com/docker-library/php/issues/240
RUN apk add gnu-libiconv libstdc++ --no-cache --repository http://${CONTAINER_PACKAGE_URL}/alpine/edge/community/ --allow-untrusted RUN apk add gnu-libiconv libstdc++ --no-cache --repository http://${CONTAINER_PACKAGE_URL}/alpine/edge/community/ --allow-untrusted
ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so php ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so php

View File

@ -13,6 +13,11 @@ services:
- ./log:/var/log/php - ./log:/var/log/php
- ./composer:/tmp/composer - ./composer:/tmp/composer
- ./extensions:/php/extensions - ./extensions:/php/extensions
- ./supervisor/supervisord.conf:/etc/supervisord.conf
- ./supervisor/supervisor.d:/etc/supervisor.d
- ./supervisor/log/supervisord.log:/var/log/supervisord.log
- ./supervisor/run.sh:/run.sh
command: sh /run.sh
ports: ports:
- 127.0.0.1:${PANEL_APP_PORT_HTTP}:9000 - 127.0.0.1:${PANEL_APP_PORT_HTTP}:9000
labels: labels:

View File

@ -0,0 +1,3 @@
#!/bin/sh
supervisord -c /etc/supervisord.conf

View File

@ -0,0 +1,155 @@
; Sample supervisor config file.
;
; For more information on the config file, please see:
; http://supervisord.org/configuration.html
;
; Notes:
; - Shell expansion ("~" or "$HOME") is not supported. Environment
; variables can be expanded using this syntax: "%(ENV_HOME)s".
; - Quotes around values are not supported, except in the case of
; the environment= options as shown below.
; - Comments must have a leading space: "a=b ;comment" not "a=b;comment".
; - Command will be truncated if it looks like a config file comment, e.g.
; "command=bash -c 'foo ; bar'" will truncate to "command=bash -c 'foo ".
[unix_http_server]
; the path to the socket file
file = /run/supervisor.sock
; chmod=0700 ; socket file mode (default 0700)
; chown=nobody:nogroup ; socket file uid:gid owner
; username=user ; default is no username (open server)
; password=123 ; default is no password (open server)
; inet (TCP) server disabled by default
[inet_http_server]
; ip_address:port specifier, *:port for all iface
port = 127.0.0.1:9002
; username=user ; default is no username (open server)
; password=123 ; default is no password (open server)
[supervisord]
; main log file; default $CWD/supervisord.log
logfile = /var/log/supervisord.log
; max main logfile bytes b4 rotation; default 50MB
logfile_maxbytes = 50MB
; # of main logfile backups; 0 means none, default 11
logfile_backups = 10
; log level; default info; others: debug,warn,trace
loglevel = info
; supervisord pidfile; default supervisord.pid
pidfile = /run/supervisord.pid
; start in foreground if true; default false
nodaemon = true
; min. avail startup file descriptors; default 1024
minfds = 1024
; min. avail process descriptors;default 200
minprocs = 200
; umask=022 ; process file creation umask; default 022
; user=supervisord ; setuid to this UNIX account at startup; recommended if root
; identifier=supervisor ; supervisord identifier, default is 'supervisor'
; directory=/tmp ; default is not to cd during start
; nocleanup=true ; don't clean up tempfiles at start; default false
; 'AUTO' child log dir, default $TEMP
childlogdir = /var/log/supervisor
; environment=KEY="value" ; key value pairs to add to environment
; strip_ansi=false ; strip ansi escape codes in logs; def. false
; The rpcinterface:supervisor section must remain in the config file for
; RPC (supervisorctl/web interface) to work. Additional interfaces may be
; added by defining them in separate [rpcinterface:x] sections.
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
; The supervisorctl section configures how supervisorctl will connect to
; supervisord. configure it match the settings in either the unix_http_server
; or inet_http_server section.
[supervisorctl]
; use a unix:// URL for a unix socket
serverurl = unix:///run/supervisor.sock
; serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
; username=chris ; should be same as in [*_http_server] if set
; password=123 ; should be same as in [*_http_server] if set
; prompt=mysupervisor ; cmd line prompt (default "supervisor")
; history_file=~/.sc_history ; use readline history if available
; The sample program section below shows all possible program subsection values.
; Create one or more 'real' program: sections to be able to control them under
; supervisor.
; [program:theprogramname]
; command=/bin/cat ; the program (relative uses PATH, can take args)
; process_name=%(program_name)s ; process_name expr (default %(program_name)s)
; numprocs=1 ; number of processes copies to start (def 1)
; directory=/tmp ; directory to cwd to before exec (def no cwd)
; umask=022 ; umask for process (default None)
; priority=999 ; the relative start priority (default 999)
; autostart=true ; start at supervisord start (default: true)
; startsecs=1 ; # of secs prog must stay up to be running (def. 1)
; startretries=3 ; max # of serial start failures when starting (default 3)
; autorestart=unexpected ; when to restart if exited after running (def: unexpected)
; exitcodes=0 ; 'expected' exit codes used with autorestart (default 0)
; stopsignal=QUIT ; signal used to kill process (default TERM)
; stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
; stopasgroup=false ; send stop signal to the UNIX process group (default false)
; killasgroup=false ; SIGKILL the UNIX process group (def false)
; user=chrism ; setuid to this UNIX account to run the program
; redirect_stderr=true ; redirect proc stderr to stdout (default false)
; stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
; stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
; stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
; stdout_events_enabled=false ; emit events on stdout writes (default false)
; stdout_syslog=false ; send stdout to syslog with process name (default false)
; stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
; stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stderr_logfile_backups=10 ; # of stderr logfile backups (0 means none, default 10)
; stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
; stderr_events_enabled=false ; emit events on stderr writes (default false)
; stderr_syslog=false ; send stderr to syslog with process name (default false)
; environment=A="1",B="2" ; process environment additions (def no adds)
; serverurl=AUTO ; override serverurl computation (childutils)
; The sample eventlistener section below shows all possible eventlistener
; subsection values. Create one or more 'real' eventlistener: sections to be
; able to handle event notifications sent by supervisord.
; [eventlistener:theeventlistenername]
; command=/bin/eventlistener ; the program (relative uses PATH, can take args)
; process_name=%(program_name)s ; process_name expr (default %(program_name)s)
; numprocs=1 ; number of processes copies to start (def 1)
; events=EVENT ; event notif. types to subscribe to (req'd)
; buffer_size=10 ; event buffer queue size (default 10)
; directory=/tmp ; directory to cwd to before exec (def no cwd)
; umask=022 ; umask for process (default None)
; priority=-1 ; the relative start priority (default -1)
; autostart=true ; start at supervisord start (default: true)
; startsecs=1 ; # of secs prog must stay up to be running (def. 1)
; startretries=3 ; max # of serial start failures when starting (default 3)
; autorestart=unexpected ; autorestart if exited after running (def: unexpected)
; exitcodes=0 ; 'expected' exit codes used with autorestart (default 0)
; stopsignal=QUIT ; signal used to kill process (default TERM)
; stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
; stopasgroup=false ; send stop signal to the UNIX process group (default false)
; killasgroup=false ; SIGKILL the UNIX process group (def false)
; user=chrism ; setuid to this UNIX account to run the program
; redirect_stderr=false ; redirect_stderr=true is not allowed for eventlisteners
; stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
; stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
; stdout_events_enabled=false ; emit events on stdout writes (default false)
; stdout_syslog=false ; send stdout to syslog with process name (default false)
; stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
; stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
; stderr_logfile_backups=10 ; # of stderr logfile backups (0 means none, default 10)
; stderr_events_enabled=false ; emit events on stderr writes (default false)
; stderr_syslog=false ; send stderr to syslog with process name (default false)
; environment=A="1",B="2" ; process environment additions
; serverurl=AUTO ; override serverurl computation (childutils)
; The sample group section below shows all possible group values. Create one
; or more 'real' group: sections to create "heterogeneous" process groups.
; [group:thegroupname]
; programs=progname1,progname2 ; each refers to 'x' in [program:x] definitions
; priority=999 ; the relative start priority (default 999)
; The [include] section can just contain the "files" setting. This
; setting can list multiple files (separated by whitespace or
; newlines). It can also contain wildcards. The filenames are
; interpreted as relative to this file. Included files *cannot*
; include files themselves.
[include]
files = /etc/supervisor.d/*.ini