diff --git a/README.md b/README.md index 0c4a68d..970d5be 100644 --- a/README.md +++ b/README.md @@ -72,6 +72,7 @@ flags: - `-m|--memory MEMORY`: container memory limit (default: unlimited) - `-p|--password PASSWORD`: override the user-level service password - `-r|--root-password PASSWORD`: override the root-level service password +- `-s|--shm-size SHM_SIZE`: override shared memory size for mysql docker container Create a mysql service named lolipop: @@ -392,6 +393,7 @@ flags: - `-i|--image IMAGE`: the image name to start the service with - `-I|--image-version IMAGE_VERSION`: the image version to start the service with - `-R|--restart-apps "true"`: whether to force an app restart +- `-s|--shm-size SHM_SIZE`: override shared memory size for mysql docker container You can upgrade an existing service to a new image or image-version: @@ -432,6 +434,7 @@ flags: - `-m|--memory MEMORY`: container memory limit (default: unlimited) - `-p|--password PASSWORD`: override the user-level service password - `-r|--root-password PASSWORD`: override the root-level service password +- `-s|--shm-size SHM_SIZE`: override shared memory size for mysql docker container You can clone an existing service to a new one: diff --git a/common-functions b/common-functions index 04ee20f..950b36c 100755 --- a/common-functions +++ b/common-functions @@ -247,6 +247,10 @@ service_commit_config() { if [[ -n "$SERVICE_MEMORY" ]]; then echo "$SERVICE_MEMORY" >"$SERVICE_ROOT/SERVICE_MEMORY" fi + + if [[ -n "$SERVICE_SHM_SIZE" ]]; then + echo "$SERVICE_SHM_SIZE" >"$SERVICE_ROOT/SHM_SIZE" + fi } service_backup_auth() { @@ -578,13 +582,14 @@ service_parse_args() { "--querystring") set -- "$@" "-q" ;; "--restart-apps") set -- "$@" "-R" ;; "--root-password") set -- "$@" "-r" ;; + "--shm-size") set -- "$@" "-s" ;; "--user") set -- "$@" "-u" ;; *) set -- "$@" "$arg" ;; esac done OPTIND=1 - while getopts "a:c:C:d:i:I:m:p:q:R:r:u:" opt; do + while getopts "a:c:C:d:i:I:m:p:q:R:r:s:u:" opt; do case "$opt" in a) SERVICE_ALIAS="${OPTARG^^}" @@ -620,6 +625,9 @@ service_parse_args() { r) export SERVICE_ROOT_PASSWORD=$OPTARG ;; + s) + export SERVICE_SHM_SIZE=$OPTARG + ;; u) export SERVICE_USER=$OPTARG ;; diff --git a/functions b/functions index 054650a..7d4dcfd 100755 --- a/functions +++ b/functions @@ -89,8 +89,13 @@ service_create_container() { MEMORY_LIMIT="--memory=${SERVICE_MEMORY}m" fi + [[ -f "$SERVICE_ROOT/SHM_SIZE" ]] && SERVICE_SHM_SIZE="$(cat "$SERVICE_ROOT/SHM_SIZE")" + if [[ -n "$SERVICE_SHM_SIZE" ]]; then + SHM_SIZE="--shm-size=${SERVICE_SHM_SIZE}" + fi + # shellcheck disable=SC2086 - ID=$(docker run --name "$SERVICE_NAME" $MEMORY_LIMIT -v "$SERVICE_HOST_ROOT/data:/var/lib/mysql" -v "$SERVICE_HOST_ROOT/$PLUGIN_CONFIG_SUFFIX:/etc/mysql/conf.d" -e "MYSQL_ROOT_PASSWORD=$ROOTPASSWORD" -e MYSQL_USER=mysql -e "MYSQL_PASSWORD=$PASSWORD" -e "MYSQL_DATABASE=$DATABASE_NAME" --env-file="$SERVICE_ROOT/ENV" -d --restart always --label dokku=service --label dokku.service=mysql "$PLUGIN_IMAGE:$PLUGIN_IMAGE_VERSION" $CONFIG_OPTIONS) + ID=$(docker run --name "$SERVICE_NAME" $MEMORY_LIMIT $SHM_SIZE -v "$SERVICE_HOST_ROOT/data:/var/lib/mysql" -v "$SERVICE_HOST_ROOT/$PLUGIN_CONFIG_SUFFIX:/etc/mysql/conf.d" -e "MYSQL_ROOT_PASSWORD=$ROOTPASSWORD" -e MYSQL_USER=mysql -e "MYSQL_PASSWORD=$PASSWORD" -e "MYSQL_DATABASE=$DATABASE_NAME" --env-file="$SERVICE_ROOT/ENV" -d --restart always --label dokku=service --label dokku.service=mysql "$PLUGIN_IMAGE:$PLUGIN_IMAGE_VERSION" $CONFIG_OPTIONS) echo "$ID" >"$SERVICE_ROOT/ID" dokku_log_verbose_quiet "Waiting for container to be ready" diff --git a/subcommands/clone b/subcommands/clone index 04fe330..fe40599 100755 --- a/subcommands/clone +++ b/subcommands/clone @@ -17,6 +17,7 @@ service-clone-cmd() { #F -m|--memory MEMORY, container memory limit (default: unlimited) #F -p|--password PASSWORD, override the user-level service password #F -r|--root-password PASSWORD, override the root-level service password + #F -s|--shm-size SHM_SIZE, override shared memory size for $PLUGIN_COMMAND_PREFIX docker container declare desc="create container then copy data from into " local cmd="$PLUGIN_COMMAND_PREFIX:clone" argv=("$@") [[ ${argv[0]} == "$cmd" ]] && shift 1 diff --git a/subcommands/create b/subcommands/create index 29d26e8..cc88910 100755 --- a/subcommands/create +++ b/subcommands/create @@ -25,6 +25,7 @@ service-create-cmd() { #F -m|--memory MEMORY, container memory limit (default: unlimited) #F -p|--password PASSWORD, override the user-level service password #F -r|--root-password PASSWORD, override the root-level service password + #F -s|--shm-size SHM_SIZE, override shared memory size for $PLUGIN_COMMAND_PREFIX docker container declare desc="create a $PLUGIN_SERVICE service" local cmd="$PLUGIN_COMMAND_PREFIX:create" argv=("$@") [[ ${argv[0]} == "$cmd" ]] && shift 1 diff --git a/subcommands/upgrade b/subcommands/upgrade index 755db2f..abdf426 100755 --- a/subcommands/upgrade +++ b/subcommands/upgrade @@ -15,6 +15,7 @@ service-upgrade-cmd() { #F -i|--image IMAGE, the image name to start the service with #F -I|--image-version IMAGE_VERSION, the image version to start the service with #F -R|--restart-apps "true", whether to force an app restart + #F -s|--shm-size SHM_SIZE, override shared memory size for $PLUGIN_COMMAND_PREFIX docker container declare desc="upgrade service to the specified versions" local cmd="$PLUGIN_COMMAND_PREFIX:upgrade" argv=("$@") [[ ${argv[0]} == "$cmd" ]] && shift 1