Last active
September 23, 2015 01:18
-
-
Save kballenegger/43c9ddcd94ba625d3ccd to your computer and use it in GitHub Desktop.
Docker service lifecycle
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
cd /repos/api-internal | |
case "$2" in | |
pre-start) | |
git checkout origin/production | |
docker pull quay.io/kballenegger/api-internal | |
docker pull quay.io/kballenegger/api-internal-builder | |
# remove any left-over container | |
docker ps -a | grep api-internal.$1 && docker rm api-internal.$1 | |
docker ps -a | grep api-internal-builder.$1 && docker rm api-internal-builder.$1 | |
# build script | |
build_cmd=$(cat <<CMD | |
set -e | |
echo "Building api-internal.$1". | |
bundle install --deployment --without="test development" | |
echo "Running migrations." | |
postgresurl=\$(bundle exec ruby -r./init.rb -e \ | |
'require "konfiguration"; puts Konfiguration.database(:uri)') | |
bundle exec sequel -E -m migrations \$postgresurl | |
echo "Built api-internal.$1". | |
CMD | |
) | |
docker run \ | |
-d \ | |
-v /repos/api-internal:/app \ | |
-e env=live \ | |
--name api-internal-builder.$1 \ | |
quay.io/kballenegger/api-internal-builder \ | |
bash -l -c "$build_cmd" | |
code=$(docker wait api-internal-builder.$1) | |
echo "Exited with code $code"... | |
exit $code | |
;; | |
start) | |
# launch script | |
app_cmd=$(cat <<CMD | |
set -e | |
echo "Launching api-internal.$1". | |
bundle exec thin -R config.ru -p 9977 start | |
echo "Exiting api-internal.$1". | |
CMD | |
) | |
docker run \ | |
-d \ | |
-p 9977:9977 \ | |
-v /repos/api-internal:/app \ | |
-e env=live \ | |
--name api-internal.$1 \ | |
quay.io/kballenegger/api-internal \ | |
bash -l -c "$app_cmd" | |
code=$(docker wait api-internal.$1) | |
echo "Exited with code $code"... | |
exit $code | |
;; | |
stop) | |
docker stop api-internal.$1 | |
docker rm api-internal.$1 | |
;; | |
deploy) | |
bash $(dirname "$0")/../shared/deploy.sh api-internal $1 | |
;; | |
*) | |
echo "Usage: ..." | |
exit 1 | |
;; | |
esac | |
exit 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment