refactor: only use detected port mapping if override is not specified
Previously, we would always set the port mapping during a dockerfile build, making it difficult for users to override mappings. We also only _sometimes_ updated the detected port mapping, further confusing issues when users were migrating from Dockerfile to Buildpacks for builds. Now, we always detect the port mapping during the build process, and only use that detected port mapping if an override is not specified. This greatly simplifies the experience around port mapping, as now a user can create an app, set a port mapping, and that first deploy will respect the port mapping without an additional deploy. The builder always has the best context for what the app should be listening on, and thus we can always specify a "default" port mapping at this stage. Users can override this map as desired later. This change also results in the removal of a ton of internal code that is now centralized in the ports plugin. Closes #4067
This commit is contained in:
@@ -180,28 +180,6 @@ Any application that does not use an `EXPOSE` directive will result in Dokku def
|
||||
- modify your application to support the `PORT` environment variable.
|
||||
- switch to using an `EXPOSE` directive in your Dockerfile.
|
||||
|
||||
#### Switching between `EXPOSE` usage modes
|
||||
|
||||
When switching between `EXPOSE` usage modes, it is important to reset your port management. The following two commands can be used to reset your state and redeploy your application.
|
||||
|
||||
```shell
|
||||
# assuming your application is called `node-js-app`
|
||||
dokku config:unset --no-restart node-js-app DOKKU_DOCKERFILE_PORTS PORT
|
||||
dokku ports:clear node-js-app
|
||||
```
|
||||
|
||||
### Docker Image
|
||||
|
||||
When deploying an image, we will use `docker inspect` to extract the `ExposedPorts` configuration and if defined, use that to populate port mapping. If this behavior is not desired, you can override that configuration variable with the following commands.
|
||||
|
||||
```shell
|
||||
# assuming your application is called `node-js-app`
|
||||
dokku config:set node-js-app DOKKU_DOCKERFILE_PORTS="1234/tcp 80/tcp"
|
||||
dokku ports:clear node-js-app
|
||||
```
|
||||
|
||||
All other port-related behavior is the same as when deploying via Dockerfile.
|
||||
|
||||
### Displaying ports reports for an app
|
||||
|
||||
You can get a report about the app's ports status using the `ports:report` command:
|
||||
|
||||
@@ -378,7 +378,6 @@ Unsetting this value is the same as enabling custom nginx config usage.
|
||||
{{ .NOSSL_SERVER_NAME }} List of non-SSL VHOSTS
|
||||
{{ .PROXY_PORT_MAP }} List of port mappings (same as the `map` ports property)
|
||||
{{ .PROXY_UPSTREAM_PORTS }} List of configured upstream ports (derived from the `map` ports property)
|
||||
{{ .RAW_TCP_PORTS }} List of exposed tcp ports as defined by Dockerfile `EXPOSE` directive (**Dockerfile apps only**)
|
||||
{{ .SSL_INUSE }} Boolean set when an app is SSL-enabled
|
||||
{{ .SSL_SERVER_NAME }} List of SSL VHOSTS
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user