94 lines
2.6 KiB
Batchfile
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
|