forked from ohardy/dokku-psql
-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathfunctions
executable file
·84 lines (70 loc) · 2.43 KB
/
functions
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
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
APP="$2"
PSQL_CONTAINER_NAME="psql-single-container"
PSQL_PORT=5432
PSQL_HOST=postgres
check_already_exists() {
[[ -f "$PSQL_ROOT/db_$APP" ]] && echo "Database for $APP already exists" && exit 1
}
check_exists() {
[[ ! -f "$PSQL_ROOT/db_$APP" ]] && echo "No database configured for $APP" && exit 1
}
check_app() {
[[ -z "$APP" ]] && echo "Please specify an app to run the command on" && exit 1
}
check_container() {
[[ -z "$PSQL_ID" ]] && echo "Postgresql container not started. Start with dokku psql:start" && exit 1
}
load_container_id() {
PSQL_ID=$(docker ps -f status=running | grep "$PSQL_CONTAINER_NAME" | awk '{print $1}') || true
}
db_url() {
local APP="$1"
local DATABASE=$(cat "$PSQL_ROOT/db_$APP")
local PASSWORD=$(cat "$PSQL_ROOT/pass_$APP")
echo "postgresql://${DATABASE}:${PASSWORD}@${PSQL_HOST}:${PSQL_PORT}/${DATABASE}"
}
database_name() {
echo "db_$1" | tr .- _
}
env_for() {
local APP="$1"
if [[ -f "$PSQL_ROOT/db_$APP" ]] && [[ -f "$PSQL_ROOT/pass_$APP" ]]; then
local URL=$(db_url "$APP")
local DATABASE=$(cat "$PSQL_ROOT/db_$APP")
local PASSWORD=$(cat "$PSQL_ROOT/pass_$APP")
echo "DATABASE_URL=$URL POSTGRESQL_URL=$URL DB_TYPE=postgresql DB_HOST=$PSQL_HOST DB_PORT=$PSQL_PORT DB_NAME=$DATABASE DB_USER=$DATABASE DB_PASS=$PASSWORD"
fi
}
set_link_and_env_for() {
local SOURCE="$1"
local TARGET=${2:-$SOURCE}
dokku docker-options:add "$TARGET" build,deploy,run "--link $PSQL_CONTAINER_NAME:$PSQL_HOST"
dokku_log_info1 "Setting config vars for $TARGET"
dokku config:set --no-restart "$TARGET" $(env_for "$SOURCE") &> /dev/null
}
unset_link_and_env_for() {
local APP="$1"
dokku docker-options:remove "$APP" build,deploy,run "--link $PSQL_CONTAINER_NAME:$PSQL_HOST"
dokku_log_info1 "Unsetting config vars for $APP"
dokku config:unset --no-restart "$APP" DATABASE_URL POSTGRESQL_URL DB_TYPE DB_HOST DB_PORT DB_NAME DB_USER DB_PASS &> /dev/null
}
export_psql_image() {
PSQL_IMAGE="$(dokku config:get --global PSQL_SC_IMAGE)" || true
PSQL_IMAGE="${PSQL_IMAGE:-postgres:9.3}"
export PSQL_IMAGE
}
export_psql_root() {
PSQL_ROOT="$(dokku config:get --global PSQL_SC_ROOT)" || true
PSQL_ROOT="${PSQL_ROOT:-$DOKKU_ROOT/.psql-sc}"
export PSQL_ROOT
}
bind_ip_options() {
local BIND_IP=$(dokku config:get --global PSQL_SC_BIND_IP)
if [[ -n $BIND_IP ]]; then
echo "-p $BIND_IP:$PSQL_PORT:$PSQL_PORT"
else
echo ''
fi
}