create container if not exists on service:start
This commit is contained in:
11
commands
11
commands
@@ -35,21 +35,12 @@ case "$1" in
|
||||
curl "https://raw.githubusercontent.com/antirez/redis/${REDIS_IMAGE_VERSION:0:3}/redis.conf" > "$SERVICE_ROOT/config/redis.conf" || dokku_log_fail "Unable to download the default redis.conf to the config directory"
|
||||
touch "$LINKS_FILE"
|
||||
|
||||
dokku_log_info1 "Starting container"
|
||||
if [[ -n $REDIS_CUSTOM_ENV ]]; then
|
||||
echo "$REDIS_CUSTOM_ENV" | tr ';' "\n" > "$SERVICE_ROOT/ENV"
|
||||
else
|
||||
echo "" > "$SERVICE_ROOT/ENV"
|
||||
fi
|
||||
SERVICE_NAME=$(get_service_name "$SERVICE")
|
||||
ID=$(docker run --name "$SERVICE_NAME" -v "$SERVICE_ROOT/data:/data" -v "$SERVICE_ROOT/config:/usr/local/etc/redis" --env-file="$SERVICE_ROOT/ENV" -d --restart always --label dokku=service --label dokku.service=redis "$PLUGIN_IMAGE:$PLUGIN_IMAGE_VERSION" redis-server /usr/local/etc/redis/redis.conf)
|
||||
echo "$ID" > "$SERVICE_ROOT/ID"
|
||||
|
||||
dokku_log_verbose_quiet "Waiting for container to be ready"
|
||||
docker run --rm --link "$SERVICE_NAME:$PLUGIN_COMMAND_PREFIX" dokkupaas/wait > /dev/null
|
||||
|
||||
dokku_log_info2 "$PLUGIN_SERVICE container created: $SERVICE"
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:info" "$SERVICE"
|
||||
service_create_container "$SERVICE"
|
||||
;;
|
||||
|
||||
$PLUGIN_COMMAND_PREFIX:destroy)
|
||||
|
||||
27
functions
27
functions
@@ -222,28 +222,47 @@ service_start() {
|
||||
local QUIET="$2"
|
||||
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
|
||||
local SERVICE_NAME=$(get_service_name "$SERVICE")
|
||||
local ID=$(docker ps -f status=running | grep "$SERVICE_NAME" | awk '{print $1}') || true
|
||||
local ID=$(docker ps -f status=running | grep -e "$SERVICE_NAME$" | awk '{print $1}') || true
|
||||
if [[ -n $ID ]]; then
|
||||
[[ -z $QUIET ]] && dokku_log_warn "Service is already started"
|
||||
return 0
|
||||
fi
|
||||
|
||||
dokku_log_info1_quiet "Starting container"
|
||||
local PREVIOUS_ID=$(docker ps -f status=exited | grep "$SERVICE_NAME" | awk '{print $1}') || true
|
||||
local PREVIOUS_ID=$(docker ps -f status=exited | grep -e "$SERVICE_NAME$" | awk '{print $1}') || true
|
||||
local IMAGE_EXISTS=$(docker images | grep -e "^$PLUGIN_IMAGE " | grep -q " $PLUGIN_IMAGE_VERSION " && true)
|
||||
|
||||
if [[ -n $PREVIOUS_ID ]]; then
|
||||
docker start "$PREVIOUS_ID" > /dev/null
|
||||
service_port_unpause "$SERVICE"
|
||||
dokku_log_info2 "Container started"
|
||||
elif $IMAGE_EXISTS; then
|
||||
service_create_container "$SERVICE"
|
||||
else
|
||||
dokku_log_verbose_quiet "No container exists for $SERVICE"
|
||||
dokku_log_verbose_quiet "Neither container nor valid configuration exists for $SERVICE"
|
||||
fi
|
||||
}
|
||||
|
||||
service_create_container() {
|
||||
local SERVICE="$1"
|
||||
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
|
||||
local SERVICE_NAME=$(get_service_name "$SERVICE")
|
||||
|
||||
ID=$(docker run --name "$SERVICE_NAME" -v "$SERVICE_ROOT/data:/data" -v "$SERVICE_ROOT/config:/usr/local/etc/redis" --env-file="$SERVICE_ROOT/ENV" -d --restart always --label dokku=service --label dokku.service=redis "$PLUGIN_IMAGE:$PLUGIN_IMAGE_VERSION" redis-server /usr/local/etc/redis/redis.conf)
|
||||
echo "$ID" > "$SERVICE_ROOT/ID"
|
||||
|
||||
dokku_log_verbose_quiet "Waiting for container to be ready"
|
||||
docker run --rm --link "$SERVICE_NAME:$PLUGIN_COMMAND_PREFIX" dokkupaas/wait > /dev/null
|
||||
|
||||
dokku_log_info2 "$PLUGIN_SERVICE container created: $SERVICE"
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:info" "$SERVICE"
|
||||
}
|
||||
|
||||
service_stop() {
|
||||
local SERVICE="$1"
|
||||
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE";
|
||||
local SERVICE_NAME=$(get_service_name "$SERVICE")
|
||||
local ID=$(docker ps -f status=running | grep "$SERVICE_NAME" | awk '{print $1}') || true
|
||||
local ID=$(docker ps -f status=running | grep -e "$SERVICE_NAME$" | awk '{print $1}') || true
|
||||
[[ -z $ID ]] && dokku_log_warn "Service is already stopped" && return 0
|
||||
|
||||
if [[ -n $ID ]]; then
|
||||
|
||||
Reference in New Issue
Block a user