concurrently icon indicating copy to clipboard operation
concurrently copied to clipboard

Teardown command?

Open FezVrasta opened this issue 1 year ago • 3 comments

I'm trying to run a docker container along with a node.js server, and I would like to stop the container when the user stops the node.js server script.

"dev": "concurrently 'node server.js' 'docker start -i database'"

Unfortunately Docker doesn't properly shuts down the container when CTRL+C is pressed, even though it does it when I run the docker command directly.

Would it be possible to add a --teardown option that allows to specify a script to run when the process is interrupted (CTRL+C is pressed)?

"dev": "concurrently --teardown 'docker kill database' 'node server.js' 'docker start -i database'"

FezVrasta avatar Apr 25 '24 09:04 FezVrasta

Hey, thanks for the report. I'm interested in this bit:

Docker doesn't properly shuts down the container when CTRL+C is pressed, even though it does it when I run the docker command directly.

Does it stop the container when you press ctrl+c? If yes - I think it's probably best if we fixed concurrently, instead of adding another option.

Testing with a mysql image, it ignores every ctrl+c when in interactive mode.

gustavohenke avatar Apr 25 '24 10:04 gustavohenke

CleanShot 2024-04-25 at 2  43 57@2x

I see the container is properly shut down on CTRL+C on macOS. I'm using the postgres image though.

FezVrasta avatar Apr 25 '24 12:04 FezVrasta

Investigated this for a bit.

I imagine docker is adapting its behaviour when it's not running from a TTY, in which case to stop the container/clean shutdown, the options are

  1. Fake a TTY output. This is probably going to affect other commands in unexpected ways.
  2. Introduce a teardown command. It's new functionality, so not affecting any users. Some interactions need thinking (prefixing, whether it affects exit code, etc)

Sounds like a teardown command is the best option.

gustavohenke avatar Jul 22 '24 22:07 gustavohenke