@echo off call :%* exit /B 0 :prepare_container set SERVICE_NAME=%1 set SERVICE_DISPLAY=%2 echo Preparing the %SERVICE_DISPLAY% service or Docker container ... echo Checking to see if %SERVICE_DISPLAY% service exists ... set CONTAINER_ID= for /f %%i in ('docker-compose --project-directory "%DOCKER_COMPOSE_DIR%" ps -q %SERVICE_NAME%') do set CONTAINER_ID=%%i set CONTAINER_CREATED= set CONTAINER_STARTED= if "%CONTAINER_ID%" == "" ( call :create_container %* ) else ( call :check_container %* ) exit /B :create_container set SERVICE_NAME=%1 set SERVICE_DISPLAY=%2 set CONTAINER_CREATED=1 echo %SERVICE_DISPLAY% service does not exist; creating and starting it ... docker-compose --project-directory "%DOCKER_COMPOSE_DIR%" up --detach --no-deps %SERVICE_NAME% echo Getting new %SERVICE_DISPLAY% service container ID ... for /f %%i in ('docker-compose --project-directory "%DOCKER_COMPOSE_DIR%" ps -q %SERVICE_NAME%') do set CONTAINER_ID=%%i echo Found %SERVICE_DISPLAY% Docker container: %CONTAINER_ID% exit /B :check_container set SERVICE_NAME=%1 set SERVICE_DISPLAY=%2 echo Found %SERVICE_DISPLAY% Docker container: %CONTAINER_ID% echo Checking to see if %SERVICE_DISPLAY% service is running ... set CONTAINER_TOP= for /f %%i in ('docker-compose --project-directory "%DOCKER_COMPOSE_DIR%" ps -q %SERVICE_NAME%') do set CONTAINER_TOP=%%i if "%CONTAINER_TOP%" == "" ( call :start_container %* ) else ( echo %SERVICE_DISPLAY% service is running; will perform a hot backup ... ) exit /B :start_container set SERVICE_NAME=%1 set SERVICE_DISPLAY=%2 set CONTAINER_STARTED=1 echo %SERVICE_DISPLAY% service is not running; starting it ... docker-compose --project-directory "%DOCKER_COMPOSE_DIR%" start %SERVICE_NAME% exit /B :unwind_container set SERVICE_NAME=%1 set SERVICE_DISPLAY=%2 set CONTAINER_CREATED=%3 set CONTAINER_STARTED=%4 echo Unwinding the %SERVICE_DISPLAY% service or Docker container ... if "%CONTAINER_CREATED%" == "1" ( echo %SERVICE_DISPLAY% service did not exist; stopping and destorying it ... docker-compose --project-directory "%DOCKER_COMPOSE_DIR%" rm --stop --force %SERVICE_NAME% ) if "%CONTAINER_STARTED%" == "1" ( echo %SERVICE_DISPLAY% service was not running; stopping it ... docker-compose --project-directory "%DOCKER_COMPOSE_DIR%" stop %SERVICE_NAME% ) exit /B :wait_container_postgres set CONTAINER_ID=%1 echo Waiting for PostgreSQL database to become available ... docker container exec %CONTAINER_ID% sh -c "until [ -f /var/run/postgresql/.s.PGSQL.5432.lock ]; do sleep 1; done" exit /B