-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path10-boot-conf
executable file
·110 lines (97 loc) · 3.46 KB
/
10-boot-conf
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
105
106
107
108
109
110
#!/bin/bash
set -e
set -x
# Update Diaspora
pushd /srv/diaspora/diaspora
su diaspora -c 'cd /srv/diaspora/diaspora && git checkout Gemfile.lock db/schema.rb'
su diaspora -c 'cd /srv/diaspora/diaspora && git pull'
su diaspora -c 'source "$HOME/.rvm/scripts/rvm" && cd /srv/diaspora/diaspora && RAILS_ENV=production DB=mysql bin/bundle install --without test development'
popd
# Run preconfiguration script
pushd /srv/diaspora/diaspora
if [ -e /config/script.pre ]; then
echo "Applying pre-configuration script..."
chgrp diaspora /config/script.pre
chmod g+rx /config/script.pre
su diaspora -c 'cd /srv/diaspora/diaspora && /config/script.pre'
fi
popd
# Copy example files to /config
echo "Copying example files to /config..."
cp /srv/diaspora/diaspora/config/database.yml.example /config/database.yml.example
cp /srv/diaspora/diaspora/config/diaspora.yml.example /config/diaspora.yml.example
MISSING_CONF=""
if [ ! -e /config/domain_name ]; then
MISSING_CONF="${MISSING_CONF}Missing domain name config file at /config/domain_name"
fi
if [ ! -e /config/database.yml ]; then
MISSING_CONF="${MISSING_CONF}Missing database configuration file at /config/database.yml"
else
cp /config/database.yml /srv/diaspora/diaspora/config/database.yml
chgrp diaspora /srv/diaspora/diaspora/config/database.yml
chmod g+rx /srv/diaspora/diaspora/config/database.yml
fi
if [ ! -e /config/diaspora.yml ]; then
MISSING_CONF="${MISSING_CONF}Missing database configuration file at /config/diaspora.yml"
else
cp /config/diaspora.yml /srv/diaspora/diaspora/config/diaspora.yml
chgrp diaspora /srv/diaspora/diaspora/config/diaspora.yml
chmod g+rx /srv/diaspora/diaspora/config/diaspora.yml
fi
if [ "$MISSING_CONF" != "" ]; then
echo "+++++ MISSING CONFIGURATION +++++"
echo ""
echo "You are missing the following configuration "
echo "files:"
echo ""
echo "$MISSING_CONF"
echo ""
echo "You must specify a configuration settings for "
echo "this Docker image. To do so: "
echo ""
echo " 1) Create the required files in a directory "
echo " called 'config', somewhere on the host. "
echo ""
echo " 2) Run this Docker instance again with "
echo " -v path/to/config:/config passed as an "
echo " argument."
echo ""
echo "+++++ BOOT FAILED! +++++"
exit 1
fi
# Perform database installation or upgrade
cat >/diaspora_upgrade <<EOF
set -e
echo "Sourcing RVM..."
source "\$HOME/.rvm/scripts/rvm"
echo "Changing directory to /srv/diaspora/diaspora..."
cd /srv/diaspora/diaspora
set +e
echo "Attempting DB upgrade..."
RAILS_ENV=production DB=mysql bin/rake db:migrate 2>&1 | tee /srv/diaspora/db_upgrade
DB_UPGRADE_STATUS=\${PIPESTATUS[0]}
if [ "\$DB_UPGRADE_STATUS" != "0" ]; then
DB_UPGRADE_FAILURE_REASON=\$(cat /srv/diaspora/db_upgrade | awk '/ActiveRecord::NoDatabaseError/')
if [ "\$DB_UPGRADE_FAILURE_REASON" != "" ]; then
echo "Upgrade failed because the database does not exist. Installing schema..."
set -e
RAILS_ENV=production DB=mysql bin/rake db:create db:schema:load 2>&1 | tee /srv/diaspora/db_install
else
echo "Database upgrade failed for some other reason!"
exit 1
fi
else
echo "DB upgrade completed successfully."
set -e
fi
echo "Performing static asset compilation..."
RAILS_ENV=production DB=mysql bin/rake assets:precompile
exit 0
EOF
chmod a+rx /diaspora_upgrade
su diaspora -c "/diaspora_upgrade"
EXITCODE=$?
if [ $EXITCODE -ne 0 ]; then
echo "Upgrade Diaspora script exited with non-zero exit code"
exit $EXITCODE
fi