e5fa1cf0 by Adam Heath

Copying in pre-existing image recipes.

1 parent ec5aed97
1 FROM debian:stretch-slim
2
3 COPY files/ /tmp/files
4 RUN /tmp/files/configure
5 EXPOSE 143
6 VOLUME ["/home"]
7 ENTRYPOINT ["/sbin/entrypoint"]
8 CMD ["/usr/sbin/dovecot", "-F"]
9
1 #!/bin/sh
2
3 set -e
4
5 mkdir -p /etc/dovecot/conf.d/
6 cp /tmp/files/dovecot.conf /etc/dovecot/conf.d/99-docker.conf
7
8 apt-get update
9 apt-get install -y ssmtp dovecot-sqlite dovecot-imapd
10
11 cp /tmp/files/entrypoint /sbin/entrypoint
12
13 addgroup hostgroup
14 adduser --gecos 'Host User' --ingroup hostgroup --disabled-password hostuser
1 mail_location = maildir:~/Maildir
2 disable_plaintext_auth = no
1 #!/bin/bash
2
3 set -ex
4
5 hostuser_home="$(getent passwd hostuser | cut -f 6 -d :)"
6
7 if [[ $GID ]]; then
8 old_gid=$(getent group hostgroup | cut -f 3 -d :)
9 groupmod -g $GID hostgroup
10 find "$hostuser_home" -gid $old_gid -print0 | xargs -0r chgrp hostgroup
11 fi
12 if [[ $UID ]]; then
13 usermod -u $UID hostuser
14 fi
15
16 if [[ $DOVECOT_HOSTUSER_PASSWORD ]]; then
17 echo "hostuser:$DOVECOT_HOSTUSER_PASSWORD" | chpasswd
18 fi
19
20 exec "$@"
1 FROM debian:stretch
2
3 COPY files/ /tmp/files/
4 RUN /tmp/files/configure
5
6 ENTRYPOINT ["/sbin/entrypoint.sh"]
7 CMD ["nginx", "-g", "daemon off;"]
1 #!/bin/sh
2
3 set -e
4 apt-get update
5 apt-get install -y ssmtp nginx libnginx-mod-http-subs-filter
6 rm /etc/nginx/sites-enabled/default
7 cp -a /tmp/files/entrypoint.sh /sbin
1 #!/bin/sh
2
3 set -e
4
5 if [ "$NGINX_CONF_NAME" ]; then
6 ln -sf "../sites-available/$NGINX_CONF_NAME.conf" /etc/nginx/sites-enabled/app.conf
7 fi
8
9 exec "$@"
1 FROM node
2
3 COPY files/ /tmp/files/
4 RUN /tmp/files/configure
5
6 #ADD https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar /usr/local/bin/wp
7 #RUN ["chmod", "755", "/usr/local/bin/wp"]
8
9 ENTRYPOINT ["/root/entrypoint"]
10 #CMD ["/usr/sbin/php5-fpm", "--nodaemonize", "--force-stderr", "--fpm-config", "/etc/php5/fpm/php-fpm.conf"]
1 ; Per pool prefix
2 ; It only applies on the following directives:
3 ; - 'slowlog'
4 ; - 'listen' (unixsocket)
5 ; - 'chroot'
6 ; - 'chdir'
7 ; - 'php_values'
8 ; - 'php_admin_values'
9 ; When not set, the global prefix (or /usr) applies instead.
10 ; Note: This directive can also be relative to the global prefix.
11 ; Default Value: none
12 prefix = /srv/$pool
13
14 ; The address on which to accept FastCGI requests.
15 ; Valid syntaxes are:
16 ; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific address on
17 ; a specific port;
18 ; 'port' - to listen on a TCP socket to all addresses on a
19 ; specific port;
20 ; '/path/to/unix/socket' - to listen on a unix socket.
21 ; Note: This value is mandatory.
22 listen = 9000
23
24 ; Set listen(2) backlog.
25 ; Default Value: 128 (-1 on FreeBSD and OpenBSD)
26 ;listen.backlog = 128
27
28 ; Set permissions for unix socket, if one is used. In Linux, read/write
29 ; permissions must be set in order to allow connections from a web server. Many
30 ; BSD-derived systems allow connections regardless of permissions.
31 ; Default Values: user and group are set as the running user
32 ; mode is set to 0666
33 ;listen.owner = www-data
34 ;listen.group = www-data
35 ;listen.mode = 0666
36
37 ; List of ipv4 addresses of FastCGI clients which are allowed to connect.
38 ; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
39 ; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
40 ; must be separated by a comma. If this value is left blank, connections will be
41 ; accepted from any ip address.
42 ; Default Value: any
43 ;listen.allowed_clients = 127.0.0.1
44
45 ; Choose how the process manager will control the number of child processes.
46 ; Possible Values:
47 ; static - a fixed number (pm.max_children) of child processes;
48 ; dynamic - the number of child processes are set dynamically based on the
49 ; following directives. With this process management, there will be
50 ; always at least 1 children.
51 ; pm.max_children - the maximum number of children that can
52 ; be alive at the same time.
53 ; pm.start_servers - the number of children created on startup.
54 ; pm.min_spare_servers - the minimum number of children in 'idle'
55 ; state (waiting to process). If the number
56 ; of 'idle' processes is less than this
57 ; number then some children will be created.
58 ; pm.max_spare_servers - the maximum number of children in 'idle'
59 ; state (waiting to process). If the number
60 ; of 'idle' processes is greater than this
61 ; number then some children will be killed.
62 ; ondemand - no children are created at startup. Children will be forked when
63 ; new requests will connect. The following parameter are used:
64 ; pm.max_children - the maximum number of children that
65 ; can be alive at the same time.
66 ; pm.process_idle_timeout - The number of seconds after which
67 ; an idle process will be killed.
68 ; Note: This value is mandatory.
69 pm = ondemand
70
71 ; The number of child processes to be created when pm is set to 'static' and the
72 ; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'.
73 ; This value sets the limit on the number of simultaneous requests that will be
74 ; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
75 ; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
76 ; CGI. The below defaults are based on a server without much resources. Don't
77 ; forget to tweak pm.* to fit your needs.
78 ; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand'
79 ; Note: This value is mandatory.
80 pm.max_children = 10
81
82 ; The number of child processes created on startup.
83 ; Note: Used only when pm is set to 'dynamic'
84 ; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
85 pm.start_servers = 1
86
87 ; The desired minimum number of idle server processes.
88 ; Note: Used only when pm is set to 'dynamic'
89 ; Note: Mandatory when pm is set to 'dynamic'
90 pm.min_spare_servers = 1
91
92 ; The desired maximum number of idle server processes.
93 ; Note: Used only when pm is set to 'dynamic'
94 ; Note: Mandatory when pm is set to 'dynamic'
95 pm.max_spare_servers = 3
96
97 ; The number of seconds after which an idle process will be killed.
98 ; Note: Used only when pm is set to 'ondemand'
99 ; Default Value: 10s
100 ;pm.process_idle_timeout = 10s;
101
102 ; The number of requests each child process should execute before respawning.
103 ; This can be useful to work around memory leaks in 3rd party libraries. For
104 ; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
105 ; Default Value: 0
106 ;pm.max_requests = 500
107
108 ; The URI to view the FPM status page. If this value is not set, no URI will be
109 ; recognized as a status page. It shows the following informations:
110 ; pool - the name of the pool;
111 ; process manager - static, dynamic or ondemand;
112 ; start time - the date and time FPM has started;
113 ; start since - number of seconds since FPM has started;
114 ; accepted conn - the number of request accepted by the pool;
115 ; listen queue - the number of request in the queue of pending
116 ; connections (see backlog in listen(2));
117 ; max listen queue - the maximum number of requests in the queue
118 ; of pending connections since FPM has started;
119 ; listen queue len - the size of the socket queue of pending connections;
120 ; idle processes - the number of idle processes;
121 ; active processes - the number of active processes;
122 ; total processes - the number of idle + active processes;
123 ; max active processes - the maximum number of active processes since FPM
124 ; has started;
125 ; max children reached - number of times, the process limit has been reached,
126 ; when pm tries to start more children (works only for
127 ; pm 'dynamic' and 'ondemand');
128 ; Value are updated in real time.
129 ; Example output:
130 ; pool: www
131 ; process manager: static
132 ; start time: 01/Jul/2011:17:53:49 +0200
133 ; start since: 62636
134 ; accepted conn: 190460
135 ; listen queue: 0
136 ; max listen queue: 1
137 ; listen queue len: 42
138 ; idle processes: 4
139 ; active processes: 11
140 ; total processes: 15
141 ; max active processes: 12
142 ; max children reached: 0
143 ;
144 ; By default the status page output is formatted as text/plain. Passing either
145 ; 'html', 'xml' or 'json' in the query string will return the corresponding
146 ; output syntax. Example:
147 ; http://www.foo.bar/status
148 ; http://www.foo.bar/status?json
149 ; http://www.foo.bar/status?html
150 ; http://www.foo.bar/status?xml
151 ;
152 ; By default the status page only outputs short status. Passing 'full' in the
153 ; query string will also return status for each pool process.
154 ; Example:
155 ; http://www.foo.bar/status?full
156 ; http://www.foo.bar/status?json&full
157 ; http://www.foo.bar/status?html&full
158 ; http://www.foo.bar/status?xml&full
159 ; The Full status returns for each process:
160 ; pid - the PID of the process;
161 ; state - the state of the process (Idle, Running, ...);
162 ; start time - the date and time the process has started;
163 ; start since - the number of seconds since the process has started;
164 ; requests - the number of requests the process has served;
165 ; request duration - the duration in µs of the requests;
166 ; request method - the request method (GET, POST, ...);
167 ; request URI - the request URI with the query string;
168 ; content length - the content length of the request (only with POST);
169 ; user - the user (PHP_AUTH_USER) (or '-' if not set);
170 ; script - the main script called (or '-' if not set);
171 ; last request cpu - the %cpu the last request consumed
172 ; it's always 0 if the process is not in Idle state
173 ; because CPU calculation is done when the request
174 ; processing has terminated;
175 ; last request memory - the max amount of memory the last request consumed
176 ; it's always 0 if the process is not in Idle state
177 ; because memory calculation is done when the request
178 ; processing has terminated;
179 ; If the process is in Idle state, then informations are related to the
180 ; last request the process has served. Otherwise informations are related to
181 ; the current request being served.
182 ; Example output:
183 ; ************************
184 ; pid: 31330
185 ; state: Running
186 ; start time: 01/Jul/2011:17:53:49 +0200
187 ; start since: 63087
188 ; requests: 12808
189 ; request duration: 1250261
190 ; request method: GET
191 ; request URI: /test_mem.php?N=10000
192 ; content length: 0
193 ; user: -
194 ; script: /home/fat/web/docs/php/test_mem.php
195 ; last request cpu: 0.00
196 ; last request memory: 0
197 ;
198 ; Note: There is a real-time FPM status monitoring sample web page available
199 ; It's available in: ${prefix}/share/fpm/status.html
200 ;
201 ; Note: The value must start with a leading slash (/). The value can be
202 ; anything, but it may not be a good idea to use the .php extension or it
203 ; may conflict with a real PHP file.
204 ; Default Value: not set
205 ;pm.status_path = /status
206
207 ; The ping URI to call the monitoring page of FPM. If this value is not set, no
208 ; URI will be recognized as a ping page. This could be used to test from outside
209 ; that FPM is alive and responding, or to
210 ; - create a graph of FPM availability (rrd or such);
211 ; - remove a server from a group if it is not responding (load balancing);
212 ; - trigger alerts for the operating team (24/7).
213 ; Note: The value must start with a leading slash (/). The value can be
214 ; anything, but it may not be a good idea to use the .php extension or it
215 ; may conflict with a real PHP file.
216 ; Default Value: not set
217 ;ping.path = /ping
218
219 ; This directive may be used to customize the response of a ping request. The
220 ; response is formatted as text/plain with a 200 response code.
221 ; Default Value: pong
222 ;ping.response = pong
223
224 ; The access log file
225 ; Default: not set
226 ;access.log = log/$pool.access.log
227
228 ; The access log format.
229 ; The following syntax is allowed
230 ; %%: the '%' character
231 ; %C: %CPU used by the request
232 ; it can accept the following format:
233 ; - %{user}C for user CPU only
234 ; - %{system}C for system CPU only
235 ; - %{total}C for user + system CPU (default)
236 ; %d: time taken to serve the request
237 ; it can accept the following format:
238 ; - %{seconds}d (default)
239 ; - %{miliseconds}d
240 ; - %{mili}d
241 ; - %{microseconds}d
242 ; - %{micro}d
243 ; %e: an environment variable (same as $_ENV or $_SERVER)
244 ; it must be associated with embraces to specify the name of the env
245 ; variable. Some exemples:
246 ; - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e
247 ; - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e
248 ; %f: script filename
249 ; %l: content-length of the request (for POST request only)
250 ; %m: request method
251 ; %M: peak of memory allocated by PHP
252 ; it can accept the following format:
253 ; - %{bytes}M (default)
254 ; - %{kilobytes}M
255 ; - %{kilo}M
256 ; - %{megabytes}M
257 ; - %{mega}M
258 ; %n: pool name
259 ; %o: ouput header
260 ; it must be associated with embraces to specify the name of the header:
261 ; - %{Content-Type}o
262 ; - %{X-Powered-By}o
263 ; - %{Transfert-Encoding}o
264 ; - ....
265 ; %p: PID of the child that serviced the request
266 ; %P: PID of the parent of the child that serviced the request
267 ; %q: the query string
268 ; %Q: the '?' character if query string exists
269 ; %r: the request URI (without the query string, see %q and %Q)
270 ; %R: remote IP address
271 ; %s: status (response code)
272 ; %t: server time the request was received
273 ; it can accept a strftime(3) format:
274 ; %d/%b/%Y:%H:%M:%S %z (default)
275 ; %T: time the log has been written (the request has finished)
276 ; it can accept a strftime(3) format:
277 ; %d/%b/%Y:%H:%M:%S %z (default)
278 ; %u: remote user
279 ;
280 ; Default: "%R - %u %t \"%m %r\" %s"
281 ;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"
282
283 ; The log file for slow requests
284 ; Default Value: not set
285 ; Note: slowlog is mandatory if request_slowlog_timeout is set
286 ;slowlog = log/$pool.log.slow
287
288 ; The timeout for serving a single request after which a PHP backtrace will be
289 ; dumped to the 'slowlog' file. A value of '0s' means 'off'.
290 ; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
291 ; Default Value: 0
292 ;request_slowlog_timeout = 0
293
294 ; The timeout for serving a single request after which the worker process will
295 ; be killed. This option should be used when the 'max_execution_time' ini option
296 ; does not stop script execution for some reason. A value of '0' means 'off'.
297 ; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
298 ; Default Value: 0
299 ;request_terminate_timeout = 0
300
301 ; Set open file descriptor rlimit.
302 ; Default Value: system defined value
303 ;rlimit_files = 1024
304
305 ; Set max core size rlimit.
306 ; Possible Values: 'unlimited' or an integer greater or equal to 0
307 ; Default Value: system defined value
308 ;rlimit_core = 0
309
310 ; Chroot to this directory at the start. This value must be defined as an
311 ; absolute path. When this value is not set, chroot is not used.
312 ; Note: you can prefix with '$prefix' to chroot to the pool prefix or one
313 ; of its subdirectories. If the pool prefix is not set, the global prefix
314 ; will be used instead.
315 ; Note: chrooting is a great security feature and should be used whenever
316 ; possible. However, all PHP paths will be relative to the chroot
317 ; (error_log, sessions.save_path, ...).
318 ; Default Value: not set
319 ; chroot = $prefix
320
321 ; Chdir to this directory at the start.
322 ; Note: relative path can be used.
323 ; Default Value: current directory or / when chroot
324 ; chdir = /
325
326 ; Redirect worker stdout and stderr into main error log. If not set, stdout and
327 ; stderr will be redirected to /dev/null according to FastCGI specs.
328 ; Note: on highloaded environement, this can cause some delay in the page
329 ; process time (several ms).
330 ; Default Value: no
331 ;catch_workers_output = yes
332
333 ; Limits the extensions of the main script FPM will allow to parse. This can
334 ; prevent configuration mistakes on the web server side. You should only limit
335 ; FPM to .php extensions to prevent malicious users to use other extensions to
336 ; exectute php code.
337 ; Note: set an empty value to allow all extensions.
338 ; Default Value: .php
339 ;security.limit_extensions = .php .php3 .php4 .php5
340
341 ; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from
342 ; the current environment.
343 ; Default Value: clean env
344 ;env[HOSTNAME] = $HOSTNAME
345 ;env[PATH] = /usr/local/bin:/usr/bin:/bin
346 ;env[TMP] = /tmp
347 ;env[TMPDIR] = /tmp
348 ;env[TEMP] = /tmp
349
350 ; Additional php.ini defines, specific to this pool of workers. These settings
351 ; overwrite the values previously defined in the php.ini. The directives are the
352 ; same as the PHP SAPI:
353 ; php_value/php_flag - you can set classic ini defines which can
354 ; be overwritten from PHP call 'ini_set'.
355 ; php_admin_value/php_admin_flag - these directives won't be overwritten by
356 ; PHP call 'ini_set'
357 ; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no.
358
359 ; Defining 'extension' will load the corresponding shared extension from
360 ; extension_dir. Defining 'disable_functions' or 'disable_classes' will not
361 ; overwrite previously defined php.ini values, but will append the new value
362 ; instead.
363
364 ; Note: path INI options can be relative and will be expanded with the prefix
365 ; (pool, global or /usr)
366
367 ; Default Value: nothing is defined by default except the values in php.ini and
368 ; specified at startup with the -d argument
369 ;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
370 ;php_flag[display_errors] = off
371 ;php_admin_value[error_log] = /var/log/php5-fpm/error.log
372 php_admin_value[error_log] = /dev/stderr
373 php_admin_flag[log_errors] = on
374 ;php_admin_value[memory_limit] = 32M
1 #!/bin/sh
2
3 set -e
4 apt-get update
5 apt-get install -y ssmtp sudo
6 #npm install -g gulp grunt
7
8 cp /tmp/files/entrypoint /root/entrypoint
1 #!/bin/bash
2
3 set -ex
4
5 node_home="$(getent passwd node | cut -f 6 -d :)"
6
7 if [[ $GID ]]; then
8 old_gid=$(getent group node | cut -f 3 -d :)
9 groupmod -g $GID node
10 find "$node_home" -gid $old_gid -print0 | xargs -0r chgrp node
11 fi
12 if [[ $UID ]]; then
13 usermod -u $UID node
14 fi
15 if [[ -e package.json ]]; then
16 sudo -u node npm install
17 fi
18 exec "$@"
1 FROM debian:stretch
2
3 COPY files/ /tmp/files/
4 RUN /tmp/files/configure
5
6 ADD https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar /usr/local/bin/wp
7 RUN ["chmod", "755", "/usr/local/bin/wp"]
8
9 ENTRYPOINT ["/root/entrypoint"]
10 CMD ["/usr/sbin/php-fpm7.0", "--nodaemonize", "--force-stderr", "--fpm-config", "/etc/php/7.0/fpm/php-fpm.conf"]
1 ; Per pool prefix
2 ; It only applies on the following directives:
3 ; - 'slowlog'
4 ; - 'listen' (unixsocket)
5 ; - 'chroot'
6 ; - 'chdir'
7 ; - 'php_values'
8 ; - 'php_admin_values'
9 ; When not set, the global prefix (or /usr) applies instead.
10 ; Note: This directive can also be relative to the global prefix.
11 ; Default Value: none
12 prefix = /srv/$pool
13
14 ; The address on which to accept FastCGI requests.
15 ; Valid syntaxes are:
16 ; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific address on
17 ; a specific port;
18 ; 'port' - to listen on a TCP socket to all addresses on a
19 ; specific port;
20 ; '/path/to/unix/socket' - to listen on a unix socket.
21 ; Note: This value is mandatory.
22 listen = 9000
23
24 ; Set listen(2) backlog.
25 ; Default Value: 128 (-1 on FreeBSD and OpenBSD)
26 ;listen.backlog = 128
27
28 ; Set permissions for unix socket, if one is used. In Linux, read/write
29 ; permissions must be set in order to allow connections from a web server. Many
30 ; BSD-derived systems allow connections regardless of permissions.
31 ; Default Values: user and group are set as the running user
32 ; mode is set to 0666
33 ;listen.owner = www-data
34 ;listen.group = www-data
35 ;listen.mode = 0666
36
37 ; List of ipv4 addresses of FastCGI clients which are allowed to connect.
38 ; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
39 ; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
40 ; must be separated by a comma. If this value is left blank, connections will be
41 ; accepted from any ip address.
42 ; Default Value: any
43 ;listen.allowed_clients = 127.0.0.1
44
45 ; Choose how the process manager will control the number of child processes.
46 ; Possible Values:
47 ; static - a fixed number (pm.max_children) of child processes;
48 ; dynamic - the number of child processes are set dynamically based on the
49 ; following directives. With this process management, there will be
50 ; always at least 1 children.
51 ; pm.max_children - the maximum number of children that can
52 ; be alive at the same time.
53 ; pm.start_servers - the number of children created on startup.
54 ; pm.min_spare_servers - the minimum number of children in 'idle'
55 ; state (waiting to process). If the number
56 ; of 'idle' processes is less than this
57 ; number then some children will be created.
58 ; pm.max_spare_servers - the maximum number of children in 'idle'
59 ; state (waiting to process). If the number
60 ; of 'idle' processes is greater than this
61 ; number then some children will be killed.
62 ; ondemand - no children are created at startup. Children will be forked when
63 ; new requests will connect. The following parameter are used:
64 ; pm.max_children - the maximum number of children that
65 ; can be alive at the same time.
66 ; pm.process_idle_timeout - The number of seconds after which
67 ; an idle process will be killed.
68 ; Note: This value is mandatory.
69 pm = ondemand
70
71 ; The number of child processes to be created when pm is set to 'static' and the
72 ; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'.
73 ; This value sets the limit on the number of simultaneous requests that will be
74 ; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
75 ; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
76 ; CGI. The below defaults are based on a server without much resources. Don't
77 ; forget to tweak pm.* to fit your needs.
78 ; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand'
79 ; Note: This value is mandatory.
80 pm.max_children = 10
81
82 ; The number of child processes created on startup.
83 ; Note: Used only when pm is set to 'dynamic'
84 ; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
85 pm.start_servers = 1
86
87 ; The desired minimum number of idle server processes.
88 ; Note: Used only when pm is set to 'dynamic'
89 ; Note: Mandatory when pm is set to 'dynamic'
90 pm.min_spare_servers = 1
91
92 ; The desired maximum number of idle server processes.
93 ; Note: Used only when pm is set to 'dynamic'
94 ; Note: Mandatory when pm is set to 'dynamic'
95 pm.max_spare_servers = 3
96
97 ; The number of seconds after which an idle process will be killed.
98 ; Note: Used only when pm is set to 'ondemand'
99 ; Default Value: 10s
100 ;pm.process_idle_timeout = 10s;
101
102 ; The number of requests each child process should execute before respawning.
103 ; This can be useful to work around memory leaks in 3rd party libraries. For
104 ; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
105 ; Default Value: 0
106 ;pm.max_requests = 500
107
108 ; The URI to view the FPM status page. If this value is not set, no URI will be
109 ; recognized as a status page. It shows the following informations:
110 ; pool - the name of the pool;
111 ; process manager - static, dynamic or ondemand;
112 ; start time - the date and time FPM has started;
113 ; start since - number of seconds since FPM has started;
114 ; accepted conn - the number of request accepted by the pool;
115 ; listen queue - the number of request in the queue of pending
116 ; connections (see backlog in listen(2));
117 ; max listen queue - the maximum number of requests in the queue
118 ; of pending connections since FPM has started;
119 ; listen queue len - the size of the socket queue of pending connections;
120 ; idle processes - the number of idle processes;
121 ; active processes - the number of active processes;
122 ; total processes - the number of idle + active processes;
123 ; max active processes - the maximum number of active processes since FPM
124 ; has started;
125 ; max children reached - number of times, the process limit has been reached,
126 ; when pm tries to start more children (works only for
127 ; pm 'dynamic' and 'ondemand');
128 ; Value are updated in real time.
129 ; Example output:
130 ; pool: www
131 ; process manager: static
132 ; start time: 01/Jul/2011:17:53:49 +0200
133 ; start since: 62636
134 ; accepted conn: 190460
135 ; listen queue: 0
136 ; max listen queue: 1
137 ; listen queue len: 42
138 ; idle processes: 4
139 ; active processes: 11
140 ; total processes: 15
141 ; max active processes: 12
142 ; max children reached: 0
143 ;
144 ; By default the status page output is formatted as text/plain. Passing either
145 ; 'html', 'xml' or 'json' in the query string will return the corresponding
146 ; output syntax. Example:
147 ; http://www.foo.bar/status
148 ; http://www.foo.bar/status?json
149 ; http://www.foo.bar/status?html
150 ; http://www.foo.bar/status?xml
151 ;
152 ; By default the status page only outputs short status. Passing 'full' in the
153 ; query string will also return status for each pool process.
154 ; Example:
155 ; http://www.foo.bar/status?full
156 ; http://www.foo.bar/status?json&full
157 ; http://www.foo.bar/status?html&full
158 ; http://www.foo.bar/status?xml&full
159 ; The Full status returns for each process:
160 ; pid - the PID of the process;
161 ; state - the state of the process (Idle, Running, ...);
162 ; start time - the date and time the process has started;
163 ; start since - the number of seconds since the process has started;
164 ; requests - the number of requests the process has served;
165 ; request duration - the duration in µs of the requests;
166 ; request method - the request method (GET, POST, ...);
167 ; request URI - the request URI with the query string;
168 ; content length - the content length of the request (only with POST);
169 ; user - the user (PHP_AUTH_USER) (or '-' if not set);
170 ; script - the main script called (or '-' if not set);
171 ; last request cpu - the %cpu the last request consumed
172 ; it's always 0 if the process is not in Idle state
173 ; because CPU calculation is done when the request
174 ; processing has terminated;
175 ; last request memory - the max amount of memory the last request consumed
176 ; it's always 0 if the process is not in Idle state
177 ; because memory calculation is done when the request
178 ; processing has terminated;
179 ; If the process is in Idle state, then informations are related to the
180 ; last request the process has served. Otherwise informations are related to
181 ; the current request being served.
182 ; Example output:
183 ; ************************
184 ; pid: 31330
185 ; state: Running
186 ; start time: 01/Jul/2011:17:53:49 +0200
187 ; start since: 63087
188 ; requests: 12808
189 ; request duration: 1250261
190 ; request method: GET
191 ; request URI: /test_mem.php?N=10000
192 ; content length: 0
193 ; user: -
194 ; script: /home/fat/web/docs/php/test_mem.php
195 ; last request cpu: 0.00
196 ; last request memory: 0
197 ;
198 ; Note: There is a real-time FPM status monitoring sample web page available
199 ; It's available in: ${prefix}/share/fpm/status.html
200 ;
201 ; Note: The value must start with a leading slash (/). The value can be
202 ; anything, but it may not be a good idea to use the .php extension or it
203 ; may conflict with a real PHP file.
204 ; Default Value: not set
205 ;pm.status_path = /status
206
207 ; The ping URI to call the monitoring page of FPM. If this value is not set, no
208 ; URI will be recognized as a ping page. This could be used to test from outside
209 ; that FPM is alive and responding, or to
210 ; - create a graph of FPM availability (rrd or such);
211 ; - remove a server from a group if it is not responding (load balancing);
212 ; - trigger alerts for the operating team (24/7).
213 ; Note: The value must start with a leading slash (/). The value can be
214 ; anything, but it may not be a good idea to use the .php extension or it
215 ; may conflict with a real PHP file.
216 ; Default Value: not set
217 ;ping.path = /ping
218
219 ; This directive may be used to customize the response of a ping request. The
220 ; response is formatted as text/plain with a 200 response code.
221 ; Default Value: pong
222 ;ping.response = pong
223
224 ; The access log file
225 ; Default: not set
226 ;access.log = log/$pool.access.log
227
228 ; The access log format.
229 ; The following syntax is allowed
230 ; %%: the '%' character
231 ; %C: %CPU used by the request
232 ; it can accept the following format:
233 ; - %{user}C for user CPU only
234 ; - %{system}C for system CPU only
235 ; - %{total}C for user + system CPU (default)
236 ; %d: time taken to serve the request
237 ; it can accept the following format:
238 ; - %{seconds}d (default)
239 ; - %{miliseconds}d
240 ; - %{mili}d
241 ; - %{microseconds}d
242 ; - %{micro}d
243 ; %e: an environment variable (same as $_ENV or $_SERVER)
244 ; it must be associated with embraces to specify the name of the env
245 ; variable. Some exemples:
246 ; - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e
247 ; - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e
248 ; %f: script filename
249 ; %l: content-length of the request (for POST request only)
250 ; %m: request method
251 ; %M: peak of memory allocated by PHP
252 ; it can accept the following format:
253 ; - %{bytes}M (default)
254 ; - %{kilobytes}M
255 ; - %{kilo}M
256 ; - %{megabytes}M
257 ; - %{mega}M
258 ; %n: pool name
259 ; %o: ouput header
260 ; it must be associated with embraces to specify the name of the header:
261 ; - %{Content-Type}o
262 ; - %{X-Powered-By}o
263 ; - %{Transfert-Encoding}o
264 ; - ....
265 ; %p: PID of the child that serviced the request
266 ; %P: PID of the parent of the child that serviced the request
267 ; %q: the query string
268 ; %Q: the '?' character if query string exists
269 ; %r: the request URI (without the query string, see %q and %Q)
270 ; %R: remote IP address
271 ; %s: status (response code)
272 ; %t: server time the request was received
273 ; it can accept a strftime(3) format:
274 ; %d/%b/%Y:%H:%M:%S %z (default)
275 ; %T: time the log has been written (the request has finished)
276 ; it can accept a strftime(3) format:
277 ; %d/%b/%Y:%H:%M:%S %z (default)
278 ; %u: remote user
279 ;
280 ; Default: "%R - %u %t \"%m %r\" %s"
281 ;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"
282
283 ; The log file for slow requests
284 ; Default Value: not set
285 ; Note: slowlog is mandatory if request_slowlog_timeout is set
286 ;slowlog = log/$pool.log.slow
287
288 ; The timeout for serving a single request after which a PHP backtrace will be
289 ; dumped to the 'slowlog' file. A value of '0s' means 'off'.
290 ; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
291 ; Default Value: 0
292 ;request_slowlog_timeout = 0
293
294 ; The timeout for serving a single request after which the worker process will
295 ; be killed. This option should be used when the 'max_execution_time' ini option
296 ; does not stop script execution for some reason. A value of '0' means 'off'.
297 ; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
298 ; Default Value: 0
299 ;request_terminate_timeout = 0
300
301 ; Set open file descriptor rlimit.
302 ; Default Value: system defined value
303 ;rlimit_files = 1024
304
305 ; Set max core size rlimit.
306 ; Possible Values: 'unlimited' or an integer greater or equal to 0
307 ; Default Value: system defined value
308 ;rlimit_core = 0
309
310 ; Chroot to this directory at the start. This value must be defined as an
311 ; absolute path. When this value is not set, chroot is not used.
312 ; Note: you can prefix with '$prefix' to chroot to the pool prefix or one
313 ; of its subdirectories. If the pool prefix is not set, the global prefix
314 ; will be used instead.
315 ; Note: chrooting is a great security feature and should be used whenever
316 ; possible. However, all PHP paths will be relative to the chroot
317 ; (error_log, sessions.save_path, ...).
318 ; Default Value: not set
319 ; chroot = $prefix
320
321 ; Chdir to this directory at the start.
322 ; Note: relative path can be used.
323 ; Default Value: current directory or / when chroot
324 ; chdir = /
325
326 ; Redirect worker stdout and stderr into main error log. If not set, stdout and
327 ; stderr will be redirected to /dev/null according to FastCGI specs.
328 ; Note: on highloaded environement, this can cause some delay in the page
329 ; process time (several ms).
330 ; Default Value: no
331 ;catch_workers_output = yes
332
333 ; Limits the extensions of the main script FPM will allow to parse. This can
334 ; prevent configuration mistakes on the web server side. You should only limit
335 ; FPM to .php extensions to prevent malicious users to use other extensions to
336 ; exectute php code.
337 ; Note: set an empty value to allow all extensions.
338 ; Default Value: .php
339 ;security.limit_extensions = .php .php3 .php4 .php5
340
341 ; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from
342 ; the current environment.
343 ; Default Value: clean env
344 ;env[HOSTNAME] = $HOSTNAME
345 ;env[PATH] = /usr/local/bin:/usr/bin:/bin
346 ;env[TMP] = /tmp
347 ;env[TMPDIR] = /tmp
348 ;env[TEMP] = /tmp
349
350 ; Additional php.ini defines, specific to this pool of workers. These settings
351 ; overwrite the values previously defined in the php.ini. The directives are the
352 ; same as the PHP SAPI:
353 ; php_value/php_flag - you can set classic ini defines which can
354 ; be overwritten from PHP call 'ini_set'.
355 ; php_admin_value/php_admin_flag - these directives won't be overwritten by
356 ; PHP call 'ini_set'
357 ; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no.
358
359 ; Defining 'extension' will load the corresponding shared extension from
360 ; extension_dir. Defining 'disable_functions' or 'disable_classes' will not
361 ; overwrite previously defined php.ini values, but will append the new value
362 ; instead.
363
364 ; Note: path INI options can be relative and will be expanded with the prefix
365 ; (pool, global or /usr)
366
367 ; Default Value: nothing is defined by default except the values in php.ini and
368 ; specified at startup with the -d argument
369 ;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
370 ;php_flag[display_errors] = off
371 ;php_admin_value[error_log] = /var/log/php5-fpm/error.log
372 php_admin_value[error_log] = /dev/stderr
373 php_admin_flag[log_errors] = on
374 ;php_admin_value[memory_limit] = 32M
1 #!/bin/sh
2
3 set -e
4 cp /tmp/files/default-release.conf /etc/apt/apt.conf.d/default-release
5 apt-get update
6 apt-get install -y ssmtp php7.0-fpm php7.0-mysql php7.0-imagick php7.0-ldap php7.0-xml php7.0-mbstring php7.0-mcrypt php7.0-gd php7.0-apc git ffmpeg ghostscript
7
8 rm /etc/php/7.0/fpm/pool.d/www.conf
9 cp -a /tmp/files/app-defaults.conf /etc/php/7.0/fpm
10
11 cp /tmp/files/entrypoint /root/entrypoint
12
13 addgroup hostgroup
14 adduser --gecos 'Host User' --ingroup hostgroup --disabled-password hostuser
15 su - hostuser -c 'git config --global user.email hostuser@php-fpm'
16 su - hostuser -c 'git config --global user.name "Host User"'
1 APT::Default-Release "stretch";
1 #!/bin/bash
2
3 set -ex
4
5 hostuser_home="$(getent passwd hostuser | cut -f 6 -d :)"
6
7 if [[ $GID ]]; then
8 old_gid=$(getent group hostgroup | cut -f 3 -d :)
9 groupmod -g $GID hostgroup
10 find "$hostuser_home" -gid $old_gid -print0 | xargs -0r chgrp hostgroup
11 fi
12 if [[ $UID ]]; then
13 usermod -u $UID hostuser
14 fi
15 mkdir -p /run/php
16
17 update_sapi_conf() {
18 declare sapi="$1" file
19 shift
20 find "/etc/php/7.0/$sapi/conf.d" -name '97-app-*' -delete
21 for file in /etc/php/7.0/app.conf.d/*; do
22 if [[ -r $file ]]; then
23 ln -sf "$file" "/etc/php/7.0/$sapi/conf.d/97-app-${file##*/}"
24 fi
25 done
26 }
27 update_sapi_conf fpm
28
29 exec "$@"
1 deb http://ftp.us.debian.org/debian/ stretch main contrib non-free
1 FROM debian:stretch-slim
2
3 COPY files/ /tmp/files
4 RUN /tmp/files/configure
5 EXPOSE 25
6 VOLUME ["/home"]
7 ENTRYPOINT ["/sbin/entrypoint"]
8 CMD ["/usr/lib/postfix/sbin/master", "-d"]
9
1 #!/bin/sh
2
3 set -e
4
5 apt-get update
6 apt-get install -y bsd-mailx postfix rsyslog
7
8 cp /tmp/files/rsyslog-stderr.conf /etc/rsyslog.d
9 cp /tmp/files/entrypoint /sbin/entrypoint
10
11 addgroup hostgroup
12 adduser --gecos 'Host User' --ingroup hostgroup --disabled-password hostuser
1 #!/bin/bash
2
3 set -ex
4
5 hostuser_home="$(getent passwd hostuser | cut -f 6 -d :)"
6
7 if [[ $GID ]]; then
8 old_gid=$(getent group hostgroup | cut -f 3 -d :)
9 groupmod -g $GID hostgroup
10 find "$hostuser_home" -gid $old_gid -print0 | xargs -0r chgrp hostgroup
11 fi
12 if [[ $UID ]]; then
13 usermod -u $UID hostuser
14 fi
15
16 HOSTNAME=$(hostname -f)
17
18 postconf -e \
19 "myhostname = ${POSTFIX_MAILNAME:-$HOSTNAME}" \
20 "myorigin = app" \
21 "mydestination = $HOSTNAME, localhost.localdomain, localhost, app" \
22 "mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 10.0.0.0/8 172.0.0.0/8 192.168.0.0/16"\
23 "inet_protocols = all" \
24 "relayhost = $POSTFIX_RELAYHOST" \
25 "virtual_maps = hash:/etc/postfix/virtual, regexp:/etc/postfix/virtual-regexp" \
26 "home_mailbox = Maildir/" \
27 && true
28
29 : > /etc/postfix/virtual
30 postmap /etc/postfix/virtual
31
32 : ${POSTFIX_FORWARD_APP:=hostuser+app@localhost}
33 : ${POSTFIX_FORWARD_CATCHALL:=hostuser+catchall@localhost}
34
35 POSTFIX_FORWARD_APP_quoted="$(echo "$POSTFIX_FORWARD_APP" | sed 's/\([][\\+*.$^()]\)/\\\1/g')"
36 POSTFIX_FORWARD_CATCHALL_quoted="$(echo "$POSTFIX_FORWARD_CATCHALL" | sed 's/\([][\\+*.$^()]\)/\\\1/g')"
37 (
38 echo "/.+@app/ $POSTFIX_FORWARD_APP"
39 if [[ $POSTFIX_CATCHALL ]]; then
40 echo "if !/^($POSTFIX_FORWARD_APP_quoted|$POSTFIX_FORWARD_CATCHALL_quoted)/"
41 echo "/.+@.+/ $POSTFIX_FORWARD_CATCHALL"
42 echo "endif"
43 fi
44 ) > /etc/postfix/virtual-regexp
45
46 cp /etc/resolv.conf /etc/services /var/spool/postfix/etc
47
48 /etc/init.d/rsyslog start
49 exec "$@"
1 FROM debian:stretch-slim
2
3 COPY files/ /tmp/files
4 RUN /tmp/files/configure
5 EXPOSE 80
6 #VOLUME ["/home"]
7 ENTRYPOINT ["/sbin/entrypoint"]
8 CMD ["/usr/sbin/apache2", "-D", "NO_DETACH"]
9
1 #!/bin/sh
2
3 set -e
4
5 export DEBIAN_FRONTEND=noninteractive
6
7 apt-get update
8 apt-get install -y ssmtp roundcube-sqlite3 roundcube roundcube-plugins
9
10 sed -i "/default_host/c\$config['default_host'] = 'imap';" /etc/roundcube/config.inc.php
11 sed -i "/smtp_server/c\$config['smtp_server'] = 'smtp';" /etc/roundcube/config.inc.php
12
13 for plugin in jqueryui zipdownload; do
14 cp -a /var/lib/roundcube/plugins/$plugin/config.inc.php.dist /etc/roundcube/plugins/$plugin
15 done
16
17 cp /tmp/files/apache-mail-container.conf /etc/apache2/conf-enabled
18
19 cp /tmp/files/entrypoint /sbin/entrypoint
20
21 addgroup hostgroup
22 adduser --gecos 'Host User' --ingroup hostgroup --disabled-password hostuser
1 #!/bin/bash
2
3 set -ex
4
5 hostuser_home="$(getent passwd hostuser | cut -f 6 -d :)"
6
7 if [[ $GID ]]; then
8 old_gid=$(getent group hostgroup | cut -f 3 -d :)
9 groupmod -g $GID hostgroup
10 find "$hostuser_home" -gid $old_gid -print0 | xargs -0r chgrp hostgroup
11 fi
12 if [[ $UID ]]; then
13 usermod -u $UID hostuser
14 fi
15
16 . /etc/apache2/envvars
17
18 exec "$@"