Merge pull request #103 from plotly/different-data-root-for-docker-binds
Support a separate data root for Docker bind mounts
This commit is contained in:
2
config
2
config
@@ -2,10 +2,12 @@
|
|||||||
export REDIS_IMAGE=${REDIS_IMAGE:="redis"}
|
export REDIS_IMAGE=${REDIS_IMAGE:="redis"}
|
||||||
export REDIS_IMAGE_VERSION=${REDIS_IMAGE_VERSION:="4.0.8"}
|
export REDIS_IMAGE_VERSION=${REDIS_IMAGE_VERSION:="4.0.8"}
|
||||||
export REDIS_ROOT=${REDIS_ROOT:="/var/lib/dokku/services/redis"}
|
export REDIS_ROOT=${REDIS_ROOT:="/var/lib/dokku/services/redis"}
|
||||||
|
export REDIS_HOST_ROOT=${REDIS_HOST_ROOT:=$REDIS_ROOT}
|
||||||
|
|
||||||
export PLUGIN_COMMAND_PREFIX="redis"
|
export PLUGIN_COMMAND_PREFIX="redis"
|
||||||
export PLUGIN_CONFIG_ROOT=${PLUGIN_CONFIG_ROOT:="$DOKKU_LIB_ROOT/config/$PLUGIN_COMMAND_PREFIX"}
|
export PLUGIN_CONFIG_ROOT=${PLUGIN_CONFIG_ROOT:="$DOKKU_LIB_ROOT/config/$PLUGIN_COMMAND_PREFIX"}
|
||||||
export PLUGIN_DATA_ROOT=$REDIS_ROOT
|
export PLUGIN_DATA_ROOT=$REDIS_ROOT
|
||||||
|
export PLUGIN_DATA_HOST_ROOT=$REDIS_HOST_ROOT
|
||||||
export PLUGIN_DATASTORE_PORTS=(6379)
|
export PLUGIN_DATASTORE_PORTS=(6379)
|
||||||
export PLUGIN_DATASTORE_WAIT_PORT=6379
|
export PLUGIN_DATASTORE_WAIT_PORT=6379
|
||||||
export PLUGIN_DEFAULT_ALIAS="REDIS"
|
export PLUGIN_DEFAULT_ALIAS="REDIS"
|
||||||
|
|||||||
@@ -63,9 +63,10 @@ service_create() {
|
|||||||
service_create_container() {
|
service_create_container() {
|
||||||
local SERVICE="$1"
|
local SERVICE="$1"
|
||||||
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
|
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
|
||||||
|
local SERVICE_HOST_ROOT="$PLUGIN_DATA_HOST_ROOT/$SERVICE"
|
||||||
local SERVICE_NAME="$(get_service_name "$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 --bind 0.0.0.0)
|
ID=$(docker run --name "$SERVICE_NAME" -v "$SERVICE_HOST_ROOT/data:/data" -v "$SERVICE_HOST_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 --bind 0.0.0.0)
|
||||||
echo "$ID" > "$SERVICE_ROOT/ID"
|
echo "$ID" > "$SERVICE_ROOT/ID"
|
||||||
|
|
||||||
dokku_log_verbose_quiet "Waiting for container to be ready"
|
dokku_log_verbose_quiet "Waiting for container to be ready"
|
||||||
@@ -91,14 +92,14 @@ service_export() {
|
|||||||
|
|
||||||
service_import() {
|
service_import() {
|
||||||
local SERVICE="$1"
|
local SERVICE="$1"
|
||||||
SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
|
SERVICE_HOST_ROOT="$PLUGIN_DATA_HOST_ROOT/$SERVICE"
|
||||||
SERVICE_NAME="$(get_service_name "$SERVICE")"
|
SERVICE_NAME="$(get_service_name "$SERVICE")"
|
||||||
|
|
||||||
if [[ -t 0 ]]; then
|
if [[ -t 0 ]]; then
|
||||||
dokku_log_fail "No data provided on stdin."
|
dokku_log_fail "No data provided on stdin."
|
||||||
fi
|
fi
|
||||||
dokku "$PLUGIN_COMMAND_PREFIX:stop" "$SERVICE" > /dev/null 2>&1
|
dokku "$PLUGIN_COMMAND_PREFIX:stop" "$SERVICE" > /dev/null 2>&1
|
||||||
docker run --rm -i -v "$SERVICE_ROOT/data:/data" "$PLUGIN_IMAGE:$PLUGIN_IMAGE_VERSION" bash -c "cat > /data/dump.rdb && chown redis: /data/dump.rdb"
|
docker run --rm -i -v "$SERVICE_HOST_ROOT/data:/data" "$PLUGIN_IMAGE:$PLUGIN_IMAGE_VERSION" bash -c "cat > /data/dump.rdb && chown redis: /data/dump.rdb"
|
||||||
dokku "$PLUGIN_COMMAND_PREFIX:start" "$SERVICE" > /dev/null 2>&1
|
dokku "$PLUGIN_COMMAND_PREFIX:start" "$SERVICE" > /dev/null 2>&1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ service-destroy-cmd() {
|
|||||||
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a name for the service"
|
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a name for the service"
|
||||||
verify_service_name "$SERVICE"
|
verify_service_name "$SERVICE"
|
||||||
SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"; LINKS_FILE="$SERVICE_ROOT/LINKS"
|
SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"; LINKS_FILE="$SERVICE_ROOT/LINKS"
|
||||||
|
SERVICE_HOST_ROOT="$PLUGIN_DATA_HOST_ROOT/$SERVICE"
|
||||||
SERVICE_NAME="$(get_service_name "$SERVICE")"
|
SERVICE_NAME="$(get_service_name "$SERVICE")"
|
||||||
|
|
||||||
[[ -s "$LINKS_FILE" ]] && dokku_log_fail "Cannot delete linked service"
|
[[ -s "$LINKS_FILE" ]] && dokku_log_fail "Cannot delete linked service"
|
||||||
@@ -50,7 +51,7 @@ service-destroy-cmd() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
dokku_log_verbose_quiet "Removing data"
|
dokku_log_verbose_quiet "Removing data"
|
||||||
docker run --rm -v "$SERVICE_ROOT/data:/data" -v "$SERVICE_ROOT/config:/config" "$PLUGIN_IMAGE:$PLUGIN_IMAGE_VERSION" chmod 777 -R /config /data
|
docker run --rm -v "$SERVICE_HOST_ROOT/data:/data" -v "$SERVICE_HOST_ROOT/config:/config" "$PLUGIN_IMAGE:$PLUGIN_IMAGE_VERSION" chmod 777 -R /config /data
|
||||||
rm -rf "$SERVICE_ROOT"
|
rm -rf "$SERVICE_ROOT"
|
||||||
|
|
||||||
dokku_log_info2 "$PLUGIN_SERVICE container deleted: $SERVICE"
|
dokku_log_info2 "$PLUGIN_SERVICE container deleted: $SERVICE"
|
||||||
|
|||||||
Reference in New Issue
Block a user