feat: create proxy:build-config command

Closes #4024
This commit is contained in:
Jose Diaz-Gonzalez
2020-06-29 20:17:23 -04:00
parent 90b3528f6b
commit eaf0d9af55
10 changed files with 36 additions and 12 deletions

View File

@@ -9,6 +9,7 @@ The `tls` name is no longer a reserved app name, and can be used by applications
- `git#git_deploy_branch()` is deprecated in favor of `plugn trigger git-deploy-branch`.
- The `config` command is deprecated in favor of `config:show`.
- Usage of this command in conjunction with either the `--export` or `--shell` flag is deprecated in favor of `config:export --format` with the correct format value (`exports` or `shell`, respectively).
- The `nginx:build-config` command is deprecated in favor of `proxy:build-config`.
## Removals

View File

@@ -4,7 +4,6 @@ Dokku uses nginx as its server for routing requests to specific applications. By
```
nginx:access-logs <app> [-t] # Show the nginx access logs for an application (-t follows)
nginx:build-config <app> # (Re)builds nginx config for given app
nginx:error-logs <app> [-t] # Show the nginx error logs for an application (-t follows)
nginx:report [<app>] [<flag>] # Displays a nginx report for one or more apps
nginx:set <app> <property> (<value>) # Set or clear an nginx property for an app
@@ -107,14 +106,6 @@ dokku nginx:set node-js-app error-log-path
In all cases, the nginx config must be regenerated after setting the above values.
## Regenerating nginx config
In certain cases, your app nginx configs may drift from the correct config for your app. You may regenerate the config at any point via the `nginx:build-config` command. This may fail if there are no current web listeners for your app.
```shell
dokku nginx:build-config node-js-app
```
## Showing the nginx config
For debugging purposes, it may be useful to show the nginx config. This can be achieved via the `nginx:show-config` command.
@@ -296,3 +287,7 @@ See the [proxy documentation](/docs/advanced-usage/proxy-management.md) for more
## Managing Proxy Port mappings
See the [proxy documentation](/docs/advanced-usage/proxy-management.md#proxy-port-mapping) for more information on how to manage ports proxied for your app.
## Regenerating nginx config
See the [proxy documentation](/docs/advanced-usage/proxy-management.md#regenerating-proxy-config) for more information on how to rebuild the nginx proxy configuration for your app.

View File

@@ -3,6 +3,7 @@
> New as of 0.5.0, Enhanced in 0.6.0
```
proxy:build-config <app> # (Re)builds config for given app
proxy:disable <app> # Disable proxy for app
proxy:enable <app> # Enable proxy for app
proxy:report [<app>] [<flag>] # Displays a proxy report for one or more apps
@@ -13,6 +14,14 @@ In Dokku 0.5.0, port proxying was decoupled from the `nginx-vhosts` plugin into
## Usage
### Regenerating proxy config
In certain cases, your app proxy configs may drift from the correct config for your app. You may regenerate the config at any point via the `proxy:build-config` command. This command will trigger a rebuild for the configured proxy implementation (default: nginx) for a given app. The command may fail if there are no current web listeners for your app.
```shell
dokku proxy:build-config node-js-app
```
### Container network interface binding
> Changed as of 0.11.0

View File

@@ -28,7 +28,6 @@ fn-help-content() {
declare desc="return help content"
cat <<help_content
nginx:access-logs <app> [-t], Show the nginx access logs for an application (-t follows)
nginx:build-config <app>, (Re)builds nginx config for given app
nginx:error-logs <app> [-t], Show the nginx error logs for an application (-t follows)
nginx:report [<app>] [<flag>], Displays an nginx report for one or more apps
nginx:set <app> <property> (<value>), Set or clear an nginx property for an app

View File

@@ -8,6 +8,7 @@ cmd-nginx-build-config() {
declare cmd="nginx:build-config"
[[ "$1" == "$cmd" ]] && shift 1
declare APP="$1"
dokku_log_warn "Deprecated: Please use proxy:build-config"
[[ -z "$APP" ]] && dokku_log_fail "Please specify an app to run the command on"
local PROXY_APP_TYPE

View File

@@ -1,4 +1,4 @@
SUBCOMMANDS = subcommands/disable subcommands/enable subcommands/ports subcommands/ports-add subcommands/ports-clear subcommands/ports-remove subcommands/ports-set subcommands/report subcommands/set
SUBCOMMANDS = subcommands/build-config subcommands/disable subcommands/enable subcommands/ports subcommands/ports-add subcommands/ports-clear subcommands/ports-remove subcommands/ports-set subcommands/report subcommands/set
TRIGGERS = triggers/proxy-is-enabled triggers/proxy-type triggers/post-certs-remove triggers/post-certs-update triggers/report
BUILD = commands subcommands triggers
PLUGIN_NAME = proxy

View File

@@ -18,6 +18,7 @@ Manage the proxy integration for an app
Additional commands:`
helpContent = `
proxy:build-config <app>, (Re)builds config for a given app
proxy:disable <app>, Disable proxy for app
proxy:enable <app>, Enable proxy for app
proxy:ports <app>, List proxy port mappings for app

View File

@@ -17,6 +17,11 @@ func main() {
var err error
switch subcommand {
case "build-config":
args := flag.NewFlagSet("proxy:build-config", flag.ExitOnError)
args.Parse(os.Args[2:])
appName := args.Arg(0)
err = proxy.CommandBuildConfig(appName)
case "disable":
args := flag.NewFlagSet("proxy:disable", flag.ExitOnError)
skipRestart := args.Bool("no-restart", false, "--no-restart: skip restart of the app")

View File

@@ -8,6 +8,19 @@ import (
"github.com/dokku/dokku/plugins/config"
)
// CommandBuildConfig rebuilds config for a given app
func CommandBuildConfig(appName string) error {
if appName == "" {
return errors.New("Please specify an app to run the command on")
}
if err := common.VerifyAppName(appName); err != nil {
return err
}
return common.PlugnTrigger("proxy-build-config", []string{appName}...)
}
// CommandDisable disables the proxy for app via command line
func CommandDisable(appName string, skipRestart bool) error {
if appName == "" {

View File

@@ -453,7 +453,7 @@ EOF
build_nginx_config() {
# simulate nginx post-deploy
dokku domains:setup "$TEST_APP"
dokku nginx:build-config "$TEST_APP"
dokku proxy:build-config "$TEST_APP"
}
create_network() {