Chris@1569
|
1 #!/bin/bash
|
Chris@1569
|
2
|
Chris@1586
|
3 mydir=$(dirname "$0")
|
Chris@1586
|
4
|
Chris@1574
|
5 dbpwd="$1"
|
Chris@1574
|
6 if [ -z "$dbpwd" ]; then
|
Chris@1574
|
7 echo "Usage: $0 <database-password>" 1>&2
|
Chris@1574
|
8 exit 2
|
Chris@1574
|
9 fi
|
Chris@1574
|
10
|
Chris@1587
|
11 set -eu -o pipefail
|
Chris@1569
|
12
|
Chris@1587
|
13 rootdir="$mydir/../.."
|
Chris@1586
|
14
|
Chris@1587
|
15 deploydir="$rootdir"/deploy
|
Chris@1581
|
16 if [ ! -d "$deploydir" ]; then
|
Chris@1586
|
17 echo "ERROR: Unexpected repository layout - expected directory at $deploydir"
|
Chris@1569
|
18 exit 2
|
Chris@1569
|
19 fi
|
Chris@1569
|
20
|
Chris@1581
|
21 managerdir="$deploydir/docker"
|
Chris@1581
|
22 if [ ! -d "$managerdir" ]; then
|
Chris@1581
|
23 echo "ERROR: Required directory $managerdir not found"
|
Chris@1581
|
24 exit 2
|
Chris@1581
|
25 fi
|
Chris@1581
|
26
|
Chris@1581
|
27 configdir="$deploydir/config"
|
Chris@1581
|
28 if [ ! -d "$configdir" ]; then
|
Chris@1581
|
29 echo "ERROR: Required directory $configdir not found"
|
Chris@1581
|
30 exit 2
|
Chris@1581
|
31 fi
|
Chris@1581
|
32
|
Chris@1586
|
33 if [ ! -f "$rootdir/postgres-dumpall" ]; then
|
Chris@1586
|
34 echo "ERROR: I expect to find a Postgres SQL multi-db dump file in $rootdir/postgres-dumpall"
|
Chris@1586
|
35 exit 2
|
Chris@1586
|
36 fi
|
Chris@1586
|
37
|
Chris@1586
|
38 fontdir="$rootdir"/public/themes/soundsoftware/stylesheets/fonts
|
Chris@1586
|
39 if [ ! -f "$fontdir/24BC0E_0_0.woff" ]; then
|
Chris@1586
|
40 echo "ERROR: I expect to find necessary webfonts in $fontdir"
|
Chris@1581
|
41 exit 2
|
Chris@1581
|
42 fi
|
Chris@1581
|
43
|
Chris@1574
|
44 for f in database.yml code.conf ; do
|
Chris@1587
|
45 cat "$configdir/$f.in" |
|
Chris@1574
|
46 sed 's/INSERT_POSTGRES_PASSWORD_HERE/'"$dbpwd"'/g' > \
|
Chris@1587
|
47 "$configdir/$f"
|
Chris@1574
|
48 done
|
Chris@1574
|
49
|
Chris@1587
|
50 provisioning_commands=$(
|
Chris@1587
|
51 for x in "$deploydir"/provision.d/[0-9]*; do
|
Chris@1587
|
52 echo "RUN /bin/bash /var/www/code/deploy/provision.d/$(basename $x)"
|
Chris@1587
|
53 done | sed 's/$/\\n/' | fmt -2000 | sed 's/ RUN/RUN/g' )
|
Chris@1587
|
54
|
Chris@1587
|
55 ( echo
|
Chris@1587
|
56 echo "### DO NOT EDIT THIS FILE - it is generated from Dockerfile.in"
|
Chris@1587
|
57 echo
|
Chris@1587
|
58 ) > "$managerdir/Dockerfile"
|
Chris@1587
|
59
|
Chris@1587
|
60 cat "$managerdir/Dockerfile.in" |
|
Chris@1587
|
61 sed 's,INSERT_PROVISIONING_HERE,'"$provisioning_commands"',' >> \
|
Chris@1587
|
62 "$managerdir/Dockerfile"
|
Chris@1587
|
63
|
Chris@1586
|
64 cd "$rootdir"
|
Chris@1586
|
65
|
Chris@1569
|
66 dockertag="cannam/soundsoftware-site"
|
Chris@1569
|
67
|
Chris@1587
|
68 sudo docker build -t "$dockertag" -f "deploy/docker/Dockerfile" .
|
Chris@1571
|
69 sudo docker run -p 8080:80 -d "$dockertag"
|
Chris@1569
|
70
|