Sample Header Ad - 728x90

docker-compose, less and SIGINT

4 votes
1 answer
1247 views
I have a script that boots up a test environment using `docker-compose`. This script pipes the mixed stdout of many docker containers on stdout through less: # This is part of a larger script with some setup and teardown. $ docker-compose up --build | less +F -r `less shows an undesired behavior here: When hitting Ctrl+C, docker-compose receives it and shuts down itself. Desired behaviour is only to interrupt the following (+F) feature of less` (like it does when viewing e.g. a large log). **What I want to achieve in the optimal case: Interrupt the following with the first Ctrl+C and quit the whole test environment on the second Ctrl+C.** I've toyed a bit around and tried the following things: - Register a `trap 'do_exit' SIGINT that would implement the logic above. docker-compose` however still exited upon Ctrl+C. - Use `trap '' SIGINT to catch SIGNT totally. docker-compose` however still got the Ctrl+C out of thin air. *Another observation:* This works in `zsh: (trap '' SIGINT && docker-compose up --build | less +F -r)` (it does not react to SIGINT at all) The same line behaves differently in bash and is killed by SIGINT. Here is the full (buggy) script for reference: #!/usr/bin/env bash service_name=xxx for dir in ../1 ../2 ../3; do if [ ! -d "$dir" ]; then echo "docker compose requires $dir, please check $dir do exist in the same folder level" exit 0 fi done docker-compose up --build | less +F -r if [ ! $? -eq 0 ]; then echo "Couldn't start service or Control-C was pressed" echo "cleaning up" docker-compose down exit $? fi docker-compose rm --all --force Any solution or experiences with this? -- Edit: I've also tried the solutions here without any success: - https://unix.stackexchange.com/questions/197199/is-there-any-way-to-exit-less-follow-mode-without-stopping-other-processes-in - https://unix.stackexchange.com/questions/26826/follow-a-pipe-using-less/139295#139295
Asked by Sahib (141 rep)
Mar 6, 2018, 10:04 AM
Last activity: Jan 31, 2020, 08:25 AM