From 4803bef6cc821bbcaa7a8c2dfc1e40359a1ca116 Mon Sep 17 00:00:00 2001 From: Adam Stankiewicz Date: Fri, 24 Sep 2021 04:18:42 +0200 Subject: [PATCH] Simplify wrapper script --- config/containers/multi-service_container.md | 41 +++++--------------- 1 file changed, 9 insertions(+), 32 deletions(-) diff --git a/config/containers/multi-service_container.md b/config/containers/multi-service_container.md index 38396f01e0..566d879b5a 100644 --- a/config/containers/multi-service_container.md +++ b/config/containers/multi-service_container.md @@ -38,39 +38,16 @@ this in a few different ways. #!/bin/bash # Start the first process - ./my_first_process -D - status=$? - if [ $status -ne 0 ]; then - echo "Failed to start my_first_process: $status" - exit $status - fi - + ./my_first_process & + # Start the second process - ./my_second_process -D - status=$? - if [ $status -ne 0 ]; then - echo "Failed to start my_second_process: $status" - exit $status - fi - - # Naive check runs checks once a minute to see if either of the processes exited. - # This illustrates part of the heavy lifting you need to do if you want to run - # more than one service in a container. The container exits with an error - # if it detects that either of the processes has exited. - # Otherwise it loops forever, waking up every 60 seconds - - while sleep 60; do - ps aux |grep my_first_process |grep -q -v grep - PROCESS_1_STATUS=$? - ps aux |grep my_second_process |grep -q -v grep - PROCESS_2_STATUS=$? - # If the greps above find anything, they exit with 0 status - # If they are not both 0, then something is wrong - if [ $PROCESS_1_STATUS -ne 0 -o $PROCESS_2_STATUS -ne 0 ]; then - echo "One of the processes has already exited." - exit 1 - fi - done + ./my_second_process & + + # Wait for any process to exit + wait -n + + # Exit with status of process that exited first + exit $? ``` Next, the Dockerfile: