-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdocker-compose
executable file
·53 lines (40 loc) · 1.83 KB
/
docker-compose
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/bin/bash
set -e
STATE="$1"
FILES="$2"
prev_containers_file="$FILES"/tmp/prev_containers.list
case "$STATE" in
NeedsArtifactReboot)
echo "No"
;;
SupportsRollback)
echo "Yes"
;;
Download)
command -v docker >/dev/null 2>&1 || { echo >&2 "ERROR: Must have docker installed to run this update module."; exit 1; }
command -v docker-compose >/dev/null 2>&1 || { echo >&2 "ERROR: Must have docker-compose installed to run this update module."; exit 1; }
;;
ArtifactInstall)
>&2 echo "Storing reference on running containers for rollback to $prev_containers_file"
docker ps -q > "$prev_containers_file"
>&2 echo "Running docker compose"
COMPOSE_FILE=$(jq -r ".compose_file" "$FILES"/header/meta-data)
PROJECT_NAME=$(jq -r ".project_name" "$FILES"/header/meta-data)
ENVFILE=$(jq -r ".envfile" "$FILES"/header/meta-data)
docker-compose --file "$FILES"/files/"$COMPOSE_FILE" --env-file "$FILES"/files/"$ENVFILE" --project-name "$PROJECT_NAME" pull
docker-compose --file "$FILES"/files/"$COMPOSE_FILE" --env-file "$FILES"/files/"$ENVFILE" --project-name "$PROJECT_NAME" up --detach --no-color --remove-orphans
;;
ArtifactRollback)
>&2 echo "Container rollback started"
[ -f "$prev_containers_file" ] || (>&2 echo "ERROR: Failed to find rollback reference file [$prev_containers_file]" && exit 1)
>&2 echo "Stopping all running containers"
[ -n "$(docker ps -q)" ] && docker stop "$(docker ps -q)"
>&2 echo "Starting containers running prior to the update"
[ -n "$(cat $prev_containers_file)" ] && docker start "$(cat $prev_containers_file)"
;;
ArtifactCommit)
>&2 echo "Running docker cleanup"
docker system prune --force
;;
esac
exit 0