mirror of
https://github.com/dokku/dokku.git
synced 2026-02-23 19:50:34 +01:00
feat: implement proxy-clear-config
This will allow us to kill stale proxy configuration within apps, which is critical during application renames. - redirect rmdir output to dev-null - trigger a proxy-clear-config (new trigger) when renaming an application - The configuration will be rebuilt during the later `ps_rebuild` Closes #3231
This commit is contained in:
@@ -373,6 +373,21 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
# TODO
|
||||
```
|
||||
|
||||
### `network-clear-config`
|
||||
|
||||
- Description: Clears network configuration
|
||||
- Invoked by: `internally triggered by proxy-clear-config within proxy implementations`
|
||||
- Arguments: `$APP`
|
||||
- Example:
|
||||
|
||||
```shell
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
|
||||
# TODO
|
||||
```
|
||||
|
||||
### `network-compute-ports`
|
||||
|
||||
- Description: Computes the ports for a given app container
|
||||
@@ -1040,6 +1055,21 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
# TODO
|
||||
```
|
||||
|
||||
### `proxy-clear-config`
|
||||
|
||||
- Description: Clears the proxy implementation configuration for a given app
|
||||
- Invoked by: `internally triggered by apps:rename`
|
||||
- Arguments: `$APP`
|
||||
- Example:
|
||||
|
||||
```shell
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
|
||||
# TODO
|
||||
```
|
||||
|
||||
### `proxy-enable`
|
||||
|
||||
- Description: Enables the configured proxy implementation for an app
|
||||
|
||||
1
plugins/20_events/network-clear-config
Symbolic link
1
plugins/20_events/network-clear-config
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
1
plugins/20_events/proxy-clear-config
Symbolic link
1
plugins/20_events/proxy-clear-config
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
@@ -14,12 +14,13 @@ apps_rename_cmd() {
|
||||
local OLD_CACHE_DIR="$DOKKU_ROOT/$OLD_APP/cache"
|
||||
local OLD_CACHE_HOST_DIR="$DOKKU_HOST_ROOT/$OLD_APP/cache"
|
||||
|
||||
if [[ -d "$OLD_CACHE_DIR" ]] && ! rmdir "$OLD_CACHE_DIR"; then
|
||||
if [[ -d "$OLD_CACHE_DIR" ]] && ! rmdir "$OLD_CACHE_DIR" > /dev/null 2>&1; then
|
||||
docker run "$DOKKU_GLOBAL_RUN_ARGS" --rm -v "$OLD_CACHE_HOST_DIR:/cache" "dokku/$OLD_APP" chmod 777 -R /cache
|
||||
fi
|
||||
rm -rf "$OLD_CACHE_DIR"
|
||||
apps_create "$NEW_APP"
|
||||
cp -a "$DOKKU_ROOT/$OLD_APP/." "$DOKKU_ROOT/$NEW_APP"
|
||||
plugn trigger proxy-clear-config "$NEW_APP"
|
||||
DOKKU_APPS_FORCE_DELETE=1 apps_destroy "$OLD_APP"
|
||||
[[ -f "$DOKKU_ROOT/$NEW_APP/URLS" ]] && sed -i -e "s/$OLD_APP/$NEW_APP/g" "$DOKKU_ROOT/$NEW_APP/URLS"
|
||||
[[ -f "$DOKKU_ROOT/$NEW_APP/VHOST" ]] && sed -i -e "s/$OLD_APP/$NEW_APP/g" "$DOKKU_ROOT/$NEW_APP/VHOST"
|
||||
|
||||
@@ -26,3 +26,9 @@ nginx_vhosts_help_cmd() {
|
||||
help_desc
|
||||
fi
|
||||
}
|
||||
|
||||
nginx_clear_config() {
|
||||
declare desc="Remove the nginx conf file"
|
||||
declare APP="$1";
|
||||
rm -f "$DOKKU_ROOT/$APP/nginx.conf"
|
||||
}
|
||||
|
||||
19
plugins/nginx-vhosts/proxy-clear-config
Executable file
19
plugins/nginx-vhosts/proxy-clear-config
Executable file
@@ -0,0 +1,19 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/nginx-vhosts/internal-functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/proxy/functions"
|
||||
|
||||
trigger-nginx-vhosts-clear-config() {
|
||||
declare desc="clear nginx config for proxy app containers from command line"
|
||||
declare trigger="trigger-nginx-vhosts-clear-config"
|
||||
declare APP="$1"
|
||||
[[ -z "$APP" ]] && dokku_log_fail "Please specify an app to run the command on"
|
||||
|
||||
if [[ "$(get_app_proxy_type "$APP")" = "nginx" ]]; then
|
||||
plugn trigger network-clear-config "$APP"
|
||||
nginx_clear_config "$APP"
|
||||
fi
|
||||
}
|
||||
|
||||
trigger-nginx-vhosts-clear-config "$@"
|
||||
Reference in New Issue
Block a user