Chris@1569: #!/bin/bash Chris@1569: Chris@1586: mydir=$(dirname "$0") Chris@1586: Chris@1574: dbpwd="$1" Chris@1574: if [ -z "$dbpwd" ]; then Chris@1574: echo "Usage: $0 " 1>&2 Chris@1574: exit 2 Chris@1574: fi Chris@1574: Chris@1587: set -eu -o pipefail Chris@1569: Chris@1587: rootdir="$mydir/../.." Chris@1586: Chris@1587: deploydir="$rootdir"/deploy Chris@1581: if [ ! -d "$deploydir" ]; then Chris@1586: echo "ERROR: Unexpected repository layout - expected directory at $deploydir" Chris@1569: exit 2 Chris@1569: fi Chris@1569: Chris@1581: managerdir="$deploydir/docker" Chris@1581: if [ ! -d "$managerdir" ]; then Chris@1581: echo "ERROR: Required directory $managerdir not found" Chris@1581: exit 2 Chris@1581: fi Chris@1581: Chris@1581: configdir="$deploydir/config" Chris@1581: if [ ! -d "$configdir" ]; then Chris@1581: echo "ERROR: Required directory $configdir not found" Chris@1581: exit 2 Chris@1581: fi Chris@1581: Chris@1586: if [ ! -f "$rootdir/postgres-dumpall" ]; then Chris@1586: echo "ERROR: I expect to find a Postgres SQL multi-db dump file in $rootdir/postgres-dumpall" Chris@1586: exit 2 Chris@1586: fi Chris@1586: Chris@1586: fontdir="$rootdir"/public/themes/soundsoftware/stylesheets/fonts Chris@1586: if [ ! -f "$fontdir/24BC0E_0_0.woff" ]; then Chris@1586: echo "ERROR: I expect to find necessary webfonts in $fontdir" Chris@1581: exit 2 Chris@1581: fi Chris@1581: Chris@1574: for f in database.yml code.conf ; do Chris@1587: cat "$configdir/$f.in" | Chris@1574: sed 's/INSERT_POSTGRES_PASSWORD_HERE/'"$dbpwd"'/g' > \ Chris@1587: "$configdir/$f" Chris@1574: done Chris@1574: Chris@1587: provisioning_commands=$( Chris@1590: for x in "$deploydir"/provision.d/[0-9]*.sh; do Chris@1587: echo "RUN /bin/bash /var/www/code/deploy/provision.d/$(basename $x)" Chris@1587: done | sed 's/$/\\n/' | fmt -2000 | sed 's/ RUN/RUN/g' ) Chris@1587: Chris@1587: ( echo Chris@1587: echo "### DO NOT EDIT THIS FILE - it is generated from Dockerfile.in" Chris@1587: echo Chris@1587: ) > "$managerdir/Dockerfile" Chris@1587: Chris@1587: cat "$managerdir/Dockerfile.in" | Chris@1587: sed 's,INSERT_PROVISIONING_HERE,'"$provisioning_commands"',' >> \ Chris@1587: "$managerdir/Dockerfile" Chris@1587: Chris@1586: cd "$rootdir" Chris@1586: Chris@1569: dockertag="cannam/soundsoftware-site" Chris@1569: Chris@1587: sudo docker build -t "$dockertag" -f "deploy/docker/Dockerfile" . Chris@1571: sudo docker run -p 8080:80 -d "$dockertag" Chris@1569: