forked from goldor8/custom-docker-compose-ssh-deployment
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathentrypoint.sh
More file actions
104 lines (84 loc) · 2.58 KB
/
entrypoint.sh
File metadata and controls
104 lines (84 loc) · 2.58 KB
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#!/usb/bin/env bash
set -e
log() {
echo ">> [local]" "$@"
}
cleanup() {
set +e
log "Killing ssh agent."
ssh-agent -k
log "Removing workspace archive."
rm -f /tmp/workspace.tar.bz2
}
trap cleanup EXIT
log 'Exporting environment variables...';
echo "$EXPORTS" | tr ";" "\n" > .env;
log "Packing workspace into archive to transfer onto remote machine."
tar cjvf /tmp/workspace.tar.bz2 $TAR_PACKAGE_OPERATION_MODIFIERS .
rm .env
if ! $LOCAL_MODE
then
log "Launching ssh agent."
eval `ssh-agent -s`
ssh-add <(echo "$SSH_PRIVATE_KEY")
fi
remote_command="set -e;
workdir=\"\$HOME/$DIRECTORY\";
log() {
echo '>> [remote]' \$@ ;
};
log \"\$(env)\";
if [ -d \$workdir ]
then
log 'Deleting workspace directory...';
rm -rf \$workdir;
fi
log 'Creating workspace directory...';
mkdir \$workdir;
log 'Unpacking workspace...';
tar -C \$workdir -xjv;
cd \$workdir;
log 'Launching docker compose...';
if $ZERO_DOWN_TIME
then
log 'Launching scaling containers.';
docker compose -f \"$DOCKER_COMPOSE_FILENAME\" up -d --scale $DOCKER_CONTAINER_NAME=2
else
log 'Executing docker compose down...';
docker compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" down
fi
if [ -n \"$DOCKERHUB_USERNAME\" ] && [ -n \"$DOCKERHUB_PASSWORD\" ]
then
log 'Executing docker login...';
docker login -u \"$DOCKERHUB_USERNAME\" -p \"$DOCKERHUB_PASSWORD\"
fi
log 'Executing docker compose pull...';
docker compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" pull
if $NO_CACHE
then
docker compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" build --no-cache;
if $ZERO_DOWN_TIME
then
docker compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" up -d --remove-orphans --force-recreate --scale $DOCKER_CONTAINER_NAME=1 --no-recreate $DOCKER_CONTAINER_NAME;
else
docker compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" up -d --remove-orphans --force-recreate;
fi
else
if $ZERO_DOWN_TIME
then
docker compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" up -d --remove-orphans --build --scale $DOCKER_CONTAINER_NAME=1 --no-recreate $DOCKER_CONTAINER_NAME;
else
docker compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" up -d --remove-orphans --build;
fi
fi"
if $LOCAL_MODE
then
log "Running in local mode."
bash "$remote_command"
else
log "Connecting to remote host."
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ServerAliveInterval=100 \
"$SSH_USER@$SSH_HOST" -p "$SSH_PORT" \
"$remote_command" \
< /tmp/workspace.tar.bz2
fi