94 lines
2.6 KiB
Batchfile

@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