Skip to content

Instantly share code, notes, and snippets.

@rjeczalik
Last active December 30, 2015 23:39
Show Gist options
  • Save rjeczalik/7901859 to your computer and use it in GitHub Desktop.
Save rjeczalik/7901859 to your computer and use it in GitHub Desktop.
script for (re)starting Docker vm with Gitlab/CI containers
#!/usr/bin/env bash
[[ -z "${DOCKER_HOME}" ]] && {
DOCKER_HOME=${HOME}/vagrant/docker
}
die() {
[[ ! -z "${*}" ]] && {
echo "error: ${*}"
}
exit 1
}
run=(
"docker run -p 80:80 -p 222:22 -d -v /home/vagrant/gitlab:/srv/gitlab rjeczalik/gitlab"
"docker run -p 9000:9000 -d -e GITLAB_URLS=\"http://docker:80\" gitlab-ci"
"docker run -d gitlab-ci-runner"
)
restart() {
cd "${DOCKER_HOME}" && {
vagrant halt
vagrant up
}
}
hard_restart() {
cd "${DOCKER_HOME}" && {
vagrant status 2>&1 | grep 'is running' &>/dev/null && {
vagrant halt || die "failed to stop docker vm"
}
vagrant up || die "failed to start docker vm"
for c in $(vagrant ssh -c "docker ps -q"); do
vagrant ssh -c "docker stop ${c}" || die "failed to stop ${c} container"
done
local latest=$(vagrant ssh -c "docker ps | grep 'gitlab-ci:' | tail -n1 | cut -d' ' -f1 2>/dev/null" 2>/dev/null)
[[ ! -z "${latest}" ]] && {
vagrant ssh -c "docker commit -run='{\"Cmd\": [\"bin/sh\", \"-c\", \"/home/gitlab_ci/gitlab-ci/gitlabci_ctrl.rb --start\"]}' ${latest} gitlab-ci"
} || {
die "failed to commit gitlab-ci"
}
for i in ${!run[@]}; do
vagrant ssh -c "${run[${i}]}" || die "failed to execute \"${run[${i}]}\""
done
}
}
[[ "${1}" == "--hard" ]] && {
hard_restart
} || {
restart
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment