1
0
mirror of https://github.com/phusion/baseimage-docker.git synced 2026-03-28 21:38:41 +00:00

Merge pull request #385 from jsravn/fix-kill-timeouts

Fix kill timeouts
This commit is contained in:
Travis Rowland
2017-04-07 03:52:41 -07:00
committed by GitHub
2 changed files with 18 additions and 2 deletions

View File

@@ -201,6 +201,22 @@ In `Dockerfile`:
RUN chmod +x /etc/my_init.d/logtime.sh RUN chmod +x /etc/my_init.d/logtime.sh
<a name="environment_variables"></a> <a name="environment_variables"></a>
#### Shutting down your process
`/sbin/my_init` handles termination of children processes at shutdown. When it receives a SIGTERM
it will pass the signal onto the child processes for correct shutdown. If your process is started with
a shell script, make sure you `exec` the actual process, otherwise the shell will receive the signal
and not your process.
`/sbin/my_init` will terminate processes after a 5 second timeout. This can be adjusted by setting
environment variables:
# Give children processes 5 minutes to timeout
ENV KILL_PROCESS_TIMEOUT=300
# Give all other processes (such as those which have been forked) 5 minutes to timeout
ENV KILL_ALL_PROCESSES_TIMEOUT=300
### Environment variables ### Environment variables
If you use `/sbin/my_init` as the main container command, then any environment variables set with `docker run --env` or with the `ENV` command in the Dockerfile, will be picked up by `my_init`. These variables will also be passed to all child processes, including `/etc/my_init.d` startup scripts, Runit and Runit-managed services. There are however a few caveats you should be aware of: If you use `/sbin/my_init` as the main container command, then any environment variables set with `docker run --env` or with the `ENV` command in the Dockerfile, will be picked up by `my_init`. These variables will also be passed to all child processes, including `/etc/my_init.d` startup scripts, Runit and Runit-managed services. There are however a few caveats you should be aware of:

View File

@@ -1,8 +1,8 @@
#!/usr/bin/python3 -u #!/usr/bin/python3 -u
import os, os.path, sys, stat, signal, errno, argparse, time, json, re import os, os.path, sys, stat, signal, errno, argparse, time, json, re
KILL_PROCESS_TIMEOUT = os.environ.get('KILL_PROCESS_TIMEOUT', 5) KILL_PROCESS_TIMEOUT = int(os.environ.get('KILL_PROCESS_TIMEOUT', 5))
KILL_ALL_PROCESSES_TIMEOUT = os.environ.get('KILL_ALL_PROCESSES_TIMEOUT', 5) KILL_ALL_PROCESSES_TIMEOUT = int(os.environ.get('KILL_ALL_PROCESSES_TIMEOUT', 5))
LOG_LEVEL_ERROR = 1 LOG_LEVEL_ERROR = 1
LOG_LEVEL_WARN = 1 LOG_LEVEL_WARN = 1