#!/usr/bin/env bash set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x source "$(dirname $0)/../common/functions" source "$(dirname $0)/functions" case "$1" in ps) [[ -z $2 ]] && echo "Please specify an app to run the command on" && exit 1 verify_app_name "$2" APP="$2"; CONTAINER_IDS=$(get_container_ids $APP) ! (is_deployed $APP) && echo "App $APP has not been deployed" && exit 0 for CID in $CONTAINER_IDS; do docker exec -ti "$CID" /bin/bash -c "ps auxwww" done ;; ps:start) [[ -z $2 ]] && echo "Please specify an app to run the command on" && exit 1 verify_app_name "$2" APP="$2"; CONTAINER_IDS=( $(get_container_ids $APP) ) ! (is_deployed $APP) && echo "App $APP has not been deployed" && exit 0 if [[ "$(docker ps -q --no-trunc| grep -q ${CONTAINER_IDS[0]}; echo $?)" != "0" ]]; then release_and_deploy $APP else echo "App $APP already running" fi ;; ps:stop) [[ -z $2 ]] && echo "Please specify an app to run the command on" && exit 1 verify_app_name "$2" APP="$2"; CONTAINER_IDS=$(get_container_ids $APP) ! (is_deployed $APP) && echo "App $APP has not been deployed" && exit 0 CONTAINER_IDS_EGREP_PATTERN=$(echo $CONTAINER_IDS | xargs | sed -e "s: :|:g") if [[ "$(docker ps -q --no-trunc| egrep -q $CONTAINER_IDS_EGREP_PATTERN; echo $?)" = "0" ]]; then echo "Stopping $APP ..." for CID in $CONTAINER_IDS;do docker stop $CID > /dev/null done else echo "App $APP already stopped" fi ;; ps:rebuild) [[ -z $2 ]] && echo "Please specify an app to run the command on" && exit 1 verify_app_name "$2" APP="$2" pluginhook receive-app $APP ;; ps:rebuildall) shopt -s nullglob for app in $DOKKU_ROOT/*; do [[ ! -d $app ]] && continue APP=$(basename $app) is_deployed $APP && dokku ps:rebuild $APP done shopt -u nullglob ;; ps:restart) [[ -z $2 ]] && echo "Please specify an app to run the command on" && exit 1 verify_app_name "$2" APP="$2" ! (is_deployed $APP) && echo "App $APP has not been deployed" && exit 0 release_and_deploy $APP ;; ps:restartall) shopt -s nullglob for app in $DOKKU_ROOT/*; do [[ ! -d $app ]] && continue APP=$(basename $app) dokku ps:restart $APP done shopt -u nullglob ;; ps:scale) [[ -z $2 ]] && echo "Please specify an app to run the command on" && exit 1 verify_app_name "$2" APP="$2"; DOKKU_SCALE_FILE="$DOKKU_ROOT/$APP/DOKKU_SCALE" shift 2 generate_scale_file "$APP" if [[ -z "$@" ]];then dokku_log_info1 "Scaling for $APP" dokku_log_info2 "$(< $DOKKU_SCALE_FILE)" else set_scale "$APP" "$@" release_and_deploy "$APP" fi ;; help | ps:help) cat && cat< List processes running in app container(s) ps:scale = [=] Set how many processes of a given process to run ps:start Start app container(s) ps:stop Stop app container(s) ps:rebuild Rebuild an app ps:rebuildall Rebuild all apps ps:restart Restart app container(s) ps:restartall Restart all deployed app containers EOF ;; *) exit $DOKKU_NOT_IMPLEMENTED_EXIT ;; esac