Compare commits

..

2580 Commits
v0.35.16 ... cn

Author SHA1 Message Date
apple
47538330f8 Merge branch 'master' into cn
Some checks failed
dependency-updates / prepare (push) Has been cancelled
dependency-updates / update / ${{ matrix.name }} (push) Has been cancelled
CodeQL / Analyze (go) (push) Has been cancelled
* master: (546 commits)
  chore(deps): bump gunicorn in /tests/apps/dockerfile-release
  chore(deps): bump github.com/traefik/traefik/v2
  chore(deps): bump gunicorn from 26.0.0 to 26.1.0 in /tests/apps/multi
  chore(deps): bump gunicorn in /tests/apps/python-flask
  chore(deps): bump pygments from 2.20.0 to 2.21.0 in /docs/_build
  chore: bump herokuish to 0.11.16
  chore: bump go modules
  chore(deps): bump golang.org/x/crypto in /plugins/common
  chore(deps): bump sqlparse in /tests/apps/dockerfile-release
  chore(deps): bump helm.sh/helm/v3 in /plugins/scheduler-k3s
  chore(deps): bump golang in /tests/apps/zombies-dockerfile-no-tini
  chore(deps): bump golang in /tests/apps/go-fail-postdeploy
  chore(deps): bump golang in /tests/apps/go-fail-predeploy
  chore(deps): bump golang from 1.26.5 to 1.26.6 in /tests/apps/gogrpc
  chore(deps): bump golang in /tests/apps/zombies-dockerfile-tini
  chore(deps): bump google.golang.org/protobuf in /tests/apps/gogrpc
  fix: retire cron containers past their active deadline
  Release 0.38.27
  fix: report traefik dns-provider env vars as global keys
  fix: do not require a local image for k3s deploys
  ...

# Conflicts:
#	common.mk
#	contrib/dependencies.json
2026-08-22 17:40:33 +08:00
Jose Diaz-Gonzalez
33896f5d7e Merge pull request #8954 from dokku/dependabot/pip/tests/apps/dockerfile-release/gunicorn-26.1.0
Some checks failed
CI / check-commit (push) Has been cancelled
CodeQL / Analyze (go) (push) Has been cancelled
docs / deploy (push) Has been cancelled
lint / hadolint (push) Has been cancelled
lint / markdown-lint (push) Has been cancelled
lint / packer (push) Has been cancelled
lint / shellcheck (push) Has been cancelled
lint / shfmt (push) Has been cancelled
lint / yamllint (push) Has been cancelled
CI / build (push) Has been cancelled
CI / build-image.linux/amd64 (push) Has been cancelled
CI / build-image.linux/arm64 (push) Has been cancelled
CI / unit.${{ matrix.index }} (push) Has been cancelled
CI / docker (push) Has been cancelled
CI / go.0 (push) Has been cancelled
CI / go.1 (push) Has been cancelled
CI / go.2 (push) Has been cancelled
CI / go.3 (push) Has been cancelled
CI / publish-test-results (push) Has been cancelled
chore(deps): bump gunicorn from 26.0.0 to 26.1.0 in /tests/apps/dockerfile-release
2026-08-21 16:18:10 -04:00
Jose Diaz-Gonzalez
066c1228ef Merge pull request #8953 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/traefik/traefik/v2-2.11.55
chore(deps): bump github.com/traefik/traefik/v2 from 2.11.54 to 2.11.55 in /plugins/scheduler-k3s
2026-08-21 16:18:02 -04:00
Jose Diaz-Gonzalez
8194d27cf9 Merge pull request #8952 from dokku/dependabot/pip/tests/apps/multi/gunicorn-26.1.0
chore(deps): bump gunicorn from 26.0.0 to 26.1.0 in /tests/apps/multi
2026-08-21 16:17:49 -04:00
Jose Diaz-Gonzalez
527805dbcc Merge pull request #8951 from dokku/dependabot/pip/tests/apps/python-flask/gunicorn-26.1.0
chore(deps): bump gunicorn from 26.0.0 to 26.1.0 in /tests/apps/python-flask
2026-08-21 16:17:42 -04:00
dependabot[bot]
bb0086798d chore(deps): bump gunicorn in /tests/apps/dockerfile-release
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 26.0.0 to 26.1.0.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/26.0.0...26.1.0)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-version: 26.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-21 13:55:25 +00:00
dependabot[bot]
15c00bd159 chore(deps): bump github.com/traefik/traefik/v2
Bumps [github.com/traefik/traefik/v2](https://github.com/traefik/traefik) from 2.11.54 to 2.11.55.
- [Release notes](https://github.com/traefik/traefik/releases)
- [Changelog](https://github.com/traefik/traefik/blob/v2.11.55/CHANGELOG.md)
- [Commits](https://github.com/traefik/traefik/compare/v2.11.54...v2.11.55)

---
updated-dependencies:
- dependency-name: github.com/traefik/traefik/v2
  dependency-version: 2.11.55
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-21 13:55:14 +00:00
dependabot[bot]
5129582c85 chore(deps): bump gunicorn from 26.0.0 to 26.1.0 in /tests/apps/multi
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 26.0.0 to 26.1.0.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/26.0.0...26.1.0)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-version: 26.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-21 13:52:58 +00:00
dependabot[bot]
2e27889d50 chore(deps): bump gunicorn in /tests/apps/python-flask
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 26.0.0 to 26.1.0.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/26.0.0...26.1.0)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-version: 26.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-21 13:52:53 +00:00
Jose Diaz-Gonzalez
ea7249fed4 Merge pull request #8950 from dokku/dependabot/pip/docs/_build/pygments-2.21.0
chore(deps): bump pygments from 2.20.0 to 2.21.0 in /docs/_build
2026-08-20 12:17:21 -04:00
dependabot[bot]
284bb810f6 chore(deps): bump pygments from 2.20.0 to 2.21.0 in /docs/_build
Bumps [pygments](https://github.com/pygments/pygments) from 2.20.0 to 2.21.0.
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)
- [Commits](https://github.com/pygments/pygments/compare/2.20.0...2.21.0)

---
updated-dependencies:
- dependency-name: pygments
  dependency-version: 2.21.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-20 13:53:24 +00:00
Jose Diaz-Gonzalez
579e4a3288 Merge pull request #8945 from dokku/dependabot/go_modules/plugins/common/golang.org/x/crypto-0.55.0
chore(deps): bump golang.org/x/crypto from 0.54.0 to 0.55.0 in /plugins/common
2026-08-19 11:05:42 -04:00
Jose Diaz-Gonzalez
cf842bcd53 Merge pull request #8949 from dokku/chore/bump-herokuish-0.11.16
chore: bump herokuish to 0.11.16
2026-08-19 10:45:55 -04:00
Dokku Bot
e3c76869fa chore: bump herokuish to 0.11.16 2026-08-19 10:03:50 +00:00
Jose Diaz-Gonzalez
a29bf12553 chore: bump go modules 2026-08-19 00:24:44 -04:00
dependabot[bot]
934b1a0370 chore(deps): bump golang.org/x/crypto in /plugins/common
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.54.0 to 0.55.0.
- [Commits](https://github.com/golang/crypto/compare/v0.54.0...v0.55.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-19 03:23:24 +00:00
Jose Diaz-Gonzalez
d03c9df862 Merge pull request #8943 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-no-tini/golang-1.26.6
chore(deps): bump golang from 1.26.5 to 1.26.6 in /tests/apps/zombies-dockerfile-no-tini
2026-08-18 23:22:23 -04:00
Jose Diaz-Gonzalez
9afb439d52 Merge pull request #8944 from dokku/dependabot/docker/tests/apps/go-fail-postdeploy/golang-1.26.6
chore(deps): bump golang from 1.26.5 to 1.26.6 in /tests/apps/go-fail-postdeploy
2026-08-18 23:22:16 -04:00
Jose Diaz-Gonzalez
d11543bbf9 Merge pull request #8942 from dokku/dependabot/docker/tests/apps/go-fail-predeploy/golang-1.26.6
chore(deps): bump golang from 1.26.5 to 1.26.6 in /tests/apps/go-fail-predeploy
2026-08-18 23:22:09 -04:00
Jose Diaz-Gonzalez
3cb090294a Merge pull request #8941 from dokku/dependabot/docker/tests/apps/gogrpc/golang-1.26.6
chore(deps): bump golang from 1.26.5 to 1.26.6 in /tests/apps/gogrpc
2026-08-18 23:22:01 -04:00
Jose Diaz-Gonzalez
b18273378e Merge pull request #8940 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-tini/golang-1.26.6
chore(deps): bump golang from 1.26.5 to 1.26.6 in /tests/apps/zombies-dockerfile-tini
2026-08-18 23:21:54 -04:00
Jose Diaz-Gonzalez
013113936e Merge pull request #8947 from dokku/dependabot/pip/tests/apps/dockerfile-release/sqlparse-0.6.0
chore(deps): bump sqlparse from 0.5.5 to 0.6.0 in /tests/apps/dockerfile-release
2026-08-18 23:21:43 -04:00
Jose Diaz-Gonzalez
2122befc56 Merge pull request #8946 from dokku/dependabot/go_modules/plugins/scheduler-k3s/helm.sh/helm/v3-3.21.4
chore(deps): bump helm.sh/helm/v3 from 3.21.3 to 3.21.4 in /plugins/scheduler-k3s
2026-08-18 23:21:35 -04:00
dependabot[bot]
f494537817 chore(deps): bump sqlparse in /tests/apps/dockerfile-release
Bumps [sqlparse](https://github.com/andialbrecht/sqlparse) from 0.5.5 to 0.6.0.
- [Changelog](https://github.com/andialbrecht/sqlparse/blob/master/CHANGELOG)
- [Commits](https://github.com/andialbrecht/sqlparse/compare/0.5.5...0.6.0)

---
updated-dependencies:
- dependency-name: sqlparse
  dependency-version: 0.6.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-17 21:29:38 +00:00
dependabot[bot]
6464096917 chore(deps): bump helm.sh/helm/v3 in /plugins/scheduler-k3s
Bumps [helm.sh/helm/v3](https://github.com/helm/helm) from 3.21.3 to 3.21.4.
- [Commits](https://github.com/helm/helm/compare/v3.21.3...v3.21.4)

---
updated-dependencies:
- dependency-name: helm.sh/helm/v3
  dependency-version: 3.21.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-17 13:55:34 +00:00
dependabot[bot]
b1273cc4fe chore(deps): bump golang in /tests/apps/zombies-dockerfile-no-tini
Bumps golang from 1.26.5 to 1.26.6.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-17 13:53:00 +00:00
dependabot[bot]
4a6471ba16 chore(deps): bump golang in /tests/apps/go-fail-postdeploy
Bumps golang from 1.26.5 to 1.26.6.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-17 13:53:00 +00:00
dependabot[bot]
16936697a5 chore(deps): bump golang in /tests/apps/go-fail-predeploy
Bumps golang from 1.26.5 to 1.26.6.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-17 13:52:55 +00:00
dependabot[bot]
50ad9cfb09 chore(deps): bump golang from 1.26.5 to 1.26.6 in /tests/apps/gogrpc
Bumps golang from 1.26.5 to 1.26.6.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-17 13:52:55 +00:00
dependabot[bot]
140895f4cc chore(deps): bump golang in /tests/apps/zombies-dockerfile-tini
Bumps golang from 1.26.5 to 1.26.6.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-17 13:52:48 +00:00
Jose Diaz-Gonzalez
a0bf26543e Merge pull request #8939 from dokku/dependabot/go_modules/tests/apps/gogrpc/google.golang.org/protobuf-1.36.12
chore(deps): bump google.golang.org/protobuf from 1.36.11 to 1.36.12 in /tests/apps/gogrpc
2026-08-13 15:09:33 -04:00
dependabot[bot]
fd95223052 chore(deps): bump google.golang.org/protobuf in /tests/apps/gogrpc
Bumps google.golang.org/protobuf from 1.36.11 to 1.36.12.

---
updated-dependencies:
- dependency-name: google.golang.org/protobuf
  dependency-version: 1.36.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-13 13:52:25 +00:00
Jose Diaz-Gonzalez
4c3d43a3ac Merge pull request #8937 from dokku/8912-cron-containers-are-never-retired-past-their-active-deadline
Retire cron containers past their active deadline
2026-08-12 16:26:44 -04:00
Jose Diaz-Gonzalez
96d726c43c fix: retire cron containers past their active deadline
Cron containers were never reaped once they exceeded their active deadline, so a hung cron task ran indefinitely instead of being retired after 24 hours as documented. `cron:run` now also accepts a `--ttl-seconds` argument, matching the one `dokku run` already takes.
2026-08-12 13:11:34 -04:00
Dokku Bot
80bfde6dc9 Release 0.38.27
# History

## 0.38.27

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.27/bootstrap.sh
sudo DOKKU_TAG=v0.38.27 bash bootstrap.sh
```

### Bug Fixes

- #8933: @josegonzalez Do not require a local image for k3s deploys
- #8930: @josegonzalez Do not import an already-migrated ENV file
- #8919: @josegonzalez Regenerate vector config on app lifecycle changes
- #8917: @josegonzalez Apply app-label-alias to shipped events

### New Features

- #8934: @josegonzalez Report traefik dns-provider env vars as global keys
- #8920: @josegonzalez Add storage directory mode and removal flags
- #8914: @josegonzalez Add vector-cron-sink for scheduled cron task output

### Tests

- #8931: @dependabot[bot] chore(deps): bump djangorestframework from 3.17.2 to 3.18.0 in /tests/apps/dockerfile-release
- #8927: @dependabot[bot] chore(deps): bump djangorestframework from 3.17.1 to 3.17.2 in /tests/apps/dockerfile-release
- #8923: @dependabot[bot] chore(deps): bump python from 3.15.0b4-bookworm to 3.15.0rc1-bookworm in /tests/apps/dockerfile-release

### Dependencies

- #8926: @dependabot[bot] chore(deps): bump github.com/gliderlabs/sigil from 0.12.0 to 0.12.1 in /plugins/nginx-vhosts
- #8925: @dependabot[bot] chore(deps): bump packaging from 26.2 to 26.3 in /docs/_build
- #8921: @dokku-bot chore: bump pack to 0.40.9
- #8924: @dependabot[bot] chore(deps): bump soupsieve from 2.9.1 to 2.9.2 in /docs/_build
- #8922: @dependabot[bot] chore(deps): bump python from 3.15.0b4-alpine to 3.15.0rc1-alpine in /docs/_build
- #8915: @dokku-bot chore: bump herokuish to 0.11.15
2026-08-12 08:54:47 +00:00
Jose Diaz-Gonzalez
0bfd35dada Merge pull request #8934 from dokku/8928-traefik-report-does-not-surface-the-dns-provider-properties
Report traefik dns-provider env vars as global keys
2026-08-12 04:52:58 -04:00
Jose Diaz-Gonzalez
69b74cbe7d Merge pull request #8933 from dokku/k3s-do-not-require-image-for-ps-restart
Do not require a local image for k3s deploys
2026-08-12 04:52:52 -04:00
Jose Diaz-Gonzalez
81a929d768 fix: report traefik dns-provider env vars as global keys
The dynamic `dns-provider-*` properties were reported as `--traefik-dns-provider-<env_var>`, outside the `global`/`computed` namespace every other traefik property uses, so a consumer reading the json report could not tell which of the two a key represented. They are now reported as `--traefik-global-dns-provider-<env_var>`. The `basic-auth-password` property is a credential as well and is now masked in the default report output on the same terms as the dns provider values, meaning the raw value is returned only for `--format json` or when the flag is queried by name.
2026-08-12 03:22:04 -04:00
Jose Diaz-Gonzalez
1d2c7424aa fix: do not require a local image for k3s deploys
Kubernetes pulls the app image itself, so a k3s host is free to reap its local copy while the workload keeps running, which the `registry` plugin already does on its own. Deploys, restarts, `dokku run`, and in-cluster cron no longer assert that the image is present locally, falling back to the metadata recorded in the app's current Helm release. A `ps:restart` naming a single process type now rolls only that process type's pods rather than silently redeploying every one. Apps with an `app.json` postdeploy task still require the image locally, as that task runs on the Dokku host.
2026-08-12 02:14:56 -04:00
Jose Diaz-Gonzalez
adf2bd14fb Merge pull request #8930 from dokku/8929-0-38-26-regression-drainlegacyenvfile-silently-overwrites-current-config-with-the-stale-legacy-env-file
fix: do not import an already-migrated ENV file
2026-08-12 02:13:59 -04:00
Jose Diaz-Gonzalez
54fe86ecd8 Merge pull request #8931 from dokku/dependabot/pip/tests/apps/dockerfile-release/djangorestframework-3.18.0
chore(deps): bump djangorestframework from 3.17.2 to 3.18.0 in /tests/apps/dockerfile-release
2026-08-11 19:38:51 -04:00
Jose Diaz-Gonzalez
25a5bacde9 docs: note the preserved ENV file can be deleted
The preserved copy holds everything the legacy file was not allowed to import, which includes keys that had been `config:unset` on purpose, so a revoked secret can outlive its revocation in a file `dokku config:*` no longer reads. Nothing said the copy was the operator's to remove once reviewed.
2026-08-11 19:11:06 -04:00
dependabot[bot]
71df7da367 chore(deps): bump djangorestframework in /tests/apps/dockerfile-release
Bumps [djangorestframework](https://github.com/encode/django-rest-framework) from 3.17.2 to 3.18.0.
- [Release notes](https://github.com/encode/django-rest-framework/releases)
- [Commits](https://github.com/encode/django-rest-framework/compare/3.17.2...3.18.0)

---
updated-dependencies:
- dependency-name: djangorestframework
  dependency-version: 3.18.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-11 13:55:03 +00:00
Jose Diaz-Gonzalez
685f16e6b1 fix: do not import an already-migrated ENV file
Releases 0.38.0 through 0.38.25 recorded the ENV file migration and deliberately left the file at the old path, so 0.38.26 treating a leftover file as a hand-edit replayed the environment as it stood at that upgrade over every `config:set` and `config:unset` made since, reinstating variables and secrets that had been deliberately unset. A file found at the old path once its migration is on record is no longer imported: it is removed when it agrees with the current config, and is otherwise moved aside to `ENV.migrated` with the keys it disagrees on named in a warning. That warning now reaches the operator during an upgrade rather than being swallowed, which is why the overwrite went unreported.
2026-08-10 17:58:10 -04:00
Jose Diaz-Gonzalez
2d34caec00 Merge pull request #8920 from dokku/8913-storage-host-directories-have-no-mode-flag-and-no-removal-path
Add storage directory mode and removal flags
2026-08-10 17:22:31 -04:00
Jose Diaz-Gonzalez
4e169e8842 Merge pull request #8927 from dokku/dependabot/pip/tests/apps/dockerfile-release/djangorestframework-3.17.2
chore(deps): bump djangorestframework from 3.17.1 to 3.17.2 in /tests/apps/dockerfile-release
2026-08-10 15:03:49 -04:00
Jose Diaz-Gonzalez
9c31ff8792 Merge pull request #8919 from dokku/8918-renaming-or-cloning-an-app-silently-stops-vector-log-shipping
Regenerate vector config on app lifecycle changes
2026-08-10 15:03:22 -04:00
Jose Diaz-Gonzalez
43163f2719 Merge pull request #8926 from dokku/dependabot/go_modules/plugins/nginx-vhosts/github.com/gliderlabs/sigil-0.12.1
chore(deps): bump github.com/gliderlabs/sigil from 0.12.0 to 0.12.1 in /plugins/nginx-vhosts
2026-08-10 15:03:10 -04:00
Jose Diaz-Gonzalez
6c4809e850 Merge pull request #8923 from dokku/dependabot/docker/tests/apps/dockerfile-release/python-3.15.0rc1-bookworm
chore(deps): bump python from 3.15.0b4-bookworm to 3.15.0rc1-bookworm in /tests/apps/dockerfile-release
2026-08-10 15:03:02 -04:00
Jose Diaz-Gonzalez
6eba85e0b2 Merge pull request #8925 from dokku/dependabot/pip/docs/_build/packaging-26.3
chore(deps): bump packaging from 26.2 to 26.3 in /docs/_build
2026-08-10 15:02:52 -04:00
Jose Diaz-Gonzalez
44b0414a4d Merge pull request #8921 from dokku/chore/bump-pack-0.40.9
chore: bump pack to 0.40.9
2026-08-10 15:02:41 -04:00
Jose Diaz-Gonzalez
836843d5cd Merge pull request #8924 from dokku/dependabot/pip/docs/_build/soupsieve-2.9.2
chore(deps): bump soupsieve from 2.9.1 to 2.9.2 in /docs/_build
2026-08-10 15:02:34 -04:00
Jose Diaz-Gonzalez
c110a3eb23 Merge pull request #8922 from dokku/dependabot/docker/docs/_build/python-3.15.0rc1-alpine
chore(deps): bump python from 3.15.0b4-alpine to 3.15.0rc1-alpine in /docs/_build
2026-08-10 15:02:25 -04:00
Jose Diaz-Gonzalez
74f9acf7ba refactor: align storage:set with dokku conventions
`storage:set` now takes `<name> <property> [<value>]` like every other `:set` command, where omitting the value unsets the property. Previously it took flags and could not distinguish an empty value from an omitted one, so nothing it set could ever be cleared. The flag form keeps working and emits a deprecation warning.

Annotations and labels move to `storage:annotations:set`, `storage:annotations:report`, `storage:labels:set`, and `storage:labels:report`, matching the `scheduler-k3s` equivalents. These operate on a single key, so clearing one leaves the rest in place rather than replacing the whole map as the `--annotation` and `--label` flags do.
2026-08-10 15:00:45 -04:00
dependabot[bot]
3e412ccae0 chore(deps): bump djangorestframework in /tests/apps/dockerfile-release
Bumps [djangorestframework](https://github.com/encode/django-rest-framework) from 3.17.1 to 3.17.2.
- [Release notes](https://github.com/encode/django-rest-framework/releases)
- [Commits](https://github.com/encode/django-rest-framework/compare/3.17.1...3.17.2)

---
updated-dependencies:
- dependency-name: djangorestframework
  dependency-version: 3.17.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-10 13:55:27 +00:00
dependabot[bot]
6150c69f9f chore(deps): bump github.com/gliderlabs/sigil in /plugins/nginx-vhosts
Bumps [github.com/gliderlabs/sigil](https://github.com/gliderlabs/sigil) from 0.12.0 to 0.12.1.
- [Release notes](https://github.com/gliderlabs/sigil/releases)
- [Commits](https://github.com/gliderlabs/sigil/compare/v0.12.0...v0.12.1)

---
updated-dependencies:
- dependency-name: github.com/gliderlabs/sigil
  dependency-version: 0.12.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-10 13:54:22 +00:00
dependabot[bot]
210c428c3d chore(deps): bump packaging from 26.2 to 26.3 in /docs/_build
Bumps [packaging](https://github.com/pypa/packaging) from 26.2 to 26.3.
- [Release notes](https://github.com/pypa/packaging/releases)
- [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pypa/packaging/compare/26.2...26.3)

---
updated-dependencies:
- dependency-name: packaging
  dependency-version: '26.3'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-10 13:53:36 +00:00
dependabot[bot]
464eb88152 chore(deps): bump soupsieve from 2.9.1 to 2.9.2 in /docs/_build
Bumps [soupsieve](https://github.com/facelessuser/soupsieve) from 2.9.1 to 2.9.2.
- [Release notes](https://github.com/facelessuser/soupsieve/releases)
- [Commits](https://github.com/facelessuser/soupsieve/compare/2.9.1...2.9.2)

---
updated-dependencies:
- dependency-name: soupsieve
  dependency-version: 2.9.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-10 13:53:29 +00:00
dependabot[bot]
35f54a5e45 chore(deps): bump python in /tests/apps/dockerfile-release
Bumps python from 3.15.0b4-bookworm to 3.15.0rc1-bookworm.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.15.0rc1-bookworm
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-10 13:53:09 +00:00
dependabot[bot]
e7ab73d173 chore(deps): bump python in /docs/_build
Bumps python from 3.15.0b4-alpine to 3.15.0rc1-alpine.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.15.0rc1-alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-10 13:52:51 +00:00
Dokku Bot
df053f6039 chore: bump pack to 0.40.9 2026-08-10 06:29:01 +00:00
Jose Diaz-Gonzalez
87b240054f feat: add storage directory mode and removal flags
`storage:create` and `storage:set` accept a `--mode` flag that sets the octal permissions of a docker-local host directory, and `storage:destroy` accepts a `--destroy-host-dir` flag that removes the directory along with its contents. A docker-local entry also honors `--reclaim-policy Delete` at destroy time now, matching how that policy governs a k3s PersistentVolume. Both are limited to the default `/var/lib/dokku/data/storage/<name>` location, the same restriction `--chown` already carries. `storage:set` applies `--chown` and `--mode` to the directory rather than only recording them.
2026-08-10 01:23:10 -04:00
Jose Diaz-Gonzalez
b43929df27 fix: regenerate vector config on app lifecycle changes
The generated vector config is a snapshot of the app list and their sink properties, but it was only ever written by `logs:set` and `logs:vector-start`. Renaming an app left a source filtering on a label no container carries and gave the new name no source at all, so the app kept a sink with nothing feeding it. Cloning produced the same result for the clone, and destroying an app left its source and sink behind, the latter still pointing at an endpoint decommissioned along with the app. The global relabel transform embeds app names directly in generated VRL, so a rename also left behind a branch naming an app that no longer existed. Every case was silent, and the only repair was an operator running `logs:vector-start`. The `post-app-clone-setup`, `post-app-rename-setup` and `post-delete` triggers now rewrite the config, warning rather than failing so that a config write cannot abort the app operation whose state it is derived from.

Closes #8918.
2026-08-09 23:53:12 -04:00
Jose Diaz-Gonzalez
39df6e3855 Merge pull request #8917 from dokku/8916-setting-app-label-alias-silently-disables-vector-log-collection
Apply app-label-alias to shipped events
2026-08-09 21:13:03 -04:00
Jose Diaz-Gonzalez
5b5d3d761b fix: apply app-label-alias to shipped events
The alias was only ever used to build the `include_labels` filter on the generated vector source, while dokku labels containers with `com.dokku.app-name` unconditionally. Setting the property therefore pointed the source at a label no container carries, and log collection stopped without any error. The source now always filters the label dokku applies, and a generated remap renames the field on its way to the sink, which is what the property was documented to do. An app whose own alias differs from the global one gets a branch in the global pipeline, so a per-app value is honored even when the app ships through the global sink.

Closes #8916.
2026-08-09 14:01:43 -04:00
Jose Diaz-Gonzalez
d767dd83f1 Merge pull request #8914 from dokku/feat/vector-cron-sink
Add vector-cron-sink for scheduled cron task output
2026-08-09 13:16:21 -04:00
Jose Diaz-Gonzalez
3edb5a3066 Merge pull request #8915 from dokku/chore/bump-herokuish-0.11.15
chore: bump herokuish to 0.11.15
2026-08-09 13:14:19 -04:00
Jose Diaz-Gonzalez
4a1bdc9bdf style: satisfy shfmt pipeline continuation formatting 2026-08-09 02:26:58 -04:00
Jose Diaz-Gonzalez
3d02d81562 fix: stop logs tests leaking a global app-label-alias
The `app-label-alias` test left the global property set, so every later test in the file generated a vector source filtering on a label that dokku never applies to a container, silently collecting nothing. Clearing it in teardown restores log collection for the rest of the file. The cron routing test now asserts against console sinks rather than files, since the sink an event reached is identifiable from vector's own output without depending on a writable host mount, and its task sleeps either side of its output because a cron container that exits immediately is removed before vector can attach to it.
2026-08-09 02:22:13 -04:00
Dokku Bot
8341c7cdcb chore: bump herokuish to 0.11.15 2026-08-09 06:15:51 +00:00
Dokku Bot
95f9d4f9b7 Release 0.38.26
# History

## 0.38.26

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.26/bootstrap.sh
sudo DOKKU_TAG=v0.38.26 bash bootstrap.sh
```

### Bug Fixes

- #8906: @josegonzalez Match docker options by shell word when removing

### New Features

- #8911: @josegonzalez Route wildcard domains through traefik on k3s
- #8909: @josegonzalez Support manually managed cert issuers on k3s
- #8903: @josegonzalez Support kernel sysctls on the k3s scheduler
- #8856: @youdie006 Add pre-parsed port_mappings to ports:report json

### Refactors

- #8863: @josegonzalez Move host-crontab generation into cron plugin

### Documentation

- #8908: @josegonzalez Document --global on scheduler-k3s report and set
- #8858: @bakatz Added instructions for restoring backups on different CPU architectures.

### Tests

- #8893: @dependabot[bot] chore(deps): bump django from 5.2.16 to 5.2.17 in /tests/apps/dockerfile-release
- #8891: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 293 to 294 in /tests/apps/php
- #8877: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.82.1 to 1.83.0 in /tests/apps/gogrpc
- #8874: @dependabot[bot] chore(deps): bump sass from 1.101.7 to 1.102.0 in /tests/apps/multi
- #8870: @dependabot[bot] chore(deps): bump sass from 1.101.6 to 1.101.7 in /tests/apps/multi
- #8866: @dependabot[bot] chore(deps): bump sass from 1.101.3 to 1.101.6 in /tests/apps/multi
- #8860: @dependabot[bot] chore(deps): bump setuptools from 78.1.1 to 83.0.0 in /tests/apps/dockerfile-release
- #8859: @dependabot[bot] chore(deps): bump immutable from 5.1.5 to 5.1.9 in /tests/apps/multi
- #8855: @dependabot[bot] chore(deps): bump sass from 1.101.0 to 1.101.3 in /tests/apps/multi
- #8857: @dependabot[bot] chore(deps): bump body-parser from 2.2.1 to 2.3.0 in /tests/apps/checks-root
- #8853: @dependabot[bot] chore(deps): bump python from 3.15.0b3-bookworm to 3.15.0b4-bookworm in /tests/apps/dockerfile-release

### Dependencies

- #8905: @dependabot[bot] chore(deps): bump oras.land/oras-go/v2 from 2.6.1 to 2.6.2 in /plugins/scheduler-k3s
- #8869: @dependabot[bot] chore(deps): bump github.com/mattn/go-isatty from 0.0.23 to 0.0.24 in /plugins/app-json
- #8887: @dependabot[bot] chore(deps): bump github.com/kedacore/keda/v2 from 2.20.1 to 2.20.2 in /plugins/scheduler-k3s
- #8883: @dokku-bot chore: bump docker-container-healthchecker to 0.16.0
- #8886: @dependabot[bot] chore(deps): update markdown requirement from <3.11,>=3.10.2 to >=3.10.3,<3.11 in /docs/_build
- #8892: @dependabot[bot] chore(deps): bump traefik from v3.7.9 to v3.7.10 in /plugins/traefik-vhosts
- #8885: @dokku-bot chore: bump dokku-update to 0.10.0
- #8884: @dokku-bot chore: bump procfile-util to 0.20.8
- #8882: @dokku-bot chore: bump docker-image-labeler to 0.10.0
- #8888: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.11.53 to 2.11.54 in /plugins/scheduler-k3s
- #8900: @dokku-bot chore: bump gliderlabs-sigil to 0.12.1
- #8899: @dokku-bot chore: bump herokuish to 0.11.14
- #8898: @dokku-bot chore: bump netrc to 0.11.1
- #8897: @dokku-bot chore: bump dokku-event-listener to 0.20.1
- #8896: @dokku-bot chore: bump sshcommand to 0.20.2
- #8895: @dokku-bot chore: bump lambda-builder to 0.9.4
- #8894: @dokku-bot chore: bump plugn to 0.17.1
- #8876: @dependabot[bot] chore(deps): bump github.com/cert-manager/cert-manager from 1.21.0 to 1.21.1 in /plugins/scheduler-k3s
- #8873: @dependabot[bot] chore(deps): bump traefik from v3.7.8 to v3.7.9 in /plugins/traefik-vhosts
- #8872: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.11.52 to 2.11.53 in /plugins/scheduler-k3s
- #8871: @dependabot[bot] chore(deps): bump k8s.io/kubernetes from 1.36.2 to 1.36.3 in /plugins/scheduler-k3s
- #8868: @dependabot[bot] chore(deps): bump k8s.io/kubectl from 0.36.2 to 0.36.3 in /plugins/scheduler-k3s
- #8867: @dependabot[bot] chore(deps): bump k8s.io/client-go from 0.36.2 to 0.36.3 in /plugins/scheduler-k3s
- #8865: @dependabot[bot] chore(deps): bump github.com/fluxcd/pkg/kustomize from 1.38.0 to 1.39.0 in /plugins/scheduler-k3s
- #8864: @dependabot[bot] chore(deps): bump soupsieve from 2.9 to 2.9.1 in /docs/_build
- #8854: @dependabot[bot] chore(deps): bump python from 3.15.0b3-alpine to 3.15.0b4-alpine in /docs/_build
- #8852: @dependabot[bot] chore(deps): bump soupsieve from 2.8.4 to 2.9 in /docs/_build
- #8851: @dependabot[bot] chore(deps): bump mkdocs-material from 9.7.6 to 9.7.7 in /docs/_build
- #8850: @dependabot[bot] chore(deps): bump actions/setup-python from 6 to 7

### Other

- #8907: @josegonzalez fix: migrate env files before reading deprecated vars
- #8881: @josegonzalez Ignore minor and patch updates for github actions
2026-08-09 05:57:36 +00:00
Jose Diaz-Gonzalez
52b26a3760 feat: add vector-cron-sink for scheduled cron task output
Scheduled cron task output previously reached only the `dokku` user's cron mail, and could not be redirected because `app.json` rejects bare shell operators in a cron `command`. Setting `vector-cron-sink` on an app or globally routes that output to a dedicated sink instead, on both the `docker-local` and `k3s` schedulers, which keeps log destinations under operator control rather than in a deployed repository. Cron events carry `dokku_app` and `dokku_cron_id` fields so a sink can give each task its own destination. This also fixes a `k3s` bug where configuring a global `vector-sink` silently removed the vector prometheus exporter sink.
2026-08-09 01:10:21 -04:00
Jose Diaz-Gonzalez
047be485a2 Merge pull request #8911 from dokku/8910-k3s-scheduler-traefik-ingress-cannot-route-wildcard-domains
Route wildcard domains through traefik on k3s
2026-08-08 22:44:38 -04:00
Jose Diaz-Gonzalez
bb7335f88e feat: route wildcard domains through traefik on k3s
Traefik matches hosts exactly, so an app serving a wildcard domain under the `traefik` ingress class had a valid certificate but silently 404d on every request. Wildcard domains now render as a `HostRegexp` rule that matches a single label, the same semantics as a Kubernetes wildcard host, so both ingress classes behave the same. Those routes carry an explicit low priority so an exact domain on any app still wins over another app's wildcard, mirroring ingress-nginx.
2026-08-08 19:15:10 -04:00
Jose Diaz-Gonzalez
6c823e3b8a Merge pull request #8909 from dokku/8901-k3s-scheduler-custom-cert-issuer-name
Support manually managed cert issuers on k3s
2026-08-08 18:36:34 -04:00
Jose Diaz-Gonzalez
d134e75371 feat: support manually managed cert issuers on k3s
The `cert-issuer-name` and `cert-issuer-kind` properties point an app's generated `Certificate` at a cert-manager issuer created outside of Dokku, allowing certificates to be issued through solvers the built-in letsencrypt integration cannot use, such as `dns01` for wildcard certificates. Setting an issuer enables https on its own, as a manually managed issuer has no email for Dokku to configure. An imported certificate still takes precedence, and `letsencrypt-server false` remains the single off switch. Dokku warns before a build starts when the referenced issuer is absent from the cluster, without blocking the deploy. Wildcard domains no longer collide with their apex domain when generating ingress names, and `letsencrypt-server` values are now validated when set rather than at deploy time.
2026-08-08 15:16:12 -04:00
Jose Diaz-Gonzalez
2da48f4f86 Merge pull request #8908 from dokku/8861-scheduler-k3s-report-and-scheduler-k3s-set-help-omits-the-global-option
Document --global on scheduler-k3s report and set
2026-08-08 01:47:48 -04:00
Jose Diaz-Gonzalez
66bcfbd1ed fix: document --global on scheduler-k3s report and set
The usage strings for `scheduler-k3s:report` and `scheduler-k3s:set` omitted the `--global` option, which is the only way to reach the scheduler-wide report since a bare `scheduler-k3s:report` iterates every app, and `:report` also omitted `--format stdout|json`. The command listing in the k3s documentation is resynced with the help output, which additionally restores flags that had been dropped from `scheduler-k3s:cluster:add`, `scheduler-k3s:cluster:list`, and `scheduler-k3s:initialize`.
2026-08-08 01:43:40 -04:00
Jose Diaz-Gonzalez
e82a21a43a Merge pull request #8907 from dokku/8875-0-38-migration-plugins-ordered-before-config-silently-fail-to-migrate-their-dokku-config-vars
fix: migrate env files before reading deprecated vars
2026-08-08 01:17:34 -04:00
Jose Diaz-Gonzalez
e24859bfe6 test: stage the migration marker through the trigger
The hand-written marker file was created as root, which the config-migrate-env
trigger could not overwrite when it ran under a different user. Draining once up
front records the migration through the same code path the assertion exercises.
2026-08-07 17:56:15 -04:00
Jose Diaz-Gonzalez
70dc921967 fix: migrate env files before reading deprecated vars
Install steps run in alphabetical order of the enabled plugin directory, so `apps`, `builder`, and `checks` read an app's environment before the `config` plugin had moved the `ENV` file to its new location. The read came back empty, so their deprecated `DOKKU_*` variables were never migrated to the matching plugin property and were never unset, with nothing reported either way: `dokku config:show` kept listing the variable while the plugin behaved as though it were unset. The relocation now runs before any deprecated variable is read, whatever the install order, and each old file is removed as soon as it has been drained rather than on a later install, which also covers the global file that was never removed at all. A file that reappears at the old path can only have been written by hand, so it is merged in with a warning naming its keys instead of being discarded.
2026-08-07 16:43:56 -04:00
Jose Diaz-Gonzalez
2527d57dfc Merge pull request #8905 from dokku/dependabot/go_modules/plugins/scheduler-k3s/oras.land/oras-go/v2-2.6.2
chore(deps): bump oras.land/oras-go/v2 from 2.6.1 to 2.6.2 in /plugins/scheduler-k3s
2026-08-07 16:14:55 -04:00
Jose Diaz-Gonzalez
eedcb90e29 Merge pull request #8906 from dokku/8904-docker-options-remove-silently-no-ops-for-options-migrated-from-pre-0-38-25-docker-options-files
Match docker options by shell word when removing
2026-08-07 15:38:41 -04:00
Jose Diaz-Gonzalez
8d4e7d9793 fix: match docker options by shell word when removing
Options drained out of the pre-0.38.0 `DOCKER_OPTIONS_<PHASE>` files were copied verbatim rather than re-serialized the way `docker-options:add` stores them, so `docker-options:remove` compared the canonical string it builds against a stored value that could never match it and exited successfully without removing anything. Removal now matches stored options by shell word, and stored options are rewritten into the canonical form once on upgrade, which additionally splits an entry that carried several flags on a single line into one entry per flag so a single flag can be removed and so the readers that match on a flag prefix see one value per entry. The leftover `.migrated` sentinel drain is restored to running ahead of the global short-circuit that had made it unreachable, and the plugin's Go tests are added to the test target that had never run them.
2026-08-07 13:35:37 -04:00
Jose Diaz-Gonzalez
30a72f8d95 Merge pull request #8863 from dokku/8862-move-host-crontab-generation-into-the-cron-plugin
Move host-crontab generation into cron plugin
2026-08-07 12:36:40 -04:00
Jose Diaz-Gonzalez
da085c5ebb Merge branch 'master' into 8862-move-host-crontab-generation-into-the-cron-plugin 2026-08-07 12:36:32 -04:00
Jose Diaz-Gonzalez
e9b03e3dd2 Merge pull request #8869 from dokku/dependabot/go_modules/plugins/app-json/github.com/mattn/go-isatty-0.0.24
chore(deps): bump github.com/mattn/go-isatty from 0.0.23 to 0.0.24 in /plugins/app-json
2026-08-07 12:34:25 -04:00
Jose Diaz-Gonzalez
5895c51a4e Merge pull request #8887 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/kedacore/keda/v2-2.20.2
chore(deps): bump github.com/kedacore/keda/v2 from 2.20.1 to 2.20.2 in /plugins/scheduler-k3s
2026-08-07 12:33:51 -04:00
Jose Diaz-Gonzalez
aaa00a4934 Merge pull request #8883 from dokku/chore/bump-docker-container-healthchecker-0.16.0
chore: bump docker-container-healthchecker to 0.16.0
2026-08-07 12:33:44 -04:00
Jose Diaz-Gonzalez
20d6b57355 Merge pull request #8886 from dokku/dependabot/pip/docs/_build/markdown-gte-3.10.3-and-lt-3.11
chore(deps): update markdown requirement from <3.11,>=3.10.2 to >=3.10.3,<3.11 in /docs/_build
2026-08-07 12:28:08 -04:00
Jose Diaz-Gonzalez
5e12f638f4 Merge pull request #8892 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-v3.7.10
chore(deps): bump traefik from v3.7.9 to v3.7.10 in /plugins/traefik-vhosts
2026-08-07 12:27:06 -04:00
Jose Diaz-Gonzalez
6f867485f1 Merge pull request #8893 from dokku/dependabot/pip/tests/apps/dockerfile-release/django-5.2.17
chore(deps): bump django from 5.2.16 to 5.2.17 in /tests/apps/dockerfile-release
2026-08-07 12:26:39 -04:00
Jose Diaz-Gonzalez
e990d8dbfc Merge pull request #8885 from dokku/chore/bump-dokku-update-0.10.0
chore: bump dokku-update to 0.10.0
2026-08-07 12:25:33 -04:00
Jose Diaz-Gonzalez
9529ca8a3f Merge pull request #8884 from dokku/chore/bump-procfile-util-0.20.8
chore: bump procfile-util to 0.20.8
2026-08-07 12:25:25 -04:00
dependabot[bot]
daee1e6c68 chore(deps): bump github.com/kedacore/keda/v2 in /plugins/scheduler-k3s
Bumps [github.com/kedacore/keda/v2](https://github.com/kedacore/keda) from 2.20.1 to 2.20.2.
- [Release notes](https://github.com/kedacore/keda/releases)
- [Changelog](https://github.com/kedacore/keda/blob/main/CHANGELOG.md)
- [Commits](https://github.com/kedacore/keda/compare/v2.20.1...v2.20.2)

---
updated-dependencies:
- dependency-name: github.com/kedacore/keda/v2
  dependency-version: 2.20.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-07 16:25:18 +00:00
dependabot[bot]
6da020a65c chore(deps): bump oras.land/oras-go/v2 in /plugins/scheduler-k3s
Bumps [oras.land/oras-go/v2](https://github.com/oras-project/oras-go) from 2.6.1 to 2.6.2.
- [Release notes](https://github.com/oras-project/oras-go/releases)
- [Changelog](https://github.com/oras-project/oras-go/blob/main/RELEASES.md)
- [Commits](https://github.com/oras-project/oras-go/compare/v2.6.1...v2.6.2)

---
updated-dependencies:
- dependency-name: oras.land/oras-go/v2
  dependency-version: 2.6.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-07 16:25:07 +00:00
Jose Diaz-Gonzalez
973595e0f2 Merge pull request #8882 from dokku/chore/bump-docker-image-labeler-0.10.0
chore: bump docker-image-labeler to 0.10.0
2026-08-07 12:25:04 -04:00
Jose Diaz-Gonzalez
409d364e81 Merge pull request #8891 from dokku/dependabot/composer/tests/apps/php/heroku/heroku-buildpack-php-294
chore(deps-dev): bump heroku/heroku-buildpack-php from 293 to 294 in /tests/apps/php
2026-08-07 12:24:43 -04:00
Jose Diaz-Gonzalez
b37192a847 Merge pull request #8903 from dokku/scheduler-k3s-sysctls
feat: support kernel sysctls on the k3s scheduler
2026-08-07 12:24:22 -04:00
Jose Diaz-Gonzalez
2ed9294b6b Merge pull request #8888 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/traefik/traefik/v2-2.11.54
chore(deps): bump github.com/traefik/traefik/v2 from 2.11.53 to 2.11.54 in /plugins/scheduler-k3s
2026-08-07 12:22:44 -04:00
Jose Diaz-Gonzalez
2adb01f8c6 Merge pull request #8900 from dokku/chore/bump-gliderlabs-sigil-0.12.1
chore: bump gliderlabs-sigil to 0.12.1
2026-08-07 12:21:49 -04:00
Jose Diaz-Gonzalez
6f4117529a Merge pull request #8899 from dokku/chore/bump-herokuish-0.11.14
chore: bump herokuish to 0.11.14
2026-08-07 12:21:41 -04:00
Jose Diaz-Gonzalez
5741667d16 Merge pull request #8898 from dokku/chore/bump-netrc-0.11.1
chore: bump netrc to 0.11.1
2026-08-07 12:21:33 -04:00
Jose Diaz-Gonzalez
d0d1fc019c Merge pull request #8897 from dokku/chore/bump-dokku-event-listener-0.20.1
chore: bump dokku-event-listener to 0.20.1
2026-08-07 12:21:25 -04:00
Jose Diaz-Gonzalez
9c894401c8 Merge pull request #8896 from dokku/chore/bump-sshcommand-0.20.2
chore: bump sshcommand to 0.20.2
2026-08-07 12:21:16 -04:00
Jose Diaz-Gonzalez
69cff6a6b1 Merge pull request #8895 from dokku/chore/bump-lambda-builder-0.9.4
chore: bump lambda-builder to 0.9.4
2026-08-07 12:21:04 -04:00
Jose Diaz-Gonzalez
ea5e08754d Merge pull request #8894 from dokku/chore/bump-plugn-0.17.1
chore: bump plugn to 0.17.1
2026-08-07 12:20:56 -04:00
Jose Diaz-Gonzalez
44cd566178 feat: manage node-level kernel sysctls on the k3s scheduler
Sysctls the kernel does not namespace, such as `vm.max_map_count`, cannot be set from a pod spec and previously had no answer beyond editing `/etc/sysctl.d` on each host by hand. `scheduler-k3s:node-sysctls:set` now applies them through a privileged daemonset, which reaches nodes joined later and reapplies after a reboot. Sysctls may be scoped to a node profile, with a profile scope inheriting the global values and overriding them on conflict so that every node is covered by exactly one daemonset. Clearing a sysctl stops dokku managing it but does not restore the previous value, which persists until the node reboots.
2026-08-07 09:10:00 -04:00
Jose Diaz-Gonzalez
cd1089500b feat: translate docker-options --sysctl on the k3s scheduler
The `docker-local` scheduler supports `--sysctl` for free because docker options are passed verbatim to `docker run`, but the k3s scheduler silently dropped it. Namespaced sysctls now render into the pod's `securityContext.sysctls` for deployments, cron jobs, and one-off runs. A sysctl the kernel does not namespace fails the deploy instead of being dropped, since it cannot take effect within a pod regardless of what was requested.
2026-08-07 05:43:00 -04:00
Jose Diaz-Gonzalez
f050726f1a feat: label nodes with the node profile they joined with
Node profiles controlled how a node joined the cluster but left no trace on the node afterwards, so a profile could not be selected against with `kubectl`, a `nodeSelector`, or a node affinity rule. Nodes joined without a profile are left unlabeled, and the server node created by `scheduler-k3s:initialize` never carries the label since it does not pass through `scheduler-k3s:cluster:add`.
2026-08-07 02:32:34 -04:00
Jose Diaz-Gonzalez
8e17eee653 feat: add --kubelet-args to scheduler-k3s:initialize
The server node created by `scheduler-k3s:initialize` had no way to receive kubelet arguments, unlike nodes joined through `scheduler-k3s:cluster:add` or configured via `scheduler-k3s:profiles:add`. This meant settings such as `allowed-unsafe-sysctls` were unreachable on a single-node install.
2026-08-07 02:31:12 -04:00
Dokku Bot
bfbfdd3d9e chore: bump gliderlabs-sigil to 0.12.1 2026-08-06 06:55:18 +00:00
Dokku Bot
ac6d2723d9 chore: bump herokuish to 0.11.14 2026-08-06 06:55:16 +00:00
Dokku Bot
ea77396a24 chore: bump netrc to 0.11.1 2026-08-06 06:55:14 +00:00
Dokku Bot
f182ed4ccb chore: bump dokku-event-listener to 0.20.1 2026-08-06 06:55:11 +00:00
Dokku Bot
4de89c28e9 chore: bump sshcommand to 0.20.2 2026-08-06 06:55:09 +00:00
Dokku Bot
43b69c57bc chore: bump lambda-builder to 0.9.4 2026-08-06 06:55:08 +00:00
Dokku Bot
819f32ff86 chore: bump plugn to 0.17.1 2026-08-06 06:55:07 +00:00
dependabot[bot]
c4c61db92b chore(deps): bump django in /tests/apps/dockerfile-release
Bumps [django](https://github.com/django/django) from 5.2.16 to 5.2.17.
- [Commits](https://github.com/django/django/compare/5.2.16...5.2.17)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 5.2.17
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-05 13:54:45 +00:00
dependabot[bot]
be619eb999 chore(deps): bump traefik in /plugins/traefik-vhosts
Bumps traefik from v3.7.9 to v3.7.10.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: v3.7.10
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-04 13:54:02 +00:00
dependabot[bot]
85eace7c75 chore(deps-dev): bump heroku/heroku-buildpack-php in /tests/apps/php
Bumps [heroku/heroku-buildpack-php](https://github.com/heroku/heroku-buildpack-php) from 293 to 294.
- [Release notes](https://github.com/heroku/heroku-buildpack-php/releases)
- [Changelog](https://github.com/heroku/heroku-buildpack-php/blob/main/CHANGELOG.md)
- [Commits](https://github.com/heroku/heroku-buildpack-php/compare/v293...v294)

---
updated-dependencies:
- dependency-name: heroku/heroku-buildpack-php
  dependency-version: '294'
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-04 13:52:27 +00:00
dependabot[bot]
05c389b586 chore(deps): bump github.com/traefik/traefik/v2
Bumps [github.com/traefik/traefik/v2](https://github.com/traefik/traefik) from 2.11.53 to 2.11.54.
- [Release notes](https://github.com/traefik/traefik/releases)
- [Changelog](https://github.com/traefik/traefik/blob/v2.11.54/CHANGELOG.md)
- [Commits](https://github.com/traefik/traefik/compare/v2.11.53...v2.11.54)

---
updated-dependencies:
- dependency-name: github.com/traefik/traefik/v2
  dependency-version: 2.11.54
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-03 13:54:51 +00:00
dependabot[bot]
a29532bd0d chore(deps): update markdown requirement in /docs/_build
Updates the requirements on [markdown](https://github.com/Python-Markdown/markdown) to permit the latest version.
- [Release notes](https://github.com/Python-Markdown/markdown/releases)
- [Changelog](https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md)
- [Commits](https://github.com/Python-Markdown/markdown/compare/3.10.2...3.10.3)

---
updated-dependencies:
- dependency-name: markdown
  dependency-version: 3.10.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-03 13:53:48 +00:00
Dokku Bot
e186f7be14 chore: bump dokku-update to 0.10.0 2026-08-03 07:08:32 +00:00
Dokku Bot
d1aa41e4f1 chore: bump procfile-util to 0.20.8 2026-08-02 06:53:58 +00:00
Dokku Bot
49f9d63760 chore: bump docker-container-healthchecker to 0.16.0 2026-08-02 06:53:54 +00:00
Dokku Bot
d17a538a2c chore: bump docker-image-labeler to 0.10.0 2026-08-02 06:53:52 +00:00
Jose Diaz-Gonzalez
52f869d7b1 chore: bump go modules 2026-08-01 16:29:09 -04:00
dependabot[bot]
9f1f19a58d chore(deps): bump github.com/mattn/go-isatty in /plugins/app-json
Bumps [github.com/mattn/go-isatty](https://github.com/mattn/go-isatty) from 0.0.23 to 0.0.24.
- [Commits](https://github.com/mattn/go-isatty/compare/v0.0.23...v0.0.24)

---
updated-dependencies:
- dependency-name: github.com/mattn/go-isatty
  dependency-version: 0.0.24
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-01 16:29:09 -04:00
Jose Diaz-Gonzalez
28b4126091 Merge pull request #8876 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/cert-manager/cert-manager-1.21.1
chore(deps): bump github.com/cert-manager/cert-manager from 1.21.0 to 1.21.1 in /plugins/scheduler-k3s
2026-07-31 13:25:22 -04:00
Jose Diaz-Gonzalez
ef50c72a28 Merge pull request #8877 from dokku/dependabot/go_modules/tests/apps/gogrpc/google.golang.org/grpc-1.83.0
chore(deps): bump google.golang.org/grpc from 1.82.1 to 1.83.0 in /tests/apps/gogrpc
2026-07-31 13:25:13 -04:00
Jose Diaz-Gonzalez
3b5b2e32be Merge pull request #8881 from dokku/josegonzalez-patch-1
Ignore minor and patch updates for github actions
2026-07-31 13:24:49 -04:00
Jose Diaz-Gonzalez
87fe6e6925 chore: ignore minor and patch updates for github actions
Add ignore rules for minor and patch updates in Dependabot configuration.
2026-07-31 13:24:06 -04:00
dependabot[bot]
0e4347cb3e chore(deps): bump google.golang.org/grpc in /tests/apps/gogrpc
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.82.1 to 1.83.0.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.82.1...v1.83.0)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.83.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-30 13:52:21 +00:00
dependabot[bot]
fbcfbce944 chore(deps): bump github.com/cert-manager/cert-manager
Bumps [github.com/cert-manager/cert-manager](https://github.com/cert-manager/cert-manager) from 1.21.0 to 1.21.1.
- [Release notes](https://github.com/cert-manager/cert-manager/releases)
- [Changelog](https://github.com/cert-manager/cert-manager/blob/master/RELEASE.md)
- [Commits](https://github.com/cert-manager/cert-manager/compare/v1.21.0...v1.21.1)

---
updated-dependencies:
- dependency-name: github.com/cert-manager/cert-manager
  dependency-version: 1.21.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-29 13:54:14 +00:00
Jose Diaz-Gonzalez
50583b3376 Merge pull request #8874 from dokku/dependabot/npm_and_yarn/tests/apps/multi/sass-1.102.0
chore(deps): bump sass from 1.101.7 to 1.102.0 in /tests/apps/multi
2026-07-27 19:14:59 -04:00
Jose Diaz-Gonzalez
0672a89757 Merge pull request #8873 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-v3.7.9
chore(deps): bump traefik from v3.7.8 to v3.7.9 in /plugins/traefik-vhosts
2026-07-27 19:14:52 -04:00
dependabot[bot]
276f613be1 chore(deps): bump sass from 1.101.7 to 1.102.0 in /tests/apps/multi
Bumps [sass](https://github.com/sass/dart-sass) from 1.101.7 to 1.102.0.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.101.7...1.102.0)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.102.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-27 13:54:13 +00:00
dependabot[bot]
5ed560eb36 chore(deps): bump traefik in /plugins/traefik-vhosts
Bumps traefik from v3.7.8 to v3.7.9.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: v3.7.9
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-27 13:53:31 +00:00
Jose Diaz-Gonzalez
ad5107d09d Merge pull request #8872 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/traefik/traefik/v2-2.11.53
chore(deps): bump github.com/traefik/traefik/v2 from 2.11.52 to 2.11.53 in /plugins/scheduler-k3s
2026-07-24 13:57:37 -04:00
Jose Diaz-Gonzalez
3590d5a19e Merge pull request #8870 from dokku/dependabot/npm_and_yarn/tests/apps/multi/sass-1.101.7
chore(deps): bump sass from 1.101.6 to 1.101.7 in /tests/apps/multi
2026-07-24 11:49:57 -04:00
Jose Diaz-Gonzalez
5acac54752 Merge pull request #8871 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/kubernetes-1.36.3
chore(deps): bump k8s.io/kubernetes from 1.36.2 to 1.36.3 in /plugins/scheduler-k3s
2026-07-24 11:49:48 -04:00
dependabot[bot]
e2214e281a chore(deps): bump github.com/traefik/traefik/v2
Bumps [github.com/traefik/traefik/v2](https://github.com/traefik/traefik) from 2.11.52 to 2.11.53.
- [Release notes](https://github.com/traefik/traefik/releases)
- [Changelog](https://github.com/traefik/traefik/blob/v2.11.53/CHANGELOG.md)
- [Commits](https://github.com/traefik/traefik/compare/v2.11.52...v2.11.53)

---
updated-dependencies:
- dependency-name: github.com/traefik/traefik/v2
  dependency-version: 2.11.53
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-24 13:55:05 +00:00
dependabot[bot]
867924b080 chore(deps): bump k8s.io/kubernetes in /plugins/scheduler-k3s
Bumps [k8s.io/kubernetes](https://github.com/kubernetes/kubernetes) from 1.36.2 to 1.36.3.
- [Release notes](https://github.com/kubernetes/kubernetes/releases)
- [Commits](https://github.com/kubernetes/kubernetes/compare/v1.36.2...v1.36.3)

---
updated-dependencies:
- dependency-name: k8s.io/kubernetes
  dependency-version: 1.36.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-24 13:54:46 +00:00
dependabot[bot]
52a44467f9 chore(deps): bump sass from 1.101.6 to 1.101.7 in /tests/apps/multi
Bumps [sass](https://github.com/sass/dart-sass) from 1.101.6 to 1.101.7.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.101.6...1.101.7)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.101.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-24 13:54:09 +00:00
Jose Diaz-Gonzalez
d9ef6ced6e Merge pull request #8868 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/kubectl-0.36.3
chore(deps): bump k8s.io/kubectl from 0.36.2 to 0.36.3 in /plugins/scheduler-k3s
2026-07-24 00:18:49 -04:00
dependabot[bot]
230a63e3c0 chore(deps): bump k8s.io/kubectl in /plugins/scheduler-k3s
Bumps [k8s.io/kubectl](https://github.com/kubernetes/kubectl) from 0.36.2 to 0.36.3.
- [Commits](https://github.com/kubernetes/kubectl/compare/v0.36.2...v0.36.3)

---
updated-dependencies:
- dependency-name: k8s.io/kubectl
  dependency-version: 0.36.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-24 02:23:01 +00:00
Jose Diaz-Gonzalez
f921e1e1eb Merge pull request #8867 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/client-go-0.36.3
chore(deps): bump k8s.io/client-go from 0.36.2 to 0.36.3 in /plugins/scheduler-k3s
2026-07-23 22:21:40 -04:00
Jose Diaz-Gonzalez
9f4317707e Merge pull request #8866 from dokku/dependabot/npm_and_yarn/tests/apps/multi/sass-1.101.6
chore(deps): bump sass from 1.101.3 to 1.101.6 in /tests/apps/multi
2026-07-23 22:20:19 -04:00
dependabot[bot]
ce88f439dd chore(deps): bump k8s.io/client-go in /plugins/scheduler-k3s
Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.36.2 to 0.36.3.
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kubernetes/client-go/compare/v0.36.2...v0.36.3)

---
updated-dependencies:
- dependency-name: k8s.io/client-go
  dependency-version: 0.36.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-23 13:54:23 +00:00
dependabot[bot]
64785ca0ee chore(deps): bump sass from 1.101.3 to 1.101.6 in /tests/apps/multi
Bumps [sass](https://github.com/sass/dart-sass) from 1.101.3 to 1.101.6.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.101.3...1.101.6)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.101.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-23 13:54:09 +00:00
Jose Diaz-Gonzalez
a78da9abdf Merge pull request #8865 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/fluxcd/pkg/kustomize-1.39.0
chore(deps): bump github.com/fluxcd/pkg/kustomize from 1.38.0 to 1.39.0 in /plugins/scheduler-k3s
2026-07-23 08:52:10 -04:00
Jose Diaz-Gonzalez
022c6be3eb Merge pull request #8864 from dokku/dependabot/pip/docs/_build/soupsieve-2.9.1
chore(deps): bump soupsieve from 2.9 to 2.9.1 in /docs/_build
2026-07-23 08:51:43 -04:00
dependabot[bot]
b925ad0be9 chore(deps): bump github.com/fluxcd/pkg/kustomize
Bumps [github.com/fluxcd/pkg/kustomize](https://github.com/fluxcd/pkg) from 1.38.0 to 1.39.0.
- [Commits](https://github.com/fluxcd/pkg/compare/kustomize/v1.38.0...kustomize/v1.39.0)

---
updated-dependencies:
- dependency-name: github.com/fluxcd/pkg/kustomize
  dependency-version: 1.39.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-22 13:54:29 +00:00
dependabot[bot]
716ad744b8 chore(deps): bump soupsieve from 2.9 to 2.9.1 in /docs/_build
Bumps [soupsieve](https://github.com/facelessuser/soupsieve) from 2.9 to 2.9.1.
- [Release notes](https://github.com/facelessuser/soupsieve/releases)
- [Commits](https://github.com/facelessuser/soupsieve/compare/2.9...2.9.1)

---
updated-dependencies:
- dependency-name: soupsieve
  dependency-version: 2.9.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-22 13:53:32 +00:00
Jose Diaz-Gonzalez
c6b4ea75c1 refactor: move host-crontab generation into cron plugin
Host-crontab generation for `app.json` cron tasks now lives in the `cron` plugin, gated by a new `scheduler-uses-host-cron` trigger that the `docker-local` scheduler answers true while self-managed schedulers such as `k3s` answer false. This lets any host-cron scheduler participate in normal `app.json` cron without coupling to `scheduler-docker-local` or duplicating the crontab writer, while the `k3s` scheduler continues to manage its own in-cluster cron jobs.

Closes #8862.
2026-07-22 08:35:11 -04:00
Jose Diaz-Gonzalez
e3687a62ed Merge pull request #8856 from youdie006/feat/ports-parsed-mappings
Add pre-parsed port_mappings to ports:report json
2026-07-22 04:57:13 -04:00
Jose Diaz-Gonzalez
9c61031f3e docs: add docs and tests for this feature 2026-07-22 03:45:32 -04:00
youdie006
3f13949337 feat: add pre-parsed json string version of port mappings 2026-07-22 03:24:45 -04:00
Jose Diaz-Gonzalez
e7df3a5fd6 Merge pull request #8860 from dokku/dependabot/pip/tests/apps/dockerfile-release/setuptools-83.0.0
chore(deps): bump setuptools from 78.1.1 to 83.0.0 in /tests/apps/dockerfile-release
2026-07-22 03:17:18 -04:00
Jose Diaz-Gonzalez
9e246e2114 Merge pull request #8859 from dokku/dependabot/npm_and_yarn/tests/apps/multi/immutable-5.1.9
chore(deps): bump immutable from 5.1.5 to 5.1.9 in /tests/apps/multi
2026-07-22 03:16:52 -04:00
Jose Diaz-Gonzalez
f440c7794e Merge pull request #8855 from dokku/dependabot/npm_and_yarn/tests/apps/multi/sass-1.101.3
chore(deps): bump sass from 1.101.0 to 1.101.3 in /tests/apps/multi
2026-07-22 03:16:38 -04:00
Jose Diaz-Gonzalez
6116edf16a Merge pull request #8858 from bakatz/patch-3
Added instructions for restoring backups on different CPU architectures.
2026-07-22 03:16:27 -04:00
Jose Diaz-Gonzalez
d2f84a8a1f docs: just remove the directory
We don't use basher, `plugn` actually extracts it from `progrium/go-basher` live.
2026-07-22 03:13:59 -04:00
dependabot[bot]
3bf1079926 chore(deps): bump setuptools in /tests/apps/dockerfile-release
Bumps [setuptools](https://github.com/pypa/setuptools) from 78.1.1 to 83.0.0.
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v78.1.1...v83.0.0)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-version: 83.0.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-22 07:13:34 +00:00
dependabot[bot]
878ca3c2f7 chore(deps): bump immutable from 5.1.5 to 5.1.9 in /tests/apps/multi
Bumps [immutable](https://github.com/immutable-js/immutable-js) from 5.1.5 to 5.1.9.
- [Release notes](https://github.com/immutable-js/immutable-js/releases)
- [Changelog](https://github.com/immutable-js/immutable-js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/immutable-js/immutable-js/compare/v5.1.5...v5.1.9)

---
updated-dependencies:
- dependency-name: immutable
  dependency-version: 5.1.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-22 07:13:25 +00:00
Jose Diaz-Gonzalez
d39064058b Merge pull request #8857 from dokku/dependabot/npm_and_yarn/tests/apps/checks-root/body-parser-2.3.0
chore(deps): bump body-parser from 2.2.1 to 2.3.0 in /tests/apps/checks-root
2026-07-22 03:12:12 -04:00
Jose Diaz-Gonzalez
3c5b03f4ec Merge pull request #8854 from dokku/dependabot/docker/docs/_build/python-3.15.0b4-alpine
chore(deps): bump python from 3.15.0b3-alpine to 3.15.0b4-alpine in /docs/_build
2026-07-22 03:12:04 -04:00
Jose Diaz-Gonzalez
46b6057e97 Merge pull request #8853 from dokku/dependabot/docker/tests/apps/dockerfile-release/python-3.15.0b4-bookworm
chore(deps): bump python from 3.15.0b3-bookworm to 3.15.0b4-bookworm in /tests/apps/dockerfile-release
2026-07-22 03:11:53 -04:00
Ben Katz
bc0104137d Added instructions for restoring backups on different CPU architectures. 2026-07-21 21:56:22 -04:00
dependabot[bot]
3542acc271 chore(deps): bump body-parser in /tests/apps/checks-root
Bumps [body-parser](https://github.com/expressjs/body-parser) from 2.2.1 to 2.3.0.
- [Release notes](https://github.com/expressjs/body-parser/releases)
- [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md)
- [Commits](https://github.com/expressjs/body-parser/compare/v2.2.1...v2.3.0)

---
updated-dependencies:
- dependency-name: body-parser
  dependency-version: 2.3.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-21 19:58:27 +00:00
dependabot[bot]
64e7654453 chore(deps): bump sass from 1.101.0 to 1.101.3 in /tests/apps/multi
Bumps [sass](https://github.com/sass/dart-sass) from 1.101.0 to 1.101.3.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.101.0...1.101.3)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.101.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-21 13:54:12 +00:00
dependabot[bot]
c4af39ff8f chore(deps): bump python in /docs/_build
Bumps python from 3.15.0b3-alpine to 3.15.0b4-alpine.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.15.0b4-alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-21 13:53:18 +00:00
dependabot[bot]
e746ea98f8 chore(deps): bump python in /tests/apps/dockerfile-release
Bumps python from 3.15.0b3-bookworm to 3.15.0b4-bookworm.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.15.0b4-bookworm
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-21 13:53:08 +00:00
Jose Diaz-Gonzalez
491fae6c00 Merge pull request #8852 from dokku/dependabot/pip/docs/_build/soupsieve-2.9
chore(deps): bump soupsieve from 2.8.4 to 2.9 in /docs/_build
2026-07-20 12:12:39 -04:00
Jose Diaz-Gonzalez
2fc0a0ee9c Merge pull request #8851 from dokku/dependabot/pip/docs/_build/mkdocs-material-9.7.7
chore(deps): bump mkdocs-material from 9.7.6 to 9.7.7 in /docs/_build
2026-07-20 12:12:33 -04:00
Jose Diaz-Gonzalez
636558bb28 Merge pull request #8850 from dokku/dependabot/github_actions/actions/setup-python-7
chore(deps): bump actions/setup-python from 6 to 7
2026-07-20 12:12:24 -04:00
dependabot[bot]
43f097e62f chore(deps): bump soupsieve from 2.8.4 to 2.9 in /docs/_build
Bumps [soupsieve](https://github.com/facelessuser/soupsieve) from 2.8.4 to 2.9.
- [Release notes](https://github.com/facelessuser/soupsieve/releases)
- [Commits](https://github.com/facelessuser/soupsieve/compare/2.8.4...2.9)

---
updated-dependencies:
- dependency-name: soupsieve
  dependency-version: '2.9'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-20 13:53:37 +00:00
dependabot[bot]
e3c329c96b chore(deps): bump mkdocs-material from 9.7.6 to 9.7.7 in /docs/_build
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.7.6 to 9.7.7.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.7.6...9.7.7)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-version: 9.7.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-20 13:53:32 +00:00
dependabot[bot]
c9e35498be chore(deps): bump actions/setup-python from 6 to 7
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 6 to 7.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-20 13:52:34 +00:00
Dokku Bot
0537c8d153 Release 0.38.25
# History

## 0.38.25

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.25/bootstrap.sh
sudo DOKKU_TAG=v0.38.25 bash bootstrap.sh
```

### Security

- #8848: @josegonzalez Prevent command injection via docker options eval

### New Features

- #8849: @josegonzalez Support per-app letsencrypt emails on k3s
2026-07-19 09:36:27 +00:00
Jose Diaz-Gonzalez
7b8c8169e7 Merge pull request #8849 from dokku/k3s-per-app-letsencrypt 2026-07-19 05:34:57 -04:00
Jose Diaz-Gonzalez
90831a5504 fix: guard k3s issuer template against absent values
The `issuer.yaml` chart template dereferenced `.Values.global.issuer.enabled` without guarding against the value being absent, which yaml serialization omitted for apps without a per-app email, causing a nil-pointer render error that broke every k3s web deploy.
2026-07-19 04:34:40 -04:00
Jose Diaz-Gonzalez
dc802ddd19 feat: support per-app letsencrypt emails on k3s
The `letsencrypt-email-prod` and `letsencrypt-email-stag` properties can now be set per app in addition to globally, resolving app-level before the global value for the app's selected `letsencrypt-server`. An app that sets its own email renders a namespaced cert-manager `Issuer` using that email, while apps without an override continue to use the shared `ClusterIssuer` with the global email.
2026-07-19 03:31:55 -04:00
Jose Diaz-Gonzalez
05ce8fb68e Merge pull request #8848 from dokku/host-command-execution-via-eval-of-unsanitized-docker-options-in-dockerargs
Prevent command injection via docker options eval
2026-07-19 02:42:39 -04:00
Jose Diaz-Gonzalez
1a376c3622 fix: prevent command injection via docker options eval
Values supplied through docker options, `--ttl-seconds`, and `-e` flowed into a Bash `eval` during build, deploy, and run, letting a low-privileged user execute arbitrary commands on the host as the dokku user. These arguments are now tokenized and passed through to the container verbatim, without shell expansion. A one-time migration repairs stored labels whose backticks were saved with a stray backslash so Traefik-style rules stay valid on the next deploy.
2026-07-19 01:42:12 -04:00
Dokku Bot
730fa85d03 Release 0.38.24
# History

## 0.38.24

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.24/bootstrap.sh
sudo DOKKU_TAG=v0.38.24 bash bootstrap.sh
```

### Documentation

- #8836: @josegonzalez Link herokuish buildpack references to buildpack management page

### Tests

- #8841: @dependabot[bot] chore(deps): bump ruby from 4.0.5 to 4.0.6 in /tests/apps/dockerfile-entrypoint
- #8843: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.82.0 to 1.82.1 in /tests/apps/gogrpc

### Dependencies

- #8845: @dependabot[bot] chore(deps): bump github.com/mattn/go-isatty from 0.0.22 to 0.0.23 in /plugins/app-json
- #8844: @dependabot[bot] chore(deps): bump github.com/melbahja/goph from 1.5.1 to 1.5.2 in /plugins/common
- #8842: @dependabot[bot] chore(deps): bump timberio/vector from 0.56.0-debian to 0.57.0-debian in /plugins/logs
- #8838: @dokku-bot chore: bump pack to 0.40.8
- #8846: @dependabot[bot] chore(deps): bump traefik from v3.7.7 to v3.7.8 in /plugins/traefik-vhosts
- #8839: @dependabot[bot] chore(deps): bump actions/setup-node from 6 to 7
- #8834: @dokku-bot chore: bump dokku-event-listener to 0.20.0
2026-07-18 01:39:15 +00:00
Jose Diaz-Gonzalez
2950292309 Merge pull request #8845 from dokku/dependabot/go_modules/plugins/app-json/github.com/mattn/go-isatty-0.0.23
chore(deps): bump github.com/mattn/go-isatty from 0.0.22 to 0.0.23 in /plugins/app-json
2026-07-17 21:34:41 -04:00
dependabot[bot]
fb5a1e12e6 chore(deps): bump github.com/mattn/go-isatty in /plugins/app-json
Bumps [github.com/mattn/go-isatty](https://github.com/mattn/go-isatty) from 0.0.22 to 0.0.23.
- [Commits](https://github.com/mattn/go-isatty/compare/v0.0.22...v0.0.23)

---
updated-dependencies:
- dependency-name: github.com/mattn/go-isatty
  dependency-version: 0.0.23
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-17 21:33:26 -04:00
Jose Diaz-Gonzalez
e3ad4b3bcc Merge pull request #8844 from dokku/dependabot/go_modules/plugins/common/github.com/melbahja/goph-1.5.2
chore(deps): bump github.com/melbahja/goph from 1.5.1 to 1.5.2 in /plugins/common
2026-07-17 21:32:08 -04:00
Jose Diaz-Gonzalez
debb1b8f27 chore: bump go modules 2026-07-17 21:21:55 -04:00
Jose Diaz-Gonzalez
7c7af5767a Merge pull request #8842 from dokku/dependabot/docker/plugins/logs/timberio/vector-0.57.0-debian
chore(deps): bump timberio/vector from 0.56.0-debian to 0.57.0-debian in /plugins/logs
2026-07-17 10:45:11 -04:00
Jose Diaz-Gonzalez
f1f90233f6 Merge pull request #8841 from dokku/dependabot/docker/tests/apps/dockerfile-entrypoint/ruby-4.0.6
chore(deps): bump ruby from 4.0.5 to 4.0.6 in /tests/apps/dockerfile-entrypoint
2026-07-17 10:45:05 -04:00
Jose Diaz-Gonzalez
3402185c6f Merge pull request #8838 from dokku/chore/bump-pack-0.40.8
chore: bump pack to 0.40.8
2026-07-17 10:44:59 -04:00
Jose Diaz-Gonzalez
63b9a93e4e Merge pull request #8843 from dokku/dependabot/go_modules/tests/apps/gogrpc/google.golang.org/grpc-1.82.1
chore(deps): bump google.golang.org/grpc from 1.82.0 to 1.82.1 in /tests/apps/gogrpc
2026-07-17 10:43:18 -04:00
Jose Diaz-Gonzalez
7f33ac8edf Merge pull request #8846 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-v3.7.8
chore(deps): bump traefik from v3.7.7 to v3.7.8 in /plugins/traefik-vhosts
2026-07-17 10:41:08 -04:00
dependabot[bot]
177cc81dae chore(deps): bump traefik in /plugins/traefik-vhosts
Bumps traefik from v3.7.7 to v3.7.8.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: v3.7.8
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-16 13:54:04 +00:00
dependabot[bot]
3124fdc2b0 chore(deps): bump github.com/melbahja/goph in /plugins/common
Bumps [github.com/melbahja/goph](https://github.com/melbahja/goph) from 1.5.1 to 1.5.2.
- [Release notes](https://github.com/melbahja/goph/releases)
- [Commits](https://github.com/melbahja/goph/compare/v1.5.1...v1.5.2)

---
updated-dependencies:
- dependency-name: github.com/melbahja/goph
  dependency-version: 1.5.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-16 13:53:44 +00:00
dependabot[bot]
22718c10d7 chore(deps): bump google.golang.org/grpc in /tests/apps/gogrpc
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.82.0 to 1.82.1.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.82.0...v1.82.1)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.82.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-16 13:52:23 +00:00
dependabot[bot]
0f54c6f26e chore(deps): bump timberio/vector in /plugins/logs
Bumps timberio/vector from 0.56.0-debian to 0.57.0-debian.

---
updated-dependencies:
- dependency-name: timberio/vector
  dependency-version: 0.57.0-debian
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-15 13:53:35 +00:00
dependabot[bot]
90d76060fe chore(deps): bump ruby in /tests/apps/dockerfile-entrypoint
Bumps ruby from 4.0.5 to 4.0.6.

---
updated-dependencies:
- dependency-name: ruby
  dependency-version: 4.0.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-15 13:52:31 +00:00
Dokku Bot
ce76bcd772 chore: bump pack to 0.40.8 2026-07-15 06:46:10 +00:00
Jose Diaz-Gonzalez
0bf2df49c2 Merge pull request #8839 from dokku/dependabot/github_actions/actions/setup-node-7
chore(deps): bump actions/setup-node from 6 to 7
2026-07-14 14:01:01 -04:00
dependabot[bot]
2352c09d2a chore(deps): bump actions/setup-node from 6 to 7
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6 to 7.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-14 13:52:30 +00:00
Jose Diaz-Gonzalez
9847412990 Merge pull request #8836 from dokku/8835-herokuish-documentation-references-the-wrong-page-for-buildpack-management
Link herokuish buildpack references to buildpack management page
2026-07-12 21:26:28 -04:00
Jose Diaz-Gonzalez
9f8ef83a02 docs: link herokuish buildpack references to buildpack management page
The Herokuish Buildpacks doc linked buildpack topics to anchors on the process management page that do not exist, so those links resolved to the wrong page. Point them at the corresponding sections of the buildpack management page and add that page to the sidebar so it is reachable.
2026-07-12 21:24:38 -04:00
Jose Diaz-Gonzalez
9021ddcdca Merge pull request #8834 from dokku/chore/bump-dokku-event-listener-0.20.0
chore: bump dokku-event-listener to 0.20.0
2026-07-11 05:07:23 -04:00
Dokku Bot
5880ebc298 chore: bump dokku-event-listener to 0.20.0 2026-07-11 06:46:30 +00:00
Dokku Bot
0764529d23 Release 0.38.23
# History

## 0.38.23

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.23/bootstrap.sh
sudo DOKKU_TAG=v0.38.23 bash bootstrap.sh
```

### Bug Fixes

- #8833: @josegonzalez Parse cert CN and subject on OpenSSL 3.x

### Tests

- #8825: @dependabot[bot] chore(deps): bump golang from 1.26.4 to 1.26.5 in /tests/apps/zombies-dockerfile-no-tini
- #8823: @dependabot[bot] chore(deps): bump golang from 1.26.4 to 1.26.5 in /tests/apps/zombies-dockerfile-tini
- #8820: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 292 to 293 in /tests/apps/php
- #8821: @dependabot[bot] chore(deps): bump golang from 1.26.4 to 1.26.5 in /tests/apps/go-fail-predeploy
- #8822: @dependabot[bot] chore(deps): bump golang from 1.26.4 to 1.26.5 in /tests/apps/gogrpc
- #8824: @dependabot[bot] chore(deps): bump golang from 1.26.4 to 1.26.5 in /tests/apps/go-fail-postdeploy

### Dependencies

- #8831: @dependabot[bot] chore(deps): bump helm.sh/helm/v3 from 3.21.2 to 3.21.3 in /plugins/scheduler-k3s
- #8830: @dependabot[bot] chore(deps): bump github.com/fluxcd/pkg/kustomize from 1.37.0 to 1.38.0 in /plugins/scheduler-k3s
- #8826: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.53.0 to 0.54.0 in /plugins/common
- #8827: @dependabot[bot] chore(deps): bump github.com/cert-manager/cert-manager from 1.20.3 to 1.21.0 in /plugins/scheduler-k3s
- #8828: @dependabot[bot] chore(deps): bump traefik from v3.7.6 to v3.7.7 in /plugins/traefik-vhosts
- #8829: @dependabot[bot] chore(deps): bump github.com/go-openapi/jsonpointer from 0.24.0 to 1.0.0 in /plugins/scheduler-k3s
2026-07-10 22:48:15 +00:00
Jose Diaz-Gonzalez
e40d325996 Merge pull request #8833 from dokku/8832-cn-and-subject-parsing-broken-on-openssl-3-x-get-ssl-hostnames-reportsslhostnames-reportsslsubject
Parse cert CN and subject on OpenSSL 3.x
2026-07-10 17:45:02 -04:00
Jose Diaz-Gonzalez
5496029e07 fix: parse cert CN and subject on OpenSSL 3.x
The `certs` plugin extracted a certificate's Common Name and formatted its subject using string assumptions that only held for pre-3.x OpenSSL output, so a certificate with only a Common Name and no Subject Alternative Name reported no hostnames from `certs:report` and was not recognized during nginx config generation, while the subject report retained the `subject=` prefix and used the wrong separators. Normalizing the subject with `-nameopt` before parsing makes the extraction version independent across OpenSSL and LibreSSL.
2026-07-10 15:05:27 -04:00
Jose Diaz-Gonzalez
e47bae8f55 Merge pull request #8831 from dokku/dependabot/go_modules/plugins/scheduler-k3s/helm.sh/helm/v3-3.21.3
chore(deps): bump helm.sh/helm/v3 from 3.21.2 to 3.21.3 in /plugins/scheduler-k3s
2026-07-10 12:22:36 -04:00
Jose Diaz-Gonzalez
b01ec9be48 Merge pull request #8830 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/fluxcd/pkg/kustomize-1.38.0
chore(deps): bump github.com/fluxcd/pkg/kustomize from 1.37.0 to 1.38.0 in /plugins/scheduler-k3s
2026-07-10 12:22:27 -04:00
dependabot[bot]
3ca52407ed chore(deps): bump helm.sh/helm/v3 in /plugins/scheduler-k3s
Bumps [helm.sh/helm/v3](https://github.com/helm/helm) from 3.21.2 to 3.21.3.
- [Release notes](https://github.com/helm/helm/releases)
- [Commits](https://github.com/helm/helm/compare/v3.21.2...v3.21.3)

---
updated-dependencies:
- dependency-name: helm.sh/helm/v3
  dependency-version: 3.21.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-10 13:53:59 +00:00
dependabot[bot]
2191bafd77 chore(deps): bump github.com/fluxcd/pkg/kustomize
Bumps [github.com/fluxcd/pkg/kustomize](https://github.com/fluxcd/pkg) from 1.37.0 to 1.38.0.
- [Commits](https://github.com/fluxcd/pkg/compare/kustomize/v1.37.0...kustomize/v1.38.0)

---
updated-dependencies:
- dependency-name: github.com/fluxcd/pkg/kustomize
  dependency-version: 1.38.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-10 13:53:51 +00:00
Jose Diaz-Gonzalez
e79dd1b493 Merge pull request #8826 from dokku/dependabot/go_modules/plugins/common/golang.org/x/crypto-0.54.0
chore(deps): bump golang.org/x/crypto from 0.53.0 to 0.54.0 in /plugins/common
2026-07-09 21:34:30 -04:00
Jose Diaz-Gonzalez
5da5f1dfe6 chore: bump go modules 2026-07-09 21:16:42 -04:00
dependabot[bot]
26914b2fc0 chore(deps): bump golang.org/x/crypto in /plugins/common
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.53.0 to 0.54.0.
- [Commits](https://github.com/golang/crypto/compare/v0.53.0...v0.54.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.54.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-09 21:16:29 -04:00
Jose Diaz-Gonzalez
7bd866efee Merge pull request #8825 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-no-tini/golang-1.26.5
chore(deps): bump golang from 1.26.4 to 1.26.5 in /tests/apps/zombies-dockerfile-no-tini
2026-07-09 21:14:44 -04:00
Jose Diaz-Gonzalez
4205871cec Merge pull request #8823 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-tini/golang-1.26.5
chore(deps): bump golang from 1.26.4 to 1.26.5 in /tests/apps/zombies-dockerfile-tini
2026-07-09 21:14:36 -04:00
Jose Diaz-Gonzalez
16ba93f9e2 Merge pull request #8820 from dokku/dependabot/composer/tests/apps/php/heroku/heroku-buildpack-php-293
chore(deps-dev): bump heroku/heroku-buildpack-php from 292 to 293 in /tests/apps/php
2026-07-09 21:14:26 -04:00
Jose Diaz-Gonzalez
e2781c0553 Merge pull request #8821 from dokku/dependabot/docker/tests/apps/go-fail-predeploy/golang-1.26.5
chore(deps): bump golang from 1.26.4 to 1.26.5 in /tests/apps/go-fail-predeploy
2026-07-09 21:14:17 -04:00
Jose Diaz-Gonzalez
91025ee23e Merge pull request #8822 from dokku/dependabot/docker/tests/apps/gogrpc/golang-1.26.5
chore(deps): bump golang from 1.26.4 to 1.26.5 in /tests/apps/gogrpc
2026-07-09 21:14:04 -04:00
Jose Diaz-Gonzalez
06a79b3f5c Merge pull request #8824 from dokku/dependabot/docker/tests/apps/go-fail-postdeploy/golang-1.26.5
chore(deps): bump golang from 1.26.4 to 1.26.5 in /tests/apps/go-fail-postdeploy
2026-07-09 21:13:53 -04:00
Jose Diaz-Gonzalez
71ce14feca Merge pull request #8827 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/cert-manager/cert-manager-1.21.0
chore(deps): bump github.com/cert-manager/cert-manager from 1.20.3 to 1.21.0 in /plugins/scheduler-k3s
2026-07-09 21:13:34 -04:00
Jose Diaz-Gonzalez
8986a27318 Merge pull request #8828 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-v3.7.7
chore(deps): bump traefik from v3.7.6 to v3.7.7 in /plugins/traefik-vhosts
2026-07-09 21:13:23 -04:00
Jose Diaz-Gonzalez
78977e3402 Merge pull request #8829 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/go-openapi/jsonpointer-1.0.0
chore(deps): bump github.com/go-openapi/jsonpointer from 0.24.0 to 1.0.0 in /plugins/scheduler-k3s
2026-07-09 21:13:16 -04:00
dependabot[bot]
7eaaaa7ac2 chore(deps): bump github.com/go-openapi/jsonpointer
Bumps [github.com/go-openapi/jsonpointer](https://github.com/go-openapi/jsonpointer) from 0.24.0 to 1.0.0.
- [Release notes](https://github.com/go-openapi/jsonpointer/releases)
- [Commits](https://github.com/go-openapi/jsonpointer/compare/v0.24.0...v1.0.0)

---
updated-dependencies:
- dependency-name: github.com/go-openapi/jsonpointer
  dependency-version: 1.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-09 13:55:04 +00:00
dependabot[bot]
04486f18ca chore(deps): bump traefik in /plugins/traefik-vhosts
Bumps traefik from v3.7.6 to v3.7.7.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: v3.7.7
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-09 13:55:00 +00:00
dependabot[bot]
19c167ca1f chore(deps): bump github.com/cert-manager/cert-manager
Bumps [github.com/cert-manager/cert-manager](https://github.com/cert-manager/cert-manager) from 1.20.3 to 1.21.0.
- [Release notes](https://github.com/cert-manager/cert-manager/releases)
- [Changelog](https://github.com/cert-manager/cert-manager/blob/master/RELEASE.md)
- [Commits](https://github.com/cert-manager/cert-manager/compare/v1.20.3...v1.21.0)

---
updated-dependencies:
- dependency-name: github.com/cert-manager/cert-manager
  dependency-version: 1.21.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-09 13:54:58 +00:00
dependabot[bot]
5ff86ec977 chore(deps): bump golang in /tests/apps/zombies-dockerfile-no-tini
Bumps golang from 1.26.4 to 1.26.5.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-09 13:53:12 +00:00
dependabot[bot]
7e05d6cca4 chore(deps): bump golang in /tests/apps/go-fail-postdeploy
Bumps golang from 1.26.4 to 1.26.5.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-09 13:53:05 +00:00
dependabot[bot]
58f509ed0c chore(deps): bump golang in /tests/apps/zombies-dockerfile-tini
Bumps golang from 1.26.4 to 1.26.5.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-09 13:52:57 +00:00
dependabot[bot]
5462744cf0 chore(deps): bump golang from 1.26.4 to 1.26.5 in /tests/apps/gogrpc
Bumps golang from 1.26.4 to 1.26.5.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-09 13:52:57 +00:00
dependabot[bot]
ab14872c77 chore(deps): bump golang in /tests/apps/go-fail-predeploy
Bumps golang from 1.26.4 to 1.26.5.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-09 13:52:38 +00:00
dependabot[bot]
01f3280746 chore(deps-dev): bump heroku/heroku-buildpack-php in /tests/apps/php
Bumps [heroku/heroku-buildpack-php](https://github.com/heroku/heroku-buildpack-php) from 292 to 293.
- [Release notes](https://github.com/heroku/heroku-buildpack-php/releases)
- [Changelog](https://github.com/heroku/heroku-buildpack-php/blob/main/CHANGELOG.md)
- [Commits](https://github.com/heroku/heroku-buildpack-php/compare/v292...v293)

---
updated-dependencies:
- dependency-name: heroku/heroku-buildpack-php
  dependency-version: '293'
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-09 13:52:36 +00:00
Dokku Bot
0dd183e6cc Release 0.38.22
# History

## 0.38.22

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.22/bootstrap.sh
sudo DOKKU_TAG=v0.38.22 bash bootstrap.sh
```

### New Features

- #8805: @RichardDorian Allow custom values for chown
- #8810: @josegonzalez Expose whether a network was created by dokku
- #8807: @josegonzalez Allow replacing buildpack list atomically
- #8808: @josegonzalez Expose docker-options as structured lists in JSON report
- #8806: @josegonzalez Expose scheduler-k3s autoscaling-auth state for read-back
- #8801: @josegonzalez Add --format json support to plugin:list

### Refactors

- #8804: @josegonzalez Port bash :report subcommands to golang

### Documentation

- #8809: @josegonzalez Document nginx validate-config load_module override

### Tests

- #8803: @dependabot[bot] chore(deps): bump django from 5.2.15 to 5.2.16 in /tests/apps/dockerfile-release

### Dependencies

- #8816: @dependabot[bot] chore(deps): bump golang.org/x/sync from 0.21.0 to 0.22.0 in /plugins/common
- #8818: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.11.51 to 2.11.52 in /plugins/scheduler-k3s
- #8817: @dependabot[bot] chore(deps): bump golang.org/x/sync from 0.21.0 to 0.22.0 in /plugins/scheduler-docker-local
- #8819: @dependabot[bot] chore(deps): bump golang.org/x/sync from 0.21.0 to 0.22.0 in /plugins/scheduler-k3s
2026-07-08 22:12:05 +00:00
Jose Diaz-Gonzalez
611cb89711 Merge pull request #8805 from RichardDorian/master
Allow custom values for chown
2026-07-08 18:09:31 -04:00
Jose Diaz-Gonzalez
e38c1754e4 Merge pull request #8816 from dokku/dependabot/go_modules/plugins/common/golang.org/x/sync-0.22.0
chore(deps): bump golang.org/x/sync from 0.21.0 to 0.22.0 in /plugins/common
2026-07-08 17:04:07 -04:00
Jose Diaz-Gonzalez
807e50edbf chore: bump go modules 2026-07-08 15:43:21 -04:00
dependabot[bot]
f931a84191 chore(deps): bump golang.org/x/sync in /plugins/common
Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.21.0 to 0.22.0.
- [Commits](https://github.com/golang/sync/compare/v0.21.0...v0.22.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sync
  dependency-version: 0.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-08 15:40:54 -04:00
Jose Diaz-Gonzalez
4a4ae6256f Merge pull request #8818 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/traefik/traefik/v2-2.11.52
chore(deps): bump github.com/traefik/traefik/v2 from 2.11.51 to 2.11.52 in /plugins/scheduler-k3s
2026-07-08 14:54:14 -04:00
dependabot[bot]
515d030689 chore(deps): bump github.com/traefik/traefik/v2
Bumps [github.com/traefik/traefik/v2](https://github.com/traefik/traefik) from 2.11.51 to 2.11.52.
- [Release notes](https://github.com/traefik/traefik/releases)
- [Changelog](https://github.com/traefik/traefik/blob/v2.11.52/CHANGELOG.md)
- [Commits](https://github.com/traefik/traefik/compare/v2.11.51...v2.11.52)

---
updated-dependencies:
- dependency-name: github.com/traefik/traefik/v2
  dependency-version: 2.11.52
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-08 18:54:06 +00:00
Jose Diaz-Gonzalez
f5e81cdcbe Merge pull request #8817 from dokku/dependabot/go_modules/plugins/scheduler-docker-local/golang.org/x/sync-0.22.0
chore(deps): bump golang.org/x/sync from 0.21.0 to 0.22.0 in /plugins/scheduler-docker-local
2026-07-08 14:52:53 -04:00
Jose Diaz-Gonzalez
57d23db98a Merge pull request #8819 from dokku/dependabot/go_modules/plugins/scheduler-k3s/golang.org/x/sync-0.22.0
chore(deps): bump golang.org/x/sync from 0.21.0 to 0.22.0 in /plugins/scheduler-k3s
2026-07-08 14:52:41 -04:00
Jose Diaz-Gonzalez
c37ba0f255 Merge pull request #8810 from dokku/8797-network-list-expose-whether-a-network-was-created-by-dokku
Expose whether a network was created by dokku
2026-07-08 14:52:32 -04:00
RichardDorian
513b200f5c test(storage): add out-of-bounds chown coverage for go code and script 2026-07-08 19:38:08 +02:00
dependabot[bot]
b0ba167df8 chore(deps): bump golang.org/x/sync in /plugins/scheduler-k3s
Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.21.0 to 0.22.0.
- [Commits](https://github.com/golang/sync/compare/v0.21.0...v0.22.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sync
  dependency-version: 0.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-08 13:55:26 +00:00
dependabot[bot]
e71893621b chore(deps): bump golang.org/x/sync in /plugins/scheduler-docker-local
Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.21.0 to 0.22.0.
- [Commits](https://github.com/golang/sync/compare/v0.21.0...v0.22.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sync
  dependency-version: 0.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-08 13:54:20 +00:00
RichardDorian
06bedebce3 fix(storage): allow custom chown values in chown-storage-dir script 2026-07-08 08:29:13 +02:00
Jose Diaz-Gonzalez
fc3a526bf9 Merge pull request #8809 from dokku/8784-new-nginx-pre-validation-breaks-configs-that-need-plugins
Document nginx validate-config load_module override
2026-07-08 00:32:09 -04:00
Jose Diaz-Gonzalez
ac4b86fd8e feat: expose whether a network was created by dokku
`network:list` and `network:info` now expose a `DokkuManaged` boolean derived from the `com.dokku.network-name` label that `network:create` applies, and `network:list` gains a `--dokku-managed` flag to restrict output to dokku-created networks. This lets tooling distinguish networks dokku created from Docker built-ins and networks created by other tooling such as compose.
2026-07-08 00:03:29 -04:00
Jose Diaz-Gonzalez
1ee462dc3c docs: document nginx validate-config load_module override
The nginx deploy-time pre-validation runs `nginx -t` against a minimal wrapper that omits the global `load_module` directives, so a custom `nginx.conf.sigil` using a directive from a dynamically loaded module fails validation even though it is valid against the running server. Document overriding the `validate-config` template through the `nginx-app-template-source` trigger as the supported workaround.
2026-07-07 23:33:59 -04:00
Jose Diaz-Gonzalez
24e3809a34 Merge pull request #8807 from dokku/8802-buildpacks-allow-setting-the-entire-ordered-buildpack-list-in-one-command
Allow replacing buildpack list atomically
2026-07-07 22:13:59 -04:00
Jose Diaz-Gonzalez
62164181e0 Merge pull request #8808 from dokku/8799-docker-options-report-expose-options-as-a-structured-list
Expose docker-options as structured lists in JSON report
2026-07-07 21:29:56 -04:00
Jose Diaz-Gonzalez
f73e888d98 Merge pull request #8806 from dokku/8800-scheduler-k3s-expose-annotations-labels-trigger-auth-for-read-back
Expose scheduler-k3s autoscaling-auth state for read-back
2026-07-07 20:47:28 -04:00
Jose Diaz-Gonzalez
c8bcba0145 fix: set dokku system user in buildpacks unit tests
Pin DOKKU_SYSTEM_USER and DOKKU_SYSTEM_GROUP to the current process user in test setup so PropertyListWrite succeeds in CI Docker where the dokku group does not exist.
2026-07-07 19:57:03 -04:00
Jose Diaz-Gonzalez
4652749b5b feat: expose docker-options as structured lists in JSON report
Add parallel -list keys to docker-options:report --format json so export
tools can round-trip options without splitting space-joined strings.

Closes #8799
2026-07-07 19:49:17 -04:00
Jose Diaz-Gonzalez
16f8b25bda feat: allow replacing buildpack list atomically
Add buildpacks:set --replace so callers can replace an app's complete ordered buildpack list in one command while preserving existing single-buildpack and --index behavior.

Closes #8802
2026-07-07 18:37:38 -04:00
Jose Diaz-Gonzalez
b2c4f61387 feat: expose scheduler-k3s autoscaling-auth state for read-back
Align autoscaling-auth:report with annotations and labels reporting so export tools can recover configured trigger auth via flat JSON keys and info flags, while stdout stays secret-safe unless --include-metadata is used.

Closes #8800
2026-07-07 18:07:39 -04:00
RichardDorian
a0361d59c1 test(storage): add unit test for custom chown values 2026-07-07 20:48:34 +02:00
RichardDorian
962c54bb2a docs(storage): add documentation regarding custom chown values 2026-07-07 19:28:27 +02:00
RichardDorian
fc9ae03eb7 feat(storage): allow custom chown value 2026-07-07 19:25:22 +02:00
Jose Diaz-Gonzalez
25b1356435 Merge pull request #8803 from dokku/dependabot/pip/tests/apps/dockerfile-release/django-5.2.16
chore(deps): bump django from 5.2.15 to 5.2.16 in /tests/apps/dockerfile-release
2026-07-07 12:18:52 -04:00
Jose Diaz-Gonzalez
48bee7fed0 Merge pull request #8804 from dokku/parallel-bash-reports
Port bash :report subcommands to golang
2026-07-07 12:18:37 -04:00
Jose Diaz-Gonzalez
cdcc10e91c fix: satisfy shfmt lint on certs internal-functions 2026-07-07 10:45:06 -04:00
Jose Diaz-Gonzalez
cf15fb139e Merge remote-tracking branch 'origin/master' into parallel-bash-reports
# Conflicts:
#	go.work
2026-07-07 10:38:57 -04:00
dependabot[bot]
8a35ed337e chore(deps): bump django in /tests/apps/dockerfile-release
Bumps [django](https://github.com/django/django) from 5.2.15 to 5.2.16.
- [Commits](https://github.com/django/django/commits)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 5.2.16
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-07 13:54:29 +00:00
Jose Diaz-Gonzalez
5d07484cc2 refactor: remove unused bash report helper functions
With every bash :report subcommand now ported to golang, the shared fn-report-parse-args, fn-report-emit-json, fn-report-filter-global and fn-report-validate-format helpers are no longer referenced and are removed.
2026-07-07 07:15:19 -04:00
Jose Diaz-Gonzalez
7ee882c4e7 feat: port nginx :report subcommand to golang
The bash :report implementation for the nginx-vhosts plugin is replaced with a compiled golang binary that reuses the plugin's existing golang property getters, so every raw, global and computed key is unchanged while collection runs in parallel and json is marshalled directly. The global report keeps its existing behaviour of surfacing only the global keys.
2026-07-07 07:12:59 -04:00
Jose Diaz-Gonzalez
fe11d508d3 feat: port scheduler-docker-local :report subcommand to golang
The bash :report implementation for the scheduler-docker-local plugin is replaced with a compiled golang binary. The plugin already shipped golang code, so the report subcommand is added alongside its existing triggers binary, and the init-process and parallel-schedule-count helpers remain in bash for the deploy pipeline.
2026-07-07 07:06:24 -04:00
Jose Diaz-Gonzalez
3fee5b881a feat: port git :report subcommand to golang
The bash :report implementation for the git plugin is replaced with a compiled golang binary. Property, computed and global keys are collected in parallel, while the sha and last-updated-at keys still shell out to git and stat the deploy branch ref so their values are unchanged. The non-report git helpers such as fn-git-cmd and the computed deploy-branch and keep-git-dir getters remain in place for the build pipeline.
2026-07-07 07:02:38 -04:00
Jose Diaz-Gonzalez
6e5afb84a9 feat: port certs :report subcommand to golang
The bash :report implementation for the certs plugin is replaced with a compiled golang binary. The certificate inspection getters run openssl and reproduce the existing field extraction, so the ssl report keys are unchanged, while collection now happens in parallel and json is marshalled directly. The now-unused fn-ssl-* display helpers are dropped, and fn-certs-set and fn-certs-remove remain for certs:add and certs:remove.
2026-07-07 06:56:51 -04:00
Jose Diaz-Gonzalez
857c215ccc Merge pull request #8801 from dokku/8798-plugin-list-expose-the-install-source-url-json-output
feat: add --format json support to plugin:list
2026-07-07 06:44:48 -04:00
Jose Diaz-Gonzalez
8d0c36bad6 feat: port checks and domains :report subcommands to golang
The bash :report implementations for the checks and domains plugins are replaced with a compiled golang binary that collects report keys in parallel and marshals json directly. The domains global report header now matches the shared renderer used by every other golang report, and its bats assertion is updated accordingly.
2026-07-07 06:43:31 -04:00
Jose Diaz-Gonzalez
5faabea3d4 feat: port vhost proxy :report subcommands to golang
The bash :report implementations for the caddy, haproxy, openresty, and traefik proxy plugins are replaced with a compiled golang binary that collects report keys in parallel and marshals json directly. The traefik dns-provider values keep their masking behaviour, remaining hidden in the default stdout report while surfacing for --format json or an explicit flag query. These four plugins previously had no unit tests, so a bats suite covering the report matrix is added for each.
2026-07-07 06:29:01 -04:00
Jose Diaz-Gonzalez
f9db9583a1 feat: port builder :report subcommands to golang
The bash :report implementations for the dockerfile, herokuish, lambda, nixpacks, pack, and railpack builders are replaced with a compiled golang binary that collects report keys in parallel and marshals json directly, avoiding the per-key subshell and jq forks that made the bash reports slow. The subcommands/report and root report trigger become symlinks to the compiled binary, while the non-report bash helpers each plugin still relies on are left in place.
2026-07-07 06:11:13 -04:00
Jose Diaz-Gonzalez
9c819cfebc feat: add --format json support to plugin:list
Adds a `--format json` flag to `plugin:list` whose output includes each plugin's install source - for git-based third-party plugins, the git remote URL, the checked-out commit, and the followed branch - so the set of installed plugins can be reconstructed elsewhere.

Closes #8798.
2026-07-07 05:17:40 -04:00
Dokku Bot
4eabf54fd4 Release 0.38.21
# History

## 0.38.21

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.21/bootstrap.sh
sudo DOKKU_TAG=v0.38.21 bash bootstrap.sh
```

### New Features

- #8795: @josegonzalez Add --format json support to apps:list

### Tests

- #8788: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.81.1 to 1.82.0 in /tests/apps/gogrpc
- #8787: @dependabot[bot] chore(deps): bump golang.org/x/net from 0.51.0 to 0.55.0 in /tests/apps/gogrpc

### Dependencies

- #8781: @dependabot[bot] chore(deps): bump lucaslorentz/caddy-docker-proxy from 2.12 to 2.13 in /plugins/caddy-vhosts
- #8794: @dependabot[bot] chore(deps): bump github.com/fluxcd/pkg/kustomize from 1.36.0 to 1.37.0 in /plugins/scheduler-k3s
- #8789: @dependabot[bot] chore(deps): bump pymdown-extensions from 11.0 to 11.0.1 in /docs/_build
- #8782: @dependabot[bot] chore(deps): bump github.com/go-openapi/jsonpointer from 0.23.2 to 0.24.0 in /plugins/scheduler-k3s
- #8785: @dependabot[bot] chore(deps): bump traefik from v3.7.5 to v3.7.6 in /plugins/traefik-vhosts
- #8786: @dependabot[bot] chore(deps): bump github.com/fluxcd/pkg/kustomize from 1.31.0 to 1.36.0 in /plugins/scheduler-k3s
- #8783: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.11.50 to 2.11.51 in /plugins/scheduler-k3s
- #8780: @dependabot[bot] chore(deps): bump github.com/cert-manager/cert-manager from 1.20.2 to 1.20.3 in /plugins/scheduler-k3s
- #8779: @dependabot[bot] chore(deps): bump github.com/go-openapi/jsonpointer from 0.23.1 to 0.23.2 in /plugins/scheduler-k3s

### Other

- #8796: @josegonzalez Add --format json support to ps:scale
2026-07-06 22:42:58 +00:00
Jose Diaz-Gonzalez
f945a9879b Merge pull request #8781 from dokku/dependabot/docker/plugins/caddy-vhosts/lucaslorentz/caddy-docker-proxy-2.13
chore(deps): bump lucaslorentz/caddy-docker-proxy from 2.12 to 2.13 in /plugins/caddy-vhosts
2026-07-06 18:41:01 -04:00
Jose Diaz-Gonzalez
ebb63ed40b Merge pull request #8796 from dokku/8793-add-format-json-support-to-ps-scale
Add --format json support to ps:scale
2026-07-06 18:40:48 -04:00
Jose Diaz-Gonzalez
857d115fdd feat: add --format json support to ps:scale
The `ps:scale` command now accepts a `--format` flag that defaults to `stdout` and can be set to `json` to emit the current formation as a JSON array of process type and quantity objects, matching the JSON output the `:report` subcommands already provide. The flag only applies when displaying the current formation; it is ignored when process types are supplied for scaling. When no scale has been set for the app, the JSON output is an empty array.
2026-07-06 13:57:19 -04:00
Jose Diaz-Gonzalez
4a88f3aba4 Merge pull request #8795 from dokku/8792-add-format-json-support-to-apps-list
Add --format json support to apps:list
2026-07-06 13:32:38 -04:00
Jose Diaz-Gonzalez
21c27e99cc feat: add --format json support to apps:list
The `apps:list` command now accepts a `--format` flag that defaults to `stdout` and can be set to `json` to emit the app names as a JSON array, matching the JSON output the `:report` subcommands already provide. When no apps exist, the JSON output is an empty array.
2026-07-06 11:50:56 -04:00
Jose Diaz-Gonzalez
631b0a4dc3 Merge pull request #8794 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/fluxcd/pkg/kustomize-1.37.0
chore(deps): bump github.com/fluxcd/pkg/kustomize from 1.36.0 to 1.37.0 in /plugins/scheduler-k3s
2026-07-06 11:05:33 -04:00
Jose Diaz-Gonzalez
4e15f137df Merge pull request #8789 from dokku/dependabot/pip/docs/_build/pymdown-extensions-11.0.1
chore(deps): bump pymdown-extensions from 11.0 to 11.0.1 in /docs/_build
2026-07-06 11:05:25 -04:00
dependabot[bot]
e558b4c203 chore(deps): bump github.com/fluxcd/pkg/kustomize
Bumps [github.com/fluxcd/pkg/kustomize](https://github.com/fluxcd/pkg) from 1.36.0 to 1.37.0.
- [Commits](https://github.com/fluxcd/pkg/compare/kustomize/v1.36.0...kustomize/v1.37.0)

---
updated-dependencies:
- dependency-name: github.com/fluxcd/pkg/kustomize
  dependency-version: 1.37.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-06 13:54:35 +00:00
dependabot[bot]
e0e62c75da chore(deps): bump pymdown-extensions from 11.0 to 11.0.1 in /docs/_build
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 11.0 to 11.0.1.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/11.0...11.0.1)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-version: 11.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-03 13:53:22 +00:00
Jose Diaz-Gonzalez
ce69ca76ad Merge pull request #8782 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/go-openapi/jsonpointer-0.24.0
chore(deps): bump github.com/go-openapi/jsonpointer from 0.23.2 to 0.24.0 in /plugins/scheduler-k3s
2026-07-02 13:31:24 -04:00
Jose Diaz-Gonzalez
8130f41043 Merge pull request #8788 from dokku/dependabot/go_modules/tests/apps/gogrpc/google.golang.org/grpc-1.82.0
chore(deps): bump google.golang.org/grpc from 1.81.1 to 1.82.0 in /tests/apps/gogrpc
2026-07-02 13:01:43 -04:00
dependabot[bot]
e3bb5099b8 chore(deps): bump github.com/go-openapi/jsonpointer
Bumps [github.com/go-openapi/jsonpointer](https://github.com/go-openapi/jsonpointer) from 0.23.2 to 0.24.0.
- [Release notes](https://github.com/go-openapi/jsonpointer/releases)
- [Commits](https://github.com/go-openapi/jsonpointer/compare/v0.23.2...v0.24.0)

---
updated-dependencies:
- dependency-name: github.com/go-openapi/jsonpointer
  dependency-version: 0.24.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-02 15:24:35 +00:00
dependabot[bot]
f7e41ab633 chore(deps): bump google.golang.org/grpc in /tests/apps/gogrpc
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.81.1 to 1.82.0.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.81.1...v1.82.0)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.82.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-02 15:23:25 +00:00
Jose Diaz-Gonzalez
c4355af7c4 Merge pull request #8785 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-v3.7.6
chore(deps): bump traefik from v3.7.5 to v3.7.6 in /plugins/traefik-vhosts
2026-07-02 11:22:46 -04:00
Jose Diaz-Gonzalez
6d7c175c5e Merge pull request #8786 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/fluxcd/pkg/kustomize-1.36.0
chore(deps): bump github.com/fluxcd/pkg/kustomize from 1.31.0 to 1.36.0 in /plugins/scheduler-k3s
2026-07-02 11:22:20 -04:00
Jose Diaz-Gonzalez
fee5456c94 Merge pull request #8787 from dokku/dependabot/go_modules/tests/apps/gogrpc/golang.org/x/net-0.55.0
chore(deps): bump golang.org/x/net from 0.51.0 to 0.55.0 in /tests/apps/gogrpc
2026-07-02 11:22:03 -04:00
dependabot[bot]
2639c0cdf6 chore(deps): bump golang.org/x/net in /tests/apps/gogrpc
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.51.0 to 0.55.0.
- [Commits](https://github.com/golang/net/compare/v0.51.0...v0.55.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.55.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-02 02:57:36 +00:00
dependabot[bot]
d311111537 chore(deps): bump github.com/fluxcd/pkg/kustomize
Bumps [github.com/fluxcd/pkg/kustomize](https://github.com/fluxcd/pkg) from 1.31.0 to 1.36.0.
- [Commits](https://github.com/fluxcd/pkg/compare/apis/meta/v1.31.0...kustomize/v1.36.0)

---
updated-dependencies:
- dependency-name: github.com/fluxcd/pkg/kustomize
  dependency-version: 1.36.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-01 13:53:59 +00:00
dependabot[bot]
356e9704fd chore(deps): bump traefik in /plugins/traefik-vhosts
Bumps traefik from v3.7.5 to v3.7.6.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: v3.7.6
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-01 13:53:36 +00:00
Jose Diaz-Gonzalez
384b45f8f9 Merge pull request #8783 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/traefik/traefik/v2-2.11.51
chore(deps): bump github.com/traefik/traefik/v2 from 2.11.50 to 2.11.51 in /plugins/scheduler-k3s
2026-06-30 17:23:15 -04:00
dependabot[bot]
be7f9fc3dd chore(deps): bump github.com/traefik/traefik/v2
Bumps [github.com/traefik/traefik/v2](https://github.com/traefik/traefik) from 2.11.50 to 2.11.51.
- [Release notes](https://github.com/traefik/traefik/releases)
- [Changelog](https://github.com/traefik/traefik/blob/v2.11.51/CHANGELOG.md)
- [Commits](https://github.com/traefik/traefik/compare/v2.11.50...v2.11.51)

---
updated-dependencies:
- dependency-name: github.com/traefik/traefik/v2
  dependency-version: 2.11.51
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-30 13:54:17 +00:00
dependabot[bot]
8c47c10748 chore(deps): bump lucaslorentz/caddy-docker-proxy
Bumps lucaslorentz/caddy-docker-proxy from 2.12 to 2.13.

---
updated-dependencies:
- dependency-name: lucaslorentz/caddy-docker-proxy
  dependency-version: '2.13'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-30 13:53:32 +00:00
Jose Diaz-Gonzalez
7d4d3d78f0 Merge pull request #8780 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/cert-manager/cert-manager-1.20.3
chore(deps): bump github.com/cert-manager/cert-manager from 1.20.2 to 1.20.3 in /plugins/scheduler-k3s
2026-06-29 14:14:26 -04:00
Jose Diaz-Gonzalez
5962986985 Merge pull request #8779 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/go-openapi/jsonpointer-0.23.2
chore(deps): bump github.com/go-openapi/jsonpointer from 0.23.1 to 0.23.2 in /plugins/scheduler-k3s
2026-06-29 14:14:19 -04:00
dependabot[bot]
cc5023959a chore(deps): bump github.com/cert-manager/cert-manager
Bumps [github.com/cert-manager/cert-manager](https://github.com/cert-manager/cert-manager) from 1.20.2 to 1.20.3.
- [Release notes](https://github.com/cert-manager/cert-manager/releases)
- [Changelog](https://github.com/cert-manager/cert-manager/blob/master/RELEASE.md)
- [Commits](https://github.com/cert-manager/cert-manager/compare/v1.20.2...v1.20.3)

---
updated-dependencies:
- dependency-name: github.com/cert-manager/cert-manager
  dependency-version: 1.20.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-29 13:54:43 +00:00
dependabot[bot]
e31240112d chore(deps): bump github.com/go-openapi/jsonpointer
Bumps [github.com/go-openapi/jsonpointer](https://github.com/go-openapi/jsonpointer) from 0.23.1 to 0.23.2.
- [Release notes](https://github.com/go-openapi/jsonpointer/releases)
- [Commits](https://github.com/go-openapi/jsonpointer/compare/v0.23.1...v0.23.2)

---
updated-dependencies:
- dependency-name: github.com/go-openapi/jsonpointer
  dependency-version: 0.23.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-29 13:54:35 +00:00
Dokku Bot
31177a5730 Release 0.38.20
# History

## 0.38.20

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.20/bootstrap.sh
sudo DOKKU_TAG=v0.38.20 bash bootstrap.sh
```

### Tests

- #8773: @dependabot[bot] chore(deps): bump python from 3.15.0b2-bookworm to 3.15.0b3-bookworm in /tests/apps/dockerfile-release
- #8756: @dependabot[bot] chore(deps): bump sass from 1.100.0 to 1.101.0 in /tests/apps/multi
- #8753: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 291 to 292 in /tests/apps/php

### Dependencies

- #8766: @dependabot[bot] chore(deps): bump helm.sh/helm/v3 from 3.21.1 to 3.21.2 in /plugins/scheduler-k3s
- #8777: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.41.0 to 1.42.1 in /plugins/common
- #8778: @dependabot[bot] chore(deps): bump byjg/easy-haproxy from 6.1.0 to 6.1.1 in /plugins/haproxy-vhosts
- #8748: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.52.0 to 0.53.0 in /plugins/common
- #8745: @dependabot[bot] chore(deps): bump golang.org/x/sync from 0.20.0 to 0.21.0 in /plugins/common
- #8774: @dependabot[bot] chore(deps): bump python from 3.15.0b2-alpine to 3.15.0b3-alpine in /docs/_build
- #8769: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.21.3 to 11.0 in /docs/_build
- #8775: @dependabot[bot] chore(deps): bump click from 8.4.1 to 8.4.2 in /docs/_build
- #8776: @dependabot[bot] chore(deps): bump byjg/easy-haproxy from 6.0.1 to 6.1.0 in /plugins/haproxy-vhosts
- #8772: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.42.0 to 1.42.1 in /plugins/buildpacks
- #8770: @dokku-bot chore: bump pack to 0.40.7
- #8767: @dependabot[bot] chore(deps): bump github.com/containerd/containerd from 1.7.32 to 1.7.33 in /plugins/scheduler-k3s
- #8765: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.41.0 to 1.42.0 in /plugins/scheduler-k3s
- #8764: @dependabot[bot] chore(deps): bump actions/checkout from 6 to 7
- #8762: @dependabot[bot] chore(deps): bump k8s.io/kubernetes from 1.36.1 to 1.36.2 in /plugins/scheduler-k3s
- #8758: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.41.0 to 1.42.0 in /plugins/buildpacks
- #8760: @dependabot[bot] chore(deps): bump k8s.io/apimachinery from 0.36.1 to 0.36.2 in /plugins/scheduler-k3s
- #8757: @dependabot[bot] chore(deps): bump helm.sh/helm/v3 from 3.21.0 to 3.21.1 in /plugins/scheduler-k3s
- #8755: @dependabot[bot] chore(deps): bump traefik from v3.7.4 to v3.7.5 in /plugins/traefik-vhosts
- #8754: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.11.49 to 2.11.50 in /plugins/scheduler-k3s
- #8749: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.11.47 to 2.11.49 in /plugins/scheduler-k3s
- #8743: @dependabot[bot] chore(deps): bump beautifulsoup4 from 4.14.3 to 4.15.0 in /docs/_build
- #8744: @dependabot[bot] chore(deps): bump traefik from v3.7.3 to v3.7.4 in /plugins/traefik-vhosts
- #8747: @dependabot[bot] chore(deps): bump golang.org/x/sync from 0.20.0 to 0.21.0 in /plugins/scheduler-k3s
- #8746: @dependabot[bot] chore(deps): bump golang.org/x/sync from 0.20.0 to 0.21.0 in /plugins/scheduler-docker-local
2026-06-28 05:32:10 +00:00
Jose Diaz-Gonzalez
6fc99896d4 Merge pull request #8766 from dokku/dependabot/go_modules/plugins/scheduler-k3s/helm.sh/helm/v3-3.21.2
chore(deps): bump helm.sh/helm/v3 from 3.21.1 to 3.21.2 in /plugins/scheduler-k3s
2026-06-28 01:17:11 -04:00
Jose Diaz-Gonzalez
89b2952c28 chore: gitignore 2 files 2026-06-27 23:18:49 -04:00
Jose Diaz-Gonzalez
6cd22ed7b9 fix: bump keda and controller-runtime for client-go v0.36
The `helm.sh/helm/v3` v3.21.2 bump pulled `client-go` up to `v0.36.2`, which is incompatible with the pinned `controller-runtime v0.22.4`. Moving `controller-runtime` to `v0.24.1` (the first release targeting `client-go v0.36`) requires KEDA `v2.20.1`, allowing the old version pin to be removed.
2026-06-27 23:17:50 -04:00
dependabot[bot]
8f7785dc89 chore(deps): bump helm.sh/helm/v3 in /plugins/scheduler-k3s
Bumps [helm.sh/helm/v3](https://github.com/helm/helm) from 3.21.1 to 3.21.2.
- [Release notes](https://github.com/helm/helm/releases)
- [Commits](https://github.com/helm/helm/compare/v3.21.1...v3.21.2)

---
updated-dependencies:
- dependency-name: helm.sh/helm/v3
  dependency-version: 3.21.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-27 22:57:44 -04:00
Jose Diaz-Gonzalez
97dd599afb Merge pull request #8777 from dokku/dependabot/go_modules/plugins/common/github.com/onsi/gomega-1.42.1
chore(deps): bump github.com/onsi/gomega from 1.41.0 to 1.42.1 in /plugins/common
2026-06-27 22:56:54 -04:00
Jose Diaz-Gonzalez
bf812ac2ad chore: bump go modules 2026-06-27 21:20:52 -04:00
Jose Diaz-Gonzalez
e533d68e86 Merge pull request #8778 from dokku/dependabot/docker/plugins/haproxy-vhosts/byjg/easy-haproxy-6.1.1
chore(deps): bump byjg/easy-haproxy from 6.1.0 to 6.1.1 in /plugins/haproxy-vhosts
2026-06-27 20:21:03 -04:00
dependabot[bot]
12dec0e71d chore(deps): bump byjg/easy-haproxy in /plugins/haproxy-vhosts
Bumps byjg/easy-haproxy from 6.1.0 to 6.1.1.

---
updated-dependencies:
- dependency-name: byjg/easy-haproxy
  dependency-version: 6.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-26 13:53:37 +00:00
dependabot[bot]
13b97b3243 chore(deps): bump github.com/onsi/gomega in /plugins/common
Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.41.0 to 1.42.1.
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/gomega/compare/v1.41.0...v1.42.1)

---
updated-dependencies:
- dependency-name: github.com/onsi/gomega
  dependency-version: 1.42.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-26 13:53:13 +00:00
Jose Diaz-Gonzalez
a1ddca00ba Merge pull request #8748 from dokku/dependabot/go_modules/plugins/common/golang.org/x/crypto-0.53.0 2026-06-26 06:52:59 -04:00
Jose Diaz-Gonzalez
113e47c3ab chore: bump go modules 2026-06-26 00:19:30 -04:00
dependabot[bot]
ccdad284ee chore(deps): bump golang.org/x/crypto in /plugins/common
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.52.0 to 0.53.0.
- [Commits](https://github.com/golang/crypto/compare/v0.52.0...v0.53.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.53.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-26 00:19:10 -04:00
Jose Diaz-Gonzalez
b36716b1c7 Merge pull request #8745 from dokku/dependabot/go_modules/plugins/common/golang.org/x/sync-0.21.0
chore(deps): bump golang.org/x/sync from 0.20.0 to 0.21.0 in /plugins/common
2026-06-26 00:17:38 -04:00
Jose Diaz-Gonzalez
b5a08e3326 chore: bump go modules 2026-06-25 22:33:53 -04:00
dependabot[bot]
1e0be40561 chore(deps): bump golang.org/x/sync in /plugins/common
Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.20.0 to 0.21.0.
- [Commits](https://github.com/golang/sync/compare/v0.20.0...v0.21.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sync
  dependency-version: 0.21.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-25 22:22:01 -04:00
Jose Diaz-Gonzalez
61ac061332 Merge pull request #8774 from dokku/dependabot/docker/docs/_build/python-3.15.0b3-alpine
chore(deps): bump python from 3.15.0b2-alpine to 3.15.0b3-alpine in /docs/_build
2026-06-25 21:00:41 -04:00
Jose Diaz-Gonzalez
9a52161aec Merge pull request #8769 from dokku/dependabot/pip/docs/_build/pymdown-extensions-11.0
chore(deps): bump pymdown-extensions from 10.21.3 to 11.0 in /docs/_build
2026-06-25 21:00:27 -04:00
Jose Diaz-Gonzalez
9ed5415e9b Merge pull request #8773 from dokku/dependabot/docker/tests/apps/dockerfile-release/python-3.15.0b3-bookworm
chore(deps): bump python from 3.15.0b2-bookworm to 3.15.0b3-bookworm in /tests/apps/dockerfile-release
2026-06-25 21:00:16 -04:00
Jose Diaz-Gonzalez
be2bc126c2 Merge pull request #8775 from dokku/dependabot/pip/docs/_build/click-8.4.2
chore(deps): bump click from 8.4.1 to 8.4.2 in /docs/_build
2026-06-25 21:00:07 -04:00
Jose Diaz-Gonzalez
2944b16114 Merge pull request #8776 from dokku/dependabot/docker/plugins/haproxy-vhosts/byjg/easy-haproxy-6.1.0
chore(deps): bump byjg/easy-haproxy from 6.0.1 to 6.1.0 in /plugins/haproxy-vhosts
2026-06-25 20:59:59 -04:00
dependabot[bot]
aba40f40ad chore(deps): bump byjg/easy-haproxy in /plugins/haproxy-vhosts
Bumps byjg/easy-haproxy from 6.0.1 to 6.1.0.

---
updated-dependencies:
- dependency-name: byjg/easy-haproxy
  dependency-version: 6.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-25 13:54:09 +00:00
dependabot[bot]
a538f0e6fe chore(deps): bump click from 8.4.1 to 8.4.2 in /docs/_build
Bumps [click](https://github.com/pallets/click) from 8.4.1 to 8.4.2.
- [Release notes](https://github.com/pallets/click/releases)
- [Changelog](https://github.com/pallets/click/blob/main/CHANGES.md)
- [Commits](https://github.com/pallets/click/compare/8.4.1...8.4.2)

---
updated-dependencies:
- dependency-name: click
  dependency-version: 8.4.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-25 13:53:20 +00:00
dependabot[bot]
0153187a2c chore(deps): bump python in /docs/_build
Bumps python from 3.15.0b2-alpine to 3.15.0b3-alpine.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.15.0b3-alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-25 13:52:58 +00:00
dependabot[bot]
9215f56d61 chore(deps): bump python in /tests/apps/dockerfile-release
Bumps python from 3.15.0b2-bookworm to 3.15.0b3-bookworm.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.15.0b3-bookworm
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-25 13:52:36 +00:00
Jose Diaz-Gonzalez
442b8b1b81 Merge pull request #8772 from dokku/dependabot/go_modules/plugins/buildpacks/github.com/onsi/gomega-1.42.1
chore(deps): bump github.com/onsi/gomega from 1.42.0 to 1.42.1 in /plugins/buildpacks
2026-06-24 16:28:37 -04:00
Jose Diaz-Gonzalez
1e178d8636 Merge pull request #8770 from dokku/chore/bump-pack-0.40.7
chore: bump pack to 0.40.7
2026-06-24 15:41:45 -04:00
dependabot[bot]
36a62d1c7c chore(deps): bump github.com/onsi/gomega in /plugins/buildpacks
Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.42.0 to 1.42.1.
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/gomega/compare/v1.42.0...v1.42.1)

---
updated-dependencies:
- dependency-name: github.com/onsi/gomega
  dependency-version: 1.42.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-24 13:53:44 +00:00
Dokku Bot
da147538dc chore: bump pack to 0.40.7 2026-06-24 07:12:39 +00:00
Jose Diaz-Gonzalez
a87ed18893 Merge pull request #8767 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/containerd/containerd-1.7.33
chore(deps): bump github.com/containerd/containerd from 1.7.32 to 1.7.33 in /plugins/scheduler-k3s
2026-06-23 10:04:37 -04:00
dependabot[bot]
0d2ca470ad chore(deps): bump pymdown-extensions in /docs/_build
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.21.3 to 11.0.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.21.3...11.0)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-version: '11.0'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-23 13:53:06 +00:00
dependabot[bot]
985f222ab2 chore(deps): bump github.com/containerd/containerd
Bumps [github.com/containerd/containerd](https://github.com/containerd/containerd) from 1.7.32 to 1.7.33.
- [Release notes](https://github.com/containerd/containerd/releases)
- [Changelog](https://github.com/containerd/containerd/blob/main/RELEASES.md)
- [Commits](https://github.com/containerd/containerd/compare/v1.7.32...v1.7.33)

---
updated-dependencies:
- dependency-name: github.com/containerd/containerd
  dependency-version: 1.7.33
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-23 06:21:45 +00:00
Jose Diaz-Gonzalez
cbb816bba4 Merge pull request #8765 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/onsi/gomega-1.42.0
chore(deps): bump github.com/onsi/gomega from 1.41.0 to 1.42.0 in /plugins/scheduler-k3s
2026-06-19 13:18:33 -04:00
Jose Diaz-Gonzalez
69684a43f1 Merge pull request #8764 from dokku/dependabot/github_actions/actions/checkout-7
chore(deps): bump actions/checkout from 6 to 7
2026-06-19 13:13:47 -04:00
dependabot[bot]
40e6178802 chore(deps): bump github.com/onsi/gomega in /plugins/scheduler-k3s
Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.41.0 to 1.42.0.
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/gomega/compare/v1.41.0...v1.42.0)

---
updated-dependencies:
- dependency-name: github.com/onsi/gomega
  dependency-version: 1.42.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-19 13:53:56 +00:00
dependabot[bot]
381e8fb8c1 chore(deps): bump actions/checkout from 6 to 7
Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-19 13:52:33 +00:00
Jose Diaz-Gonzalez
ef5f2f7086 Merge pull request #8762 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/kubernetes-1.36.2
chore(deps): bump k8s.io/kubernetes from 1.36.1 to 1.36.2 in /plugins/scheduler-k3s
2026-06-18 14:05:54 -04:00
dependabot[bot]
3f81539a2a chore(deps): bump k8s.io/kubernetes in /plugins/scheduler-k3s
Bumps [k8s.io/kubernetes](https://github.com/kubernetes/kubernetes) from 1.36.1 to 1.36.2.
- [Release notes](https://github.com/kubernetes/kubernetes/releases)
- [Commits](https://github.com/kubernetes/kubernetes/compare/v1.36.1...v1.36.2)

---
updated-dependencies:
- dependency-name: k8s.io/kubernetes
  dependency-version: 1.36.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-17 13:54:22 +00:00
Jose Diaz-Gonzalez
97c11b668b Merge pull request #8758 from dokku/dependabot/go_modules/plugins/buildpacks/github.com/onsi/gomega-1.42.0
chore(deps): bump github.com/onsi/gomega from 1.41.0 to 1.42.0 in /plugins/buildpacks
2026-06-16 11:28:18 -04:00
Jose Diaz-Gonzalez
fcaf24f92e Merge pull request #8760 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/apimachinery-0.36.2
chore(deps): bump k8s.io/apimachinery from 0.36.1 to 0.36.2 in /plugins/scheduler-k3s
2026-06-16 11:27:57 -04:00
dependabot[bot]
a02d83c3fb chore(deps): bump k8s.io/apimachinery in /plugins/scheduler-k3s
Bumps [k8s.io/apimachinery](https://github.com/kubernetes/apimachinery) from 0.36.1 to 0.36.2.
- [Commits](https://github.com/kubernetes/apimachinery/compare/v0.36.1...v0.36.2)

---
updated-dependencies:
- dependency-name: k8s.io/apimachinery
  dependency-version: 0.36.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-15 13:54:32 +00:00
dependabot[bot]
c1207db63f chore(deps): bump github.com/onsi/gomega in /plugins/buildpacks
Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.41.0 to 1.42.0.
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/gomega/compare/v1.41.0...v1.42.0)

---
updated-dependencies:
- dependency-name: github.com/onsi/gomega
  dependency-version: 1.42.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-15 13:53:25 +00:00
Jose Diaz-Gonzalez
13535a18f5 Merge pull request #8757 from dokku/dependabot/go_modules/plugins/scheduler-k3s/helm.sh/helm/v3-3.21.1
chore(deps): bump helm.sh/helm/v3 from 3.21.0 to 3.21.1 in /plugins/scheduler-k3s
2026-06-12 12:57:52 -04:00
Jose Diaz-Gonzalez
7bb1cc3d58 Merge pull request #8756 from dokku/dependabot/npm_and_yarn/tests/apps/multi/sass-1.101.0
chore(deps): bump sass from 1.100.0 to 1.101.0 in /tests/apps/multi
2026-06-12 12:57:45 -04:00
dependabot[bot]
887ae6c640 chore(deps): bump helm.sh/helm/v3 in /plugins/scheduler-k3s
Bumps [helm.sh/helm/v3](https://github.com/helm/helm) from 3.21.0 to 3.21.1.
- [Release notes](https://github.com/helm/helm/releases)
- [Commits](https://github.com/helm/helm/compare/v3.21.0...v3.21.1)

---
updated-dependencies:
- dependency-name: helm.sh/helm/v3
  dependency-version: 3.21.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-12 13:54:19 +00:00
dependabot[bot]
fda24ff9f2 chore(deps): bump sass from 1.100.0 to 1.101.0 in /tests/apps/multi
Bumps [sass](https://github.com/sass/dart-sass) from 1.100.0 to 1.101.0.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.100.0...1.101.0)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.101.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-12 13:53:53 +00:00
Jose Diaz-Gonzalez
23d0080374 Merge pull request #8755 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-v3.7.5
chore(deps): bump traefik from v3.7.4 to v3.7.5 in /plugins/traefik-vhosts
2026-06-11 22:38:46 -04:00
dependabot[bot]
97ad5a8417 chore(deps): bump traefik in /plugins/traefik-vhosts
Bumps traefik from v3.7.4 to v3.7.5.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: v3.7.5
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-11 13:54:15 +00:00
Jose Diaz-Gonzalez
13afe84fdd Merge pull request #8754 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/traefik/traefik/v2-2.11.50
chore(deps): bump github.com/traefik/traefik/v2 from 2.11.49 to 2.11.50 in /plugins/scheduler-k3s
2026-06-10 14:47:22 -04:00
Jose Diaz-Gonzalez
e99f01498f Merge pull request #8753 from dokku/dependabot/composer/tests/apps/php/heroku/heroku-buildpack-php-292
chore(deps-dev): bump heroku/heroku-buildpack-php from 291 to 292 in /tests/apps/php
2026-06-10 14:47:12 -04:00
dependabot[bot]
343d7ffffa chore(deps): bump github.com/traefik/traefik/v2
Bumps [github.com/traefik/traefik/v2](https://github.com/traefik/traefik) from 2.11.49 to 2.11.50.
- [Release notes](https://github.com/traefik/traefik/releases)
- [Changelog](https://github.com/traefik/traefik/blob/v2.11.50/CHANGELOG.md)
- [Commits](https://github.com/traefik/traefik/compare/v2.11.49...v2.11.50)

---
updated-dependencies:
- dependency-name: github.com/traefik/traefik/v2
  dependency-version: 2.11.50
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-10 13:54:56 +00:00
dependabot[bot]
75c164f8bd chore(deps-dev): bump heroku/heroku-buildpack-php in /tests/apps/php
Bumps [heroku/heroku-buildpack-php](https://github.com/heroku/heroku-buildpack-php) from 291 to 292.
- [Release notes](https://github.com/heroku/heroku-buildpack-php/releases)
- [Changelog](https://github.com/heroku/heroku-buildpack-php/blob/main/CHANGELOG.md)
- [Commits](https://github.com/heroku/heroku-buildpack-php/compare/v291...v292)

---
updated-dependencies:
- dependency-name: heroku/heroku-buildpack-php
  dependency-version: '292'
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-10 13:52:23 +00:00
Jose Diaz-Gonzalez
823e1a5dfe Merge pull request #8749 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/traefik/traefik/v2-2.11.49
chore(deps): bump github.com/traefik/traefik/v2 from 2.11.47 to 2.11.49 in /plugins/scheduler-k3s
2026-06-09 11:28:13 -04:00
dependabot[bot]
1d991de4b0 chore(deps): bump github.com/traefik/traefik/v2
Bumps [github.com/traefik/traefik/v2](https://github.com/traefik/traefik) from 2.11.47 to 2.11.49.
- [Release notes](https://github.com/traefik/traefik/releases)
- [Changelog](https://github.com/traefik/traefik/blob/v2.11.49/CHANGELOG.md)
- [Commits](https://github.com/traefik/traefik/compare/v2.11.47...v2.11.49)

---
updated-dependencies:
- dependency-name: github.com/traefik/traefik/v2
  dependency-version: 2.11.49
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-09 13:54:47 +00:00
Jose Diaz-Gonzalez
0e652b9e71 Merge pull request #8743 from dokku/dependabot/pip/docs/_build/beautifulsoup4-4.15.0
chore(deps): bump beautifulsoup4 from 4.14.3 to 4.15.0 in /docs/_build
2026-06-08 13:28:57 -04:00
Jose Diaz-Gonzalez
0e8a882951 Merge pull request #8744 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-v3.7.4
chore(deps): bump traefik from v3.7.3 to v3.7.4 in /plugins/traefik-vhosts
2026-06-08 13:28:43 -04:00
Jose Diaz-Gonzalez
2c54ee70ee Merge pull request #8747 from dokku/dependabot/go_modules/plugins/scheduler-k3s/golang.org/x/sync-0.21.0
chore(deps): bump golang.org/x/sync from 0.20.0 to 0.21.0 in /plugins/scheduler-k3s
2026-06-08 13:28:26 -04:00
Jose Diaz-Gonzalez
0b807b36b9 Merge pull request #8746 from dokku/dependabot/go_modules/plugins/scheduler-docker-local/golang.org/x/sync-0.21.0
chore(deps): bump golang.org/x/sync from 0.20.0 to 0.21.0 in /plugins/scheduler-docker-local
2026-06-08 13:28:18 -04:00
dependabot[bot]
13217c602e chore(deps): bump golang.org/x/sync in /plugins/scheduler-k3s
Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.20.0 to 0.21.0.
- [Commits](https://github.com/golang/sync/compare/v0.20.0...v0.21.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sync
  dependency-version: 0.21.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-08 13:54:21 +00:00
dependabot[bot]
430da379fc chore(deps): bump golang.org/x/sync in /plugins/scheduler-docker-local
Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.20.0 to 0.21.0.
- [Commits](https://github.com/golang/sync/compare/v0.20.0...v0.21.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sync
  dependency-version: 0.21.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-08 13:53:55 +00:00
dependabot[bot]
271a1ddf2c chore(deps): bump traefik in /plugins/traefik-vhosts
Bumps traefik from v3.7.3 to v3.7.4.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: v3.7.4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-08 13:53:46 +00:00
dependabot[bot]
63af7ec84a chore(deps): bump beautifulsoup4 from 4.14.3 to 4.15.0 in /docs/_build
Bumps [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) from 4.14.3 to 4.15.0.

---
updated-dependencies:
- dependency-name: beautifulsoup4
  dependency-version: 4.15.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-08 13:53:24 +00:00
Dokku Bot
a9b68e8917 Release 0.38.19
# History

## 0.38.19

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.19/bootstrap.sh
sudo DOKKU_TAG=v0.38.19 bash bootstrap.sh
```
2026-06-08 05:41:55 +00:00
Dokku Bot
05e11a873d Release 0.38.18
# History

## 0.38.18

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.18/bootstrap.sh
sudo DOKKU_TAG=v0.38.18 bash bootstrap.sh
```

### Tests

- #8734: @dependabot[bot] chore(deps): bump golang from 1.26.3 to 1.26.4 in /tests/apps/gogrpc
- #8731: @dependabot[bot] chore(deps): bump golang from 1.26.3 to 1.26.4 in /tests/apps/go-fail-predeploy
- #8733: @dependabot[bot] chore(deps): bump golang from 1.26.3 to 1.26.4 in /tests/apps/zombies-dockerfile-tini
- #8735: @dependabot[bot] chore(deps): bump golang from 1.26.3 to 1.26.4 in /tests/apps/go-fail-postdeploy
- #8736: @dependabot[bot] chore(deps): bump golang from 1.26.3 to 1.26.4 in /tests/apps/zombies-dockerfile-no-tini
- #8738: @dependabot[bot] chore(deps): bump python from 3.15.0b1-bookworm to 3.15.0b2-bookworm in /tests/apps/dockerfile-release
- #8730: @dependabot[bot] chore(deps): bump django from 5.2.14 to 5.2.15 in /tests/apps/dockerfile-release

### Dependencies

- #8727: @dependabot[bot] chore(deps): bump github.com/melbahja/goph from 1.5.0 to 1.5.1 in /plugins/common
- #8739: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.11.46 to 2.11.47 in /plugins/scheduler-k3s
- #8737: @dependabot[bot] chore(deps): bump dokku/openresty-docker-proxy from 0.12.0 to 0.12.1 in /plugins/openresty-vhosts
- #8732: @dependabot[bot] chore(deps): bump python from 3.15.0b1-alpine to 3.15.0b2-alpine in /docs/_build
- #8740: @dependabot[bot] chore(deps): bump timberio/vector from 0.55.0-debian to 0.56.0-debian in /plugins/logs
- #8741: @dependabot[bot] chore(deps): bump traefik from v3.7.1 to v3.7.3 in /plugins/traefik-vhosts
2026-06-07 03:01:19 +00:00
Jose Diaz-Gonzalez
4f6acbf995 Merge pull request #8727 from dokku/dependabot/go_modules/plugins/common/github.com/melbahja/goph-1.5.1
chore(deps): bump github.com/melbahja/goph from 1.5.0 to 1.5.1 in /plugins/common
2026-06-06 22:59:14 -04:00
dependabot[bot]
54bf5b6433 chore(deps): bump github.com/melbahja/goph in /plugins/common
Bumps [github.com/melbahja/goph](https://github.com/melbahja/goph) from 1.5.0 to 1.5.1.
- [Commits](https://github.com/melbahja/goph/compare/v1.5.0...v1.5.1)

---
updated-dependencies:
- dependency-name: github.com/melbahja/goph
  dependency-version: 1.5.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-06 17:03:28 -04:00
Jose Diaz-Gonzalez
ee238c9716 Merge pull request #8739 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/traefik/traefik/v2-2.11.47
chore(deps): bump github.com/traefik/traefik/v2 from 2.11.46 to 2.11.47 in /plugins/scheduler-k3s
2026-06-06 17:00:51 -04:00
Jose Diaz-Gonzalez
35dcd41443 Merge pull request #8737 from dokku/dependabot/docker/plugins/openresty-vhosts/dokku/openresty-docker-proxy-0.12.1
chore(deps): bump dokku/openresty-docker-proxy from 0.12.0 to 0.12.1 in /plugins/openresty-vhosts
2026-06-06 17:00:42 -04:00
Jose Diaz-Gonzalez
17e99f3e11 Merge pull request #8734 from dokku/dependabot/docker/tests/apps/gogrpc/golang-1.26.4
chore(deps): bump golang from 1.26.3 to 1.26.4 in /tests/apps/gogrpc
2026-06-06 17:00:34 -04:00
Jose Diaz-Gonzalez
d414420303 Merge pull request #8732 from dokku/dependabot/docker/docs/_build/python-3.15.0b2-alpine
chore(deps): bump python from 3.15.0b1-alpine to 3.15.0b2-alpine in /docs/_build
2026-06-06 17:00:24 -04:00
Jose Diaz-Gonzalez
6aef528e49 Merge pull request #8731 from dokku/dependabot/docker/tests/apps/go-fail-predeploy/golang-1.26.4
chore(deps): bump golang from 1.26.3 to 1.26.4 in /tests/apps/go-fail-predeploy
2026-06-06 17:00:13 -04:00
Jose Diaz-Gonzalez
53f36bcb27 Merge pull request #8733 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-tini/golang-1.26.4
chore(deps): bump golang from 1.26.3 to 1.26.4 in /tests/apps/zombies-dockerfile-tini
2026-06-06 17:00:04 -04:00
Jose Diaz-Gonzalez
578043f049 Merge pull request #8735 from dokku/dependabot/docker/tests/apps/go-fail-postdeploy/golang-1.26.4
chore(deps): bump golang from 1.26.3 to 1.26.4 in /tests/apps/go-fail-postdeploy
2026-06-06 16:59:44 -04:00
Jose Diaz-Gonzalez
c3d7ab8c04 Merge pull request #8736 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-no-tini/golang-1.26.4
chore(deps): bump golang from 1.26.3 to 1.26.4 in /tests/apps/zombies-dockerfile-no-tini
2026-06-06 16:59:35 -04:00
Jose Diaz-Gonzalez
24798197de Merge pull request #8738 from dokku/dependabot/docker/tests/apps/dockerfile-release/python-3.15.0b2-bookworm
chore(deps): bump python from 3.15.0b1-bookworm to 3.15.0b2-bookworm in /tests/apps/dockerfile-release
2026-06-06 16:59:26 -04:00
Jose Diaz-Gonzalez
c4e5ad40db Merge pull request #8740 from dokku/dependabot/docker/plugins/logs/timberio/vector-0.56.0-debian
chore(deps): bump timberio/vector from 0.55.0-debian to 0.56.0-debian in /plugins/logs
2026-06-06 16:59:16 -04:00
Jose Diaz-Gonzalez
05869e3a21 Merge pull request #8741 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-v3.7.3
chore(deps): bump traefik from v3.7.1 to v3.7.3 in /plugins/traefik-vhosts
2026-06-06 16:59:06 -04:00
Jose Diaz-Gonzalez
974f2d28d5 Merge pull request #8730 from dokku/dependabot/pip/tests/apps/dockerfile-release/django-5.2.15
chore(deps): bump django from 5.2.14 to 5.2.15 in /tests/apps/dockerfile-release
2026-06-06 16:58:54 -04:00
dependabot[bot]
6ae66f3cfd chore(deps): bump traefik in /plugins/traefik-vhosts
Bumps traefik from v3.7.1 to v3.7.3.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: v3.7.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-05 13:53:42 +00:00
dependabot[bot]
1171b48f7b chore(deps): bump timberio/vector in /plugins/logs
Bumps timberio/vector from 0.55.0-debian to 0.56.0-debian.

---
updated-dependencies:
- dependency-name: timberio/vector
  dependency-version: 0.56.0-debian
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-04 01:57:24 +00:00
dependabot[bot]
7bd062f5de chore(deps): bump github.com/traefik/traefik/v2
Bumps [github.com/traefik/traefik/v2](https://github.com/traefik/traefik) from 2.11.46 to 2.11.47.
- [Release notes](https://github.com/traefik/traefik/releases)
- [Changelog](https://github.com/traefik/traefik/blob/v2.11.47/CHANGELOG.md)
- [Commits](https://github.com/traefik/traefik/compare/v2.11.46...v2.11.47)

---
updated-dependencies:
- dependency-name: github.com/traefik/traefik/v2
  dependency-version: 2.11.47
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-04 01:55:19 +00:00
dependabot[bot]
bdf7a0e18f chore(deps): bump python in /tests/apps/dockerfile-release
Bumps python from 3.15.0b1-bookworm to 3.15.0b2-bookworm.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.15.0b2-bookworm
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-04 01:53:51 +00:00
dependabot[bot]
e241739610 chore(deps): bump dokku/openresty-docker-proxy
Bumps dokku/openresty-docker-proxy from 0.12.0 to 0.12.1.

---
updated-dependencies:
- dependency-name: dokku/openresty-docker-proxy
  dependency-version: 0.12.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-04 01:53:50 +00:00
dependabot[bot]
ccc09813e4 chore(deps): bump golang in /tests/apps/go-fail-postdeploy
Bumps golang from 1.26.3 to 1.26.4.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-04 01:53:46 +00:00
dependabot[bot]
ec7f744220 chore(deps): bump golang in /tests/apps/zombies-dockerfile-no-tini
Bumps golang from 1.26.3 to 1.26.4.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-04 01:53:46 +00:00
dependabot[bot]
05b2463668 chore(deps): bump golang from 1.26.3 to 1.26.4 in /tests/apps/gogrpc
Bumps golang from 1.26.3 to 1.26.4.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-04 01:53:41 +00:00
dependabot[bot]
673e298721 chore(deps): bump golang in /tests/apps/zombies-dockerfile-tini
Bumps golang from 1.26.3 to 1.26.4.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-04 01:53:10 +00:00
dependabot[bot]
ce291603e9 chore(deps): bump python in /docs/_build
Bumps python from 3.15.0b1-alpine to 3.15.0b2-alpine.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.15.0b2-alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-04 01:52:52 +00:00
dependabot[bot]
27ceca0870 chore(deps): bump golang in /tests/apps/go-fail-predeploy
Bumps golang from 1.26.3 to 1.26.4.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-04 01:51:50 +00:00
dependabot[bot]
d74f96d58c chore(deps): bump django in /tests/apps/dockerfile-release
Bumps [django](https://github.com/django/django) from 5.2.14 to 5.2.15.
- [Commits](https://github.com/django/django/compare/5.2.14...5.2.15)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 5.2.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-04 01:50:42 +00:00
Dokku Bot
f5064066be Release 0.38.17
# History

## 0.38.17

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.17/bootstrap.sh
sudo DOKKU_TAG=v0.38.17 bash bootstrap.sh
```

### New Features

- #8729: @josegonzalez Add scheduler-k3s:preview subcommand to allow previewing helm chart changes

### Dependencies

- #8728: @dependabot[bot] chore(deps): bump dokku/openresty-docker-proxy from 0.11.0 to 0.12.0 in /plugins/openresty-vhosts
2026-06-03 08:05:01 +00:00
Jose Diaz-Gonzalez
91ea6b51a9 Merge pull request #8729 from dokku/scheduler-k3s-diff-subcommand
Add scheduler-k3s:preview subcommand
2026-06-03 03:36:36 -04:00
Jose Diaz-Gonzalez
ac6e4f5793 test: allow multiple 'has been added' matches in preview test 3
For an undeployed app, the additive diff covers every chart resource, so
the literal 'has been added' header appears once per resource - six times
in the python test app's chart. `assert_output_contains` defaults to
exact-count 1, which fails. Pass -1 (at least 1) to match the actual
semantics of the test.
2026-06-03 01:53:30 -04:00
Jose Diaz-Gonzalez
4ce8afaa97 fix: let scheduler-k3s:preview tolerate a missing image
`common.GetDeployingAppImageName` runs `VerifyImage` and errors out when
no image has been built for the app. A freshly-created app has no image
yet, so the preview could never render for never-deployed apps. Add an
`AllowMissingImage` flag to `BuildOptions` that lets BuildAppChart
substitute a placeholder image string in that case; CommandPreview sets
it. The deploy path still passes `BuildOptions{}`, so missing-image
remains a hard error there.
2026-06-03 00:48:26 -04:00
Jose Diaz-Gonzalez
f1e31ded41 fix: pin scheduler-k3s:preview deployment id to the deployed release
Without this, the preview build invented a fresh timestamp for
`Values.global.deployment_id` and the resulting diff showed every
Deployment changing its `app.kubernetes.io/version` annotation - even when
nothing semantically changed. CommandPreview now reads the deployment id
out of `release.Chart.Metadata.Version` and passes it through a new
`BuildOptions.OverrideDeploymentID` parameter so the previewed manifests
carry the same version label as the live release. The deploy path still
generates a fresh timestamp.
2026-06-02 23:34:10 -04:00
Jose Diaz-Gonzalez
cd66361895 fix: sort the properties so that the snippets do not cause drift for each deploy 2026-06-02 23:18:19 -04:00
Jose Diaz-Gonzalez
9dfb2b1fc9 fix: register scheduler-k3s:preview in plugin Makefile
The previous commit added the dispatcher case but missed appending
`subcommands/preview` to the plugin's `SUBCOMMANDS` list, so no symlink
was created at install time and dokku reported the command as unknown.
2026-06-02 22:25:22 -04:00
Jose Diaz-Gonzalez
e8671790b5 feat: add --context flag to scheduler-k3s:preview
Users can override the default 3-line surrounding context per change. Pass
`--context -1` to render the full resource around every change, matching
upstream `helm diff upgrade` behavior.
2026-06-02 21:02:43 -04:00
Jose Diaz-Gonzalez
496ede44b7 feat: add scheduler-k3s:preview subcommand
Adds a `scheduler-k3s:preview <app>` command that renders a unified diff
between the manifests currently stored in the live Helm release for an app
and the manifests that the next deploy would roll out. The diff is produced
entirely via the Helm Go SDK that scheduler-k3s already uses, with no
external `helm` binary or `helm-diff` plugin install required. The
underlying diff and parse logic is vendored from `databus23/helm-diff`
(Apache 2.0) into a new internal package, trimmed of three-way-merge,
release-ownership tracking, and the non-default output formatters.

The chart-construction half of `TriggerSchedulerDeploy` has been extracted
into a reusable `BuildAppChart` helper so deploy and preview share the
same chart materialization without duplicating template logic. Secret
values are redacted by default in preview output; `--show-secrets` and
`--show-secrets-decoded` flags match the upstream `helm diff` UX. Only the
main app helm release is compared in this iteration; auxiliary releases
for config vars, image-pull secrets, and TLS certificates are out of scope
and documented as such.
2026-06-02 20:28:31 -04:00
Jose Diaz-Gonzalez
db798dfe16 Merge pull request #8728 from dokku/dependabot/docker/plugins/openresty-vhosts/dokku/openresty-docker-proxy-0.12.0
chore(deps): bump dokku/openresty-docker-proxy from 0.11.0 to 0.12.0 in /plugins/openresty-vhosts
2026-06-02 19:24:49 -04:00
dependabot[bot]
ec4d406460 chore(deps): bump dokku/openresty-docker-proxy
Bumps dokku/openresty-docker-proxy from 0.11.0 to 0.12.0.

---
updated-dependencies:
- dependency-name: dokku/openresty-docker-proxy
  dependency-version: 0.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-02 17:30:59 +00:00
Dokku Bot
fd8247018f Release 0.38.16
# History

## 0.38.16

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.16/bootstrap.sh
sudo DOKKU_TAG=v0.38.16 bash bootstrap.sh
```

### Bug Fixes

- #8723: @josegonzalez Match control-plane nodes by their modern label
- #8724: @josegonzalez Stop truncating existing files in common.TouchFile
2026-05-31 22:50:58 +00:00
Jose Diaz-Gonzalez
af4ca1b8ba Merge pull request #8723 from dokku/8721-scheduler-k3s-cluster-add-fails-with-no-nodes-found-in-the-cluster 2026-05-31 18:49:37 -04:00
Jose Diaz-Gonzalez
e81afe5274 Merge pull request #8724 from dokku/8722-adding-a-new-host-to-a-k3s-cluster-without-insecure-allow-unknown-hosts-clears-the-dokku-user-s-known-hosts 2026-05-31 18:12:28 -04:00
Jose Diaz-Gonzalez
cf84679133 fix: stop truncating existing files in common.TouchFile
`common.TouchFile` opened files with `O_TRUNC`, so the call from `common.SshTask.Execute` against `~/.ssh/known_hosts` emptied the dokku user's previously trusted host keys before `goph.DefaultKnownHosts()` read them. Running `scheduler-k3s:cluster:add` without `--insecure-allow-unknown-hosts` then failed with `knownhosts: key is unknown` and left a zero-byte `known_hosts`. The function now matches `touch(1)` semantics: create the file if missing, otherwise leave its contents intact.
2026-05-31 16:37:15 -04:00
Jose Diaz-Gonzalez
099cf10e98 fix: match control-plane nodes by their modern label
Kubernetes 1.20 deprecated the node-role.kubernetes.io/master label and replaced it with node-role.kubernetes.io/control-plane, and 1.24 dropped the legacy label entirely. The scheduler-k3s:cluster:add join path still filtered control-plane nodes with master=true, so on any k3s release built from Kubernetes 1.24+ the lookup matched zero nodes and aborted with "no nodes found in the cluster" before the worker could join.
2026-05-31 16:24:23 -04:00
Dokku Bot
213d89b1e4 Release 0.38.15
# History

## 0.38.15

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.15/bootstrap.sh
sudo DOKKU_TAG=v0.38.15 bash bootstrap.sh
```

### Bug Fixes

- #8718: @josegonzalez Persist scheduler-k3s chart overrides as JSON maps

### Other

- #8720: @josegonzalez Persist scheduler-k3s annotations and labels as JSON maps
2026-05-31 08:05:25 +00:00
Jose Diaz-Gonzalez
76b9f03818 Merge pull request #8720 from dokku/8719-scheduler-k3s-annotations-and-labels-migrate-to-propertymap-storage-to-support-multi-line-values 2026-05-31 04:04:08 -04:00
Jose Diaz-Gonzalez
a0bae9b0a9 Merge pull request #8718 from dokku/8717-scheduler-k3s-charts-set-cannot-persist-property-names-containing-and-silently-breaks-multi-line-values 2026-05-31 03:40:52 -04:00
Jose Diaz-Gonzalez
21ed5fb738 fix: persist scheduler-k3s annotations and labels as JSON maps
Annotation and label values containing a newline previously round-tripped
as two adjacent `key: value` lines, and the second line then failed the
`SplitN(line, ": ", 2)` parse on read. Move the per-`(processType,
resourceType)` files to `PropertyMap*` storage so `\n` in values and `/`
in keys are preserved verbatim. An idempotent `TriggerInstall` migration
walks `--global` and every app, converting any legacy line-formatted file
in place by probing `PropertyMapGet` first and rewriting via
`PropertyListGet` only when the probe fails. Property names are
unchanged, so the annotations/labels report scanner and the
`reservedAnnotationPrefixes` filter keep working without modification.

Closes #8719.
2026-05-31 02:38:35 -04:00
Jose Diaz-Gonzalez
4ae48c6ea0 test: pin test-env system identity and core-plugins path
PropertyMap tests went through SetPermissions, which looks up the `dokku` user/group; the fresh `golang:1.26.2` container used by `go-test-plugin-in-docker` has neither, so the chown failed with `unknown group dokku`. Override `DOKKU_SYSTEM_USER` and `DOKKU_SYSTEM_GROUP` to `root` in the property and chart-migration test setups so the chown targets an identity that exists everywhere. The config tests also called `plugn trigger post-config-update` without `PLUGIN_CORE_AVAILABLE_PATH` set, so the hook tried to source `/common/functions` and logged a noisy warning on every test; point the env var at the canonical `/var/lib/dokku/core-plugins/available` location.
2026-05-31 02:23:35 -04:00
Jose Diaz-Gonzalez
b8929712d4 fix: persist scheduler-k3s chart overrides as JSON maps
Chart property names containing `/` failed because per-key flat-file storage interpreted the slash as a filesystem path separator, and any move to line-based storage would silently truncate multi-line values. A new `PropertyMap*` helper family in `common` persists each map as a single JSON file so both `/` in keys and `\n` in values round-trip losslessly. Chart overrides move to `chart-overrides.<chart>` and an idempotent `TriggerInstall` migration rewrites any legacy `chart.<chart>.<key>` files into the new layout. The deprecated `scheduler-k3s:set --global chart.*` form is rerouted through the same map storage so it does not silently orphan writes. Closes #8717.
2026-05-31 01:54:28 -04:00
Dokku Bot
ff00bcb218 Release 0.38.14
# History

## 0.38.14

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.14/bootstrap.sh
sudo DOKKU_TAG=v0.38.14 bash bootstrap.sh
```

### New Features

- #8716: @josegonzalez Add scheduler-k3s annotations:report and labels:report
- #8715: @josegonzalez Add scheduler-k3s:charts:set and :charts:report
2026-05-31 01:12:35 +00:00
Jose Diaz-Gonzalez
580aa892de Merge pull request #8716 from dokku/scheduler-k3s-report-subcommands 2026-05-30 21:11:10 -04:00
Jose Diaz-Gonzalez
f9183bbff2 Merge pull request #8715 from dokku/scheduler-k3s-charts-set 2026-05-30 20:49:27 -04:00
Jose Diaz-Gonzalez
5dbb2951bb feat: add scheduler-k3s annotations:report and labels:report
The scheduler-k3s plugin exposes `annotations:set` and `labels:set` but no matching report subcommands, so scripts could not inspect the configured state for idempotent management without reading the property files directly. The new `scheduler-k3s:annotations:report` and `scheduler-k3s:labels:report` surface the configured entries with stdout, JSON, single-flag query, and `--process-type` / `--resource-type` filtering, mirroring the recently added `scheduler-k3s:charts:report`. The literal `GlobalProcessType` value `--global` is rendered as `global` in report keys to avoid leading dashes. The `scheduler-k3s:autoscaling-auth:report` command is updated alongside to loop over every app when no app and no `--global` flag is provided, matching the convention used by `scheduler-k3s:report`.
2026-05-30 20:12:00 -04:00
Jose Diaz-Gonzalez
4346a18194 feat: add scheduler-k3s:charts:set and :charts:report
Helm chart overrides on the scheduler-k3s plugin were previously set
through the generic `scheduler-k3s:set --global chart.<chart>.<property>`
interface, which mixed chart-level configuration into the same command
that manages scheduler properties and offered no focused way to inspect
which overrides were configured. A dedicated `scheduler-k3s:charts:set`
sets and clears chart-specific helm values, and a complementary
`scheduler-k3s:charts:report` surfaces configured overrides per chart
with optional JSON output and single-field flag queries. The legacy form
on `scheduler-k3s:set` continues to work but now emits a deprecation
warning pointing users at the new subcommand.
2026-05-30 19:35:20 -04:00
Dokku Bot
0cea642dd9 Release 0.38.13
# History

## 0.38.13

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.13/bootstrap.sh
sudo DOKKU_TAG=v0.38.13 bash bootstrap.sh
```

### Bug Fixes

- #8713: @josegonzalez Make storage:mount upsert the existing attachment

### New Features

- #8714: @josegonzalez Expose per-attachment fields in storage:report
- #8712: @josegonzalez Expose attachment readonly and volume_options in storage:list json
- #8711: @josegonzalez Add --volume-options flag to storage:mount
2026-05-30 10:21:55 +00:00
Jose Diaz-Gonzalez
f86b2cb1cb Merge pull request #8714 from dokku/8710-storage-report-include-volume-options-for-each-attachment 2026-05-30 06:20:40 -04:00
Jose Diaz-Gonzalez
641be4334d Merge pull request #8713 from dokku/8709-storage-mount-update-existing-attachment-in-place-instead-of-duplicating 2026-05-30 04:56:27 -04:00
Jose Diaz-Gonzalez
e13b9d33f9 Merge pull request #8712 from dokku/8708-storage-list-format-json-include-volume-options
Expose attachment readonly and volume_options in storage:list json
2026-05-30 04:19:02 -04:00
Jose Diaz-Gonzalez
bec6b9f14a feat: expose per-attachment fields in storage:report
storage:report gains a flat dotted key per attachment field (entry-name, host-path, container-path, phases, process-type, subpath, readonly, volume-options, volume-chown) under the --storage-attachment.<index>.<field> shape. Both stdout and JSON pick the keys up through the existing common.ReportSingleApp pipeline. Attachments that reference a missing storage entry emit a warning and are skipped, so the rest of the report still renders. Closes #8710.
2026-05-30 04:11:30 -04:00
Jose Diaz-Gonzalez
f896c731f2 Merge pull request #8711 from dokku/8707-storage-mount-volume-options-flag
Add --volume-options flag to storage:mount
2026-05-30 03:26:08 -04:00
Jose Diaz-Gonzalez
3bb21b6987 feat: make storage:mount upsert the existing attachment
Re-running `storage:mount <app> <entry> --container-dir <path>` against an existing `(entry, container_dir, process_type)` tuple now updates the attachment's mount-time fields in place instead of erroring with `already mounted`. Declarative tooling that wants to change `--volume-options`, `--volume-chown`, `--phase`, `--volume-subpath`, or `--volume-readonly` on an existing mount no longer has to unmount-then-remount, which briefly dropped the volume from `storage:report` and raced against any deploy that fired in the window. The legacy `host:container[:opts]` form keeps its strict `Mount path already exists.` failure.
2026-05-30 03:23:32 -04:00
Jose Diaz-Gonzalez
e9160db769 fix: expose attachment readonly and volume_options in storage:list json
The `storage:list <app> --format json` payload conflated the
attachment's `Readonly` flag and its `VolumeOptions` field into a
single derived `volume_options` string that rendered as `ro`,
`<options>`, or `ro,<options>` depending on which fields were set on
the underlying attachment. That shape is fine for the legacy
`host:container[:options]` text view but it leaves drift-detection
tooling unable to tell whether a `ro` token came from
`Attachment.Readonly == true` or from the operator setting
`Attachment.VolumeOptions = "ro"` directly. The JSON now exposes
`readonly` (boolean) and `volume_options` (string) as separate
omitempty keys populated straight from the attachment, and
`formatStorageListEntry` combines them at format time for the colon-
form text view. `ParseMountPath` was extended in lockstep so callers
of the legacy `host:container:opts` form no longer have to special-
case the `ro` token themselves.
2026-05-30 03:00:21 -04:00
Jose Diaz-Gonzalez
f4d27be7a6 feat: add --volume-options flag to storage:mount
The named-entry form of `storage:mount` had no way to set the attachment's `volume_options`, even though the legacy `host:container:opts` colon form parses options into the same field and every downstream consumer (the docker-args trigger and the storage:list/storage:report display path) already renders them. Tooling that declaratively re-applies attachments silently dropped options on every re-apply.
2026-05-30 02:28:14 -04:00
Dokku Bot
411cb88796 Release 0.38.12
# History

## 0.38.12

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.12/bootstrap.sh
sudo DOKKU_TAG=v0.38.12 bash bootstrap.sh
```

### Bug Fixes

- #8706: @josegonzalez Align apps:set/apps:report with what dokku actually reads
2026-05-30 03:48:50 +00:00
Jose Diaz-Gonzalez
25d96f3f23 Merge pull request #8706 from dokku/8705-apps-drop-vestigial-global-deploy-source-deploy-source-metadata-and-surface-disable-autocreation-in-apps-report
Align apps:set/apps:report with what dokku actually reads
2026-05-29 23:47:19 -04:00
Jose Diaz-Gonzalez
da92b3721f fix: align apps:set/apps:report with what dokku actually reads
The apps plugin accepted `apps:set --global deploy-source` and
`apps:set --global deploy-source-metadata` even though nothing reads
those properties globally, accepted `apps:set <app> disable-autocreation`
even though only the global form is consulted by `maybeCreateApp`, and
never emitted `disable-autocreation` in `apps:report` for either scope.
Drop the global `deploy-source*` writes from `GlobalProperties`, reject
per-app `disable-autocreation` writes at the plugin level, and surface
`--app-global-disable-autocreation` in both the per-app and `--global`
reports so the property the runtime actually reads is round-trippable.
2026-05-29 22:55:24 -04:00
Dokku Bot
34b19f99b9 Release 0.38.11
# History

## 0.38.11

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.11/bootstrap.sh
sudo DOKKU_TAG=v0.38.11 bash bootstrap.sh
```

### Bug Fixes

- #8704: @josegonzalez Pass storage entry basename to chown-storage-dir
2026-05-30 01:05:46 +00:00
Jose Diaz-Gonzalez
214c8cc2e1 Merge pull request #8704 from dokku/8703-storage-create-chown-passes-the-full-host-path-to-chown-storage-dir-instead-of-the-entry-name
Pass storage entry basename to chown-storage-dir
2026-05-29 21:04:36 -04:00
Jose Diaz-Gonzalez
94c43f6dd8 fix: pass storage entry basename to chown-storage-dir
storage:create --chown invoked chown-storage-dir with the full host path, but the helper validates a basename and prepends the storage root itself, so every call failed with `Directory can only contain the following set of characters`. Pass the entry name and reject the combination of --chown with a non-default host path, since the helper only manages the default storage location.
2026-05-29 20:49:12 -04:00
Dokku Bot
59d880e3f9 Release 0.38.10
# History

## 0.38.10

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.10/bootstrap.sh
sudo DOKKU_TAG=v0.38.10 bash bootstrap.sh
```

### New Features

- #8702: @josegonzalez Prompt for confirmation on storage:destroy

### Tests

- #8698: @dependabot[bot] chore(deps-dev): bump org.apache.maven.plugins:maven-dependency-plugin from 3.10.0 to 3.11.0 in /tests/apps/java
2026-05-29 21:33:18 +00:00
Jose Diaz-Gonzalez
14013c8a7c Merge pull request #8702 from dokku/8701-storage-destroy-removes-a-storage-registry-entry-without-confirmation 2026-05-29 17:31:58 -04:00
Jose Diaz-Gonzalez
3493869fa4 feat: prompt for confirmation on storage:destroy
`storage:destroy` now prompts for confirmation before removing a named storage entry, matching the behavior of other destructive commands such as `apps:destroy` and `network:destroy`. The prompt can be skipped with the `--force` flag or the global `dokku --force` flag for non-interactive callers.
2026-05-29 14:31:20 -04:00
Jose Diaz-Gonzalez
d003bfaf0e Merge pull request #8698 from dokku/dependabot/maven/tests/apps/java/org.apache.maven.plugins-maven-dependency-plugin-3.11.0
chore(deps-dev): bump org.apache.maven.plugins:maven-dependency-plugin from 3.10.0 to 3.11.0 in /tests/apps/java
2026-05-28 12:43:01 -04:00
dependabot[bot]
b08f00a105 chore(deps-dev): bump org.apache.maven.plugins:maven-dependency-plugin
Bumps [org.apache.maven.plugins:maven-dependency-plugin](https://github.com/apache/maven-dependency-plugin) from 3.10.0 to 3.11.0.
- [Release notes](https://github.com/apache/maven-dependency-plugin/releases)
- [Commits](https://github.com/apache/maven-dependency-plugin/compare/maven-dependency-plugin-3.10.0...maven-dependency-plugin-3.11.0)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-dependency-plugin
  dependency-version: 3.11.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-28 15:54:58 +00:00
Dokku Bot
c8101aa2a7 Release 0.38.9
# History

## 0.38.9

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.9/bootstrap.sh
sudo DOKKU_TAG=v0.38.9 bash bootstrap.sh
```

### New Features

- #8697: @josegonzalez Split openresty report into raw/computed/global

### Refactors

- #8696: @josegonzalez Treat empty ps restart-policy as an unset
2026-05-28 09:14:30 +00:00
Jose Diaz-Gonzalez
a561a5069e Merge pull request #8696 from dokku/8695-ps-set-app-restart-policy-should-unset-not-error-with-invalid-restart-policy-specified 2026-05-28 05:13:16 -04:00
Jose Diaz-Gonzalez
5d802e3cf4 fix: separate docker-args outputs to avoid arg collisions
Emitting the restart policy as a `--restart` argument from a `docker-args-process-deploy` trigger exposed a latent gluing bug: proxy and builder triggers concatenated `$STDIN$output` with no separator, and the scheduler and builders appended `docker-args-process-*` output directly onto the older `docker-args-*` output, so adjacent arguments could merge into values like `--restart=on-failure:10--label`. A space is now inserted at both the trigger echo and the concatenation so arguments always stay separated.
2026-05-28 04:16:55 -04:00
Jose Diaz-Gonzalez
fec872711a fix: treat empty ps restart-policy as an unset
`dokku ps:set <app> restart-policy` with no value erroneously returned `Invalid restart-policy specified` instead of unsetting the property like every other ps property. The restart policy is now managed as a normal app and global property surfaced through the `--ps-restart-policy`, `--ps-global-restart-policy`, and `--ps-computed-restart-policy` report flags, with the effective value applied at deploy time and existing values migrated on install. Because it is no longer stored as a Docker option it no longer appears in `docker-options:report`, and `--ps-restart-policy` now reports the raw value with the `on-failure:10` default available via `--ps-computed-restart-policy`.
2026-05-28 03:10:03 -04:00
Jose Diaz-Gonzalez
44dd5e9eea Merge pull request #8697 from dokku/8694-extend-report-raw-computed-split-8675-to-openresty-vhosts
Split openresty report into raw/computed/global
2026-05-28 03:08:23 -04:00
Jose Diaz-Gonzalez
64b104a2a3 feat: split openresty report into raw/computed/global
Exposes raw, global, and computed report flags for every openresty per-app property and allows those properties to be set with `--global`, so external tooling can distinguish a property that was never set from one left at its built-in default. The computed value resolves the per-app value first, then the global value, then the default. Also corrects `client-header-timeout` which read the `client-body-timeout` key and sets the computed `client-max-body-size` default to `1m`.
2026-05-28 00:03:47 -04:00
Dokku Bot
ee11fa2c63 Release 0.38.8
# History

## 0.38.8

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.8/bootstrap.sh
sudo DOKKU_TAG=v0.38.8 bash bootstrap.sh
```

### Bug Fixes

- #8690: @josegonzalez Unset bind-all-interfaces on empty value
- #8689: @josegonzalez Expose remaining settable properties via :report

### New Features

- #8692: @Mordred Enable compression middleware for traefik when using scheduler-k3s
- #8691: @josegonzalez Align Go-plugin :report JSON keys with bash-strip convention
- #8688: @josegonzalez Promote registry image-repo-template to app + global

### Dependencies

- #8693: @dependabot[bot] chore(deps): bump helm.sh/helm/v3 from 3.20.2 to 3.21.0 in /plugins/scheduler-k3s
2026-05-27 18:50:41 +00:00
Jose Diaz-Gonzalez
84f744f61f Merge pull request #8692 from Mordred/feat/scheduler-k3s-compression
Enable compression middleware for traefik when using scheduler-k3s
2026-05-27 14:49:14 -04:00
Jose Diaz-Gonzalez
c7b8e50d8e Merge pull request #8693 from dokku/dependabot/go_modules/plugins/scheduler-k3s/helm.sh/helm/v3-3.21.0
chore(deps): bump helm.sh/helm/v3 from 3.20.2 to 3.21.0 in /plugins/scheduler-k3s
2026-05-27 13:34:00 -04:00
Jose Diaz-Gonzalez
a5603744ab Merge pull request #8691 from dokku/8687-drop-plugin-prefix-from-report-format-json-keys-align-go-plugins-with-bash-strip
Align Go-plugin :report JSON keys with bash-strip convention
2026-05-27 13:33:49 -04:00
dependabot[bot]
b0f5b764bd chore(deps): bump helm.sh/helm/v3 in /plugins/scheduler-k3s
Bumps [helm.sh/helm/v3](https://github.com/helm/helm) from 3.20.2 to 3.21.0.
- [Release notes](https://github.com/helm/helm/releases)
- [Commits](https://github.com/helm/helm/compare/v3.20.2...v3.21.0)

---
updated-dependencies:
- dependency-name: helm.sh/helm/v3
  dependency-version: 3.21.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-27 16:42:11 +00:00
Martin Jantošovič
5a517dde30 feat: enable compression middleware for traefik when using scheduler-k3s 2026-05-27 17:57:15 +02:00
Jose Diaz-Gonzalez
3bf6c72451 fix: align Go-plugin :report JSON keys with bash-strip convention
Every Go-implemented plugin's `:report --format json` now emits keys without the redundant `<plugin>-` head segment, matching the shape bash plugins have always emitted. The CLI flag names and `:set` semantics are unchanged. For backwards compatibility during the 0.38.x patch series, the legacy `<plugin>-<property>` keys are emitted side-by-side with the new keys, and a future major release will drop the legacy keys. `common.ReportSingleApp` is refactored to accept a `ReportSingleAppInput` struct with a `Validate()` method so the input is checked before any work runs, which also catches the latent `"docker options"` reportType bug at the API boundary.
2026-05-27 07:17:00 -04:00
Jose Diaz-Gonzalez
d635a49d6f Merge pull request #8690 from dokku/8684-network-set-bind-all-interfaces-writes-false-instead-of-unsetting-on-empty-value
Unset bind-all-interfaces on empty value
2026-05-27 05:53:56 -04:00
Jose Diaz-Gonzalez
5925efedc7 Merge pull request #8689 from dokku/8686-settable-but-unreported-properties-expose-ps-builder-scheduler-proxy-openresty-nginx-scheduler-k3s-properties-in-report
Expose remaining settable properties via :report
2026-05-27 05:26:38 -04:00
Jose Diaz-Gonzalez
035c021485 fix: unset bind-all-interfaces on empty value
`dokku network:set --global bind-all-interfaces` (no value) wrote the literal string `false` to the property file instead of unsetting it, so external tooling could not distinguish "explicitly set to default" from "not set". Drop the empty-to-`false` coercion in `CommandSet` so the empty-value path reaches `PropertyDelete` like every other property, and remove the unconditional `TriggerPostCreate` write so new apps consult the global value before falling back to the `"false"` computed default.
2026-05-27 05:13:25 -04:00
Jose Diaz-Gonzalez
a3538bbb66 Merge pull request #8688 from dokku/8685-registry-image-repo-template-should-be-app-global-not-global-only
Promote registry image-repo-template to app + global
2026-05-27 04:49:16 -04:00
Jose Diaz-Gonzalez
2b5d2e10ea fix: expose remaining settable properties via :report
Adds the missing raw/global/computed report keys for ten settable properties across the ps, builder, scheduler, proxy, openresty, nginx, and scheduler-k3s plugins so external tooling can verify drift through `:report --format json`. The scheduler-k3s `token` is masked as `*******` in default stdout output and only unmasked when the report is requested via `--format json` or when the flag is queried explicitly by name; the same explicit-query unmasking rule is extended to the existing traefik `dns-provider-<env_var>` keys.
2026-05-27 04:26:12 -04:00
Jose Diaz-Gonzalez
bc5acce55e fix: promote registry image-repo-template to app + global
The registry plugin accepted `registry:set <app> image-repo-template <value>` and persisted the per-app file, but only ever read the global value when rendering the image repository, so per-app overrides were silently dropped. The property now follows the same per-app to global to default fallback chain used by `push-on-release` and `server`, and `registry:report` exposes the raw per-app value alongside the existing global and computed flags. The `push-extra-tags` report flags were extended for the same reason: the runtime already honored per-app and global values, but the report only surfaced the raw per-app entry.
2026-05-27 03:23:14 -04:00
Dokku Bot
fd9e06d56b Release 0.38.7
# History

## 0.38.7

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.7/bootstrap.sh
sudo DOKKU_TAG=v0.38.7 bash bootstrap.sh
```

### Security

- #8672: @josegonzalez Prevent host shell injection from app.json cron commands

### Bug Fixes

- #8669: @josegonzalez Recover deployed image from registry on local miss
- #8679: @josegonzalez Align ps/cron :report --global keys with plugin convention
- #8678: @josegonzalez Split openresty report keys into global and computed pairs
- #8676: @immanuwell Use SYSTEM for shfmt Darwin detection

### New Features

- #8677: @josegonzalez Warn on deprecated listen http2 in custom nginx templates

### Tests

- #8683: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 290 to 291 in /tests/apps/php
- #8671: @josegonzalez Qualify scheduler-k3s ingressroute kubectl lookups

### Dependencies

- #8682: @dependabot[bot] chore(deps): bump k8s.io/apimachinery from 0.36.0 to 0.36.1 in /plugins/scheduler-k3s
- #8681: @dependabot[bot] chore(deps): bump soupsieve from 2.8.3 to 2.8.4 in /docs/_build

### Other

- #8680: @josegonzalez Split more report global keys into raw and computed
2026-05-27 04:32:52 +00:00
Jose Diaz-Gonzalez
f9186ca1fd Merge pull request #8669 from dokku/8630-ps-restart-and-other-commands-fail-after-local-image-gc-when-registry-push-on-release-is-enabled
Recover deployed image from registry on local miss
2026-05-26 21:09:15 -04:00
Jose Diaz-Gonzalez
e30b6d2ac4 Merge pull request #8679 from dokku/8674-ps-and-cron-global-report-keys-skip-the-plugin-prefix-or-global-infix
Align ps/cron :report --global keys with plugin convention
2026-05-26 20:33:52 -04:00
Jose Diaz-Gonzalez
6ce48992f3 test: bump report.bats column width for renamed ps flags
The longest `ps:report` flag is now `--ps-computed-stop-timeout-seconds` (34 chars), which pushes the per-plugin stdout column width past the 31-char floor used by `common.ReportSingleApp`. The `(report) report` test's literal-string assertion for `Deployed:` needs three extra spaces to match the new alignment.
2026-05-26 20:33:36 -04:00
Jose Diaz-Gonzalez
3feedd8786 fix: align ps/cron :report --global keys with plugin convention
The `ps` and `cron` plugins emitted `:report --format json` keys that
skipped the `<plugin>-` prefix or `-global-` infix used by every other
plugin, forcing external consumers to special-case those names. Rename
the affected report flags so they match the `<plugin>-global-<property>`
and `<plugin>-computed-<property>` convention introduced in 0.38.0, and
add the previously missing `computed-` siblings to both the per-app and
`--global` reports so the shape lines up with caddy, haproxy, and
traefik.
2026-05-26 20:33:32 -04:00
Jose Diaz-Gonzalez
99b949da4a Merge pull request #8680 from dokku/8675-extend-raw-computed-report-key-split-8631-to-nginx-openresty-registry-scheduler-k3s
Split more report global keys into raw and computed
2026-05-26 20:25:51 -04:00
Jose Diaz-Gonzalez
90e6be84a2 Merge pull request #8682 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/apimachinery-0.36.1
chore(deps): bump k8s.io/apimachinery from 0.36.0 to 0.36.1 in /plugins/scheduler-k3s
2026-05-26 20:14:14 -04:00
Jose Diaz-Gonzalez
aee447b384 Merge pull request #8683 from dokku/dependabot/composer/tests/apps/php/heroku/heroku-buildpack-php-291
chore(deps-dev): bump heroku/heroku-buildpack-php from 290 to 291 in /tests/apps/php
2026-05-26 20:02:53 -04:00
dependabot[bot]
56313edd32 chore(deps-dev): bump heroku/heroku-buildpack-php in /tests/apps/php
Bumps [heroku/heroku-buildpack-php](https://github.com/heroku/heroku-buildpack-php) from 290 to 291.
- [Release notes](https://github.com/heroku/heroku-buildpack-php/releases)
- [Changelog](https://github.com/heroku/heroku-buildpack-php/blob/main/CHANGELOG.md)
- [Commits](https://github.com/heroku/heroku-buildpack-php/compare/v290...v291)

---
updated-dependencies:
- dependency-name: heroku/heroku-buildpack-php
  dependency-version: '291'
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-26 20:59:28 +00:00
Jose Diaz-Gonzalez
aa6a2e8cc3 Merge pull request #8681 from dokku/dependabot/pip/docs/_build/soupsieve-2.8.4
chore(deps): bump soupsieve from 2.8.3 to 2.8.4 in /docs/_build
2026-05-26 10:18:00 -04:00
dependabot[bot]
631620b1df chore(deps): bump k8s.io/apimachinery in /plugins/scheduler-k3s
Bumps [k8s.io/apimachinery](https://github.com/kubernetes/apimachinery) from 0.36.0 to 0.36.1.
- [Commits](https://github.com/kubernetes/apimachinery/compare/v0.36.0...v0.36.1)

---
updated-dependencies:
- dependency-name: k8s.io/apimachinery
  dependency-version: 0.36.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-25 20:24:28 +00:00
dependabot[bot]
866c4a2939 chore(deps): bump soupsieve from 2.8.3 to 2.8.4 in /docs/_build
Bumps [soupsieve](https://github.com/facelessuser/soupsieve) from 2.8.3 to 2.8.4.
- [Release notes](https://github.com/facelessuser/soupsieve/releases)
- [Commits](https://github.com/facelessuser/soupsieve/compare/2.8.3...2.8.4)

---
updated-dependencies:
- dependency-name: soupsieve
  dependency-version: 2.8.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-25 20:17:42 +00:00
Jose Diaz-Gonzalez
b45c86dcc9 chore: run shfmt 2026-05-25 16:07:55 -04:00
Jose Diaz-Gonzalez
64a5b1517a fix: stop forwarding deployed tag from config:set restart
Reverts the earlier triggerRestart change. Forwarding the numeric tag forces
release_and_deploy to look up `dokku/<app>:N` (the bare local name), which
was never tagged when image-repo overrides the default. `fn-verify-app-image`
then retag-after-pulls and the underlying image ID ends up with two tags,
which prevents scheduler-docker-local's image retire path from removing the
old numeric tag (it uses unforced `docker image remove`).
2026-05-25 16:07:47 -04:00
Jose Diaz-Gonzalez
79921d75d6 fix: pull registry-aware image name on local miss
When `image-repo` is overridden, the registry plugin pushes under that name and
the bare local `dokku/<app>:N` tag is never created. `fn-verify-app-image` now
queries the `deployed-app-image-repo` trigger and pulls `${REMOTE_REPO}${DEPLOYED_REPO}:${TAG}`,
retagging it as the local bare reference so subsequent inspects resolve. Also
aligns the `storage:ensure-directory` deprecation test assertion with the
standardized `Deprecated:` prefix.
2026-05-25 16:07:47 -04:00
Jose Diaz-Gonzalez
9517353df4 fix: recover deployed image from registry on local miss
Adds an app-aware `fn-verify-app-image` helper that pulls the deployed image
from the configured registry when it is missing locally, gated on
push-on-release being enabled, honoring per-app `registry:login` credentials.
Every in-tree `verify_image` caller migrates to the wrapper and the bare
helper is marked deprecated. `config:set` now forwards the deployed image tag
to `release-and-deploy` so the release path no longer pins recovery on the
unrecoverable `:latest` tag.
2026-05-25 16:07:47 -04:00
Jose Diaz-Gonzalez
09c17e1653 fix: split more report global keys into raw and computed
Three plugins still leaked the built-in default through `<plugin>-global-<property>` after the broader raw/computed split in #8640. External tooling reading `:report --format json` for drift detection could not distinguish "set to default" from "never set" - after a `:set --global` followed by an unset, the JSON still reported the default value. The `<plugin>-global-<property>` keys now hold the raw stored value (empty when nothing has been set) and `<plugin>-computed-<property>` keys hold the effective value with per-app, global, and built-in default fallback. Every global property now has a computed sibling for shape consistency, including those whose default is empty. Internal callers in `scheduler-k3s` that previously read the default-applied global helpers now consume new `getComputed*` helpers, keeping deploy-time behavior unchanged.
2026-05-25 15:33:41 -04:00
Jose Diaz-Gonzalez
80ebaada77 Merge pull request #8678 from dokku/8673-openresty-report-global-emits-bare-keys-for-image-letsencrypt-email-letsencrypt-server
Split openresty report keys into global and computed pairs
2026-05-25 14:29:59 -04:00
Jose Diaz-Gonzalez
f9de91fc4b fix: split openresty report keys into global and computed pairs
The `openresty:report --format json` payload emitted bare property names for the four global-only properties (`image`, `letsencrypt-email`, `letsencrypt-server`, `allowed-letsencrypt-domains-func-base64`), while `hsts` already used the `global-`/`computed-` convention adopted by the other proxy plugins. External tooling consuming the report had to maintain a per-property naming map within a single plugin. The global flag map now emits `--openresty-global-<X>` (raw stored value, empty when unset) and `--openresty-computed-<X>` (effective value with the built-in default applied) for those four properties plus `hsts`, and the per-app map gains the same pair for the global-only properties. The compose template and the two non-report callers consume the `computed-` accessors so the runtime behavior is unchanged.
2026-05-25 12:45:53 -04:00
Jose Diaz-Gonzalez
961bbca6d8 Merge pull request #8677 from dokku/8670-nginx-warn-the-listen-http2-directive-is-deprecated
Warn on deprecated listen http2 in custom nginx templates
2026-05-25 11:53:23 -04:00
Jose Diaz-Gonzalez
955f0a8f6b chore: simplify warning message 2026-05-25 11:53:11 -04:00
Jose Diaz-Gonzalez
f960dc5856 feat: warn on deprecated listen http2 in custom nginx templates
nginx 1.25.1 deprecated the `listen ... http2` parameter in favor of a standalone `http2 on;` directive. Apps that ship a custom `nginx.conf.sigil` forked from an old default still hardcode `listen ... ssl http2;` and trigger `nginx: [warn]` lines from `nginx -t`. Surface a deprecation warning during `nginx_build_config` whenever the active template is app- or plugin-supplied and still contains the deprecated parameter, matching the existing warnings for `DOKKU_APP_LISTENERS`, `NGINX_SSL_PORT`, and `NGINX_PORT`, and point users at the `HTTP2_DIRECTIVE_SUPPORTED` variable already used by the default template.
2026-05-25 05:32:11 -04:00
Jose Diaz-Gonzalez
ff529543a9 Merge pull request #8676 from immanuwell/fix-shfmt-darwin-detection
Use SYSTEM for shfmt Darwin detection
2026-05-25 05:14:34 -04:00
immanuwell
cdb6c1c62e fix: use SYSTEM for shfmt Darwin detection 2026-05-25 12:51:23 +04:00
Jose Diaz-Gonzalez
6a01a4f731 Merge pull request #8672 from dokku/cron-command-injection-in-docker-local-scheduler
Prevent host shell injection from app.json cron commands
2026-05-25 03:50:43 -04:00
Jose Diaz-Gonzalez
ac95225809 fix: prevent host shell injection from app.json cron commands
The docker-local scheduler wrote each app.json cron command verbatim into the dokku user's crontab, where cron's `bash -c` interpreted any shell metacharacters in the command on the host as the dokku user rather than inside the container. The crontab line is now `dokku cron:run <app> <cron-id>`, and the command is resolved from app.json and exec'd inside the container at run time. Commands containing shell operators are also rejected when app.json is validated at deploy time.
2026-05-25 02:14:21 -04:00
Jose Diaz-Gonzalez
953b6e0a16 Merge pull request #8671 from dokku/fix-k3s-traefik
Qualify scheduler-k3s ingressroute kubectl lookups
2026-05-25 02:07:24 -04:00
Jose Diaz-Gonzalez
c3a30a8879 test: qualify scheduler-k3s ingressroute kubectl lookups
The Traefik 26.0.0 chart registers CRDs under both `traefik.containo.us` and `traefik.io`, so a bare `kubectl get ingressroute` resolves against the legacy group where no resources exist and returns NotFound. Querying `ingressroutes.traefik.io` targets the group Dokku's chart actually writes to.
2026-05-25 01:08:12 -04:00
Dokku Bot
75c0659dcf Release 0.38.6
# History

## 0.38.6

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.6/bootstrap.sh
sudo DOKKU_TAG=v0.38.6 bash bootstrap.sh
```

### Bug Fixes

- #8633: @Mordred Correctly redirect http traffic to https when using scheduler-k3s
- #8665: @josegonzalez Clarify byte-preserving behavior of config:set --encoded
- #8666: @josegonzalez Depend on cron | cron-daemon to allow alternatives
- #8638: @josegonzalez Support --global on cron:set

### Refactors

- #8668: @josegonzalez Hash scheduler-k3s cron-id label to fit Kubernetes' 63-byte cap
- #8664: @josegonzalez Convert filesystem migration markers to plugin properties

### Documentation

- #8645: @zenspider Removed outdated warning about dokku-update not being able to upgrade to specific versions.

### Tests

- #8667: @josegonzalez Rename logs:report vector key test and guard old keys
- #8662: @dependabot[bot] chore(deps): bump qs from 6.15.0 to 6.15.2 in /tests/apps/checks-root
- #8661: @dependabot[bot] chore(deps): bump sass from 1.99.0 to 1.100.0 in /tests/apps/multi
- #8658: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 288 to 290 in /tests/apps/php
- #8657: @dependabot[bot] chore(deps): bump slim/slim from 4.15.1 to 4.15.2 in /tests/apps/php
- #8654: @dependabot[bot] chore(deps): bump ruby from 4.0.4 to 4.0.5 in /tests/apps/dockerfile-entrypoint
- #8642: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.81.0 to 1.81.1 in /tests/apps/gogrpc

### Dependencies

- #8652: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.40.0 to 1.41.0 in /plugins/common
- #8663: @dokku-bot chore: bump herokuish to 0.11.13
- #8646: @dokku-bot chore: bump pack to 0.40.6
- #8659: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.51.0 to 0.52.0 in /plugins/common
- #8660: @dependabot[bot] chore(deps): bump click from 8.4.0 to 8.4.1 in /docs/_build
- #8655: @dependabot[bot] chore(deps): bump github.com/containerd/containerd from 1.7.30 to 1.7.32 in /plugins/scheduler-k3s
- #8651: @dependabot[bot] chore(deps): bump click from 8.3.3 to 8.4.0 in /docs/_build
- #8649: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.40.0 to 1.41.0 in /plugins/buildpacks
- #8650: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.40.0 to 1.41.0 in /plugins/config
- #8648: @dependabot[bot] chore(deps): bump zipp from 3.23.1 to 4.1.0 in /docs/_build
- #8644: @dokku-bot chore: bump pack to 0.40.5
- #8641: @dependabot[bot] chore(deps): bump traefik from v3.7.0 to v3.7.1 in /plugins/traefik-vhosts
- #8634: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.21.2 to 10.21.3 in /docs/_build

### Other

- #8640: @josegonzalez Split report global keys into raw and computed
2026-05-25 00:37:37 +00:00
Jose Diaz-Gonzalez
5cf86cb6a7 Merge pull request #8668 from dokku/8594-scheduler-k3s-cron-id-label-can-exceed-63-byte-kubernetes-limit 2026-05-24 20:35:54 -04:00
Jose Diaz-Gonzalez
51c9bd23da Merge pull request #8633 from Mordred/fix/scheduler-k3s-http-to-https 2026-05-24 18:07:28 -04:00
Jose Diaz-Gonzalez
bf2cfe1886 fix: hash scheduler-k3s cron-id label to fit Kubernetes' 63-byte cap
The `dokku.com/cron-id` label could exceed Kubernetes' 63-byte cap because the cron ID is `base36(appName === command === schedule)`, which expands roughly 1.5x per byte. The label is now keyed `dokku.com/cron-hash` and holds the `sha1` hex digest of the cron-id, a fixed 40-character value that always fits the cap. The same hex digest is mirrored into the `dokku.com/cron-hash` annotation, and the original base36 cron-id stays in the `dokku.com/cron-id` annotation that `cron:list` reads when surfacing user-facing IDs. Per-task lookups stay server-side via label selectors, so `cron:set --maintenance` and the forbid/replace concurrency checks on `dokku run --cron-id` keep working without any in-memory filtering.
2026-05-24 16:52:22 -04:00
Jose Diaz-Gonzalez
647af7bb0e test: cover scheduler-k3s http to https redirect edges
Adds four Go template tests for ingress-route.yaml covering the imported-cert secret name, multiple domains per IngressRoute, the non-traefik ingress_class guard, and the https port_map dedup when an http port_map already covers the same container port. Also adds a bats integration test that deploys a TLS-enabled app under traefik and asserts both IngressRoute manifests and live http-to-https redirect plus https serving.
2026-05-24 16:42:51 -04:00
Martin Jantošovič
caa60fa1ef fix: correctly redirect http traffic to https when using scheduler-k3s 2026-05-24 16:23:13 -04:00
Jose Diaz-Gonzalez
3c8cba08e5 chore: run shfmt 2026-05-24 16:06:02 -04:00
Jose Diaz-Gonzalez
ee3956478c Merge pull request #8665 from dokku/8647-dokku-config-set-encoded-adds-n-at-the-end-causing-invalid-env
Clarify byte-preserving behavior of config:set --encoded
2026-05-24 16:05:47 -04:00
Jose Diaz-Gonzalez
748b66f669 docs: clarify byte-preserving behavior of config:set --encoded
The canonical encode pipeline `echo "value" | base64` silently appends `\n` to the value, which round-trips through base64 and ends up stored in the env. Document that decoded values are stored byte-for-byte, recommend `printf '%s'` or `echo -n` for short inline values, and show `cat | base64 -w 0` for files. Adds a bats test asserting all four encoding patterns produce the expected stored bytes.

Closes #8647.
2026-05-24 15:39:28 -04:00
Jose Diaz-Gonzalez
0b567ff1b9 Merge pull request #8664 from dokku/8656-convert-filesystem-migration-markers-to-plugin-properties
Convert filesystem migration markers to plugin properties
2026-05-24 15:37:02 -04:00
Jose Diaz-Gonzalez
82fa8de766 Merge pull request #8667 from dokku/8632-logs-report-uses-inconsistent-key-naming-for-vector-image-and-vector-networks 2026-05-24 04:00:57 -04:00
Jose Diaz-Gonzalez
0758b2c738 Merge pull request #8666 from dokku/8643-debian-package-has-hard-dependency-on-cron 2026-05-24 04:00:23 -04:00
Jose Diaz-Gonzalez
0da6527ef6 test: rename logs:report vector key test and guard old keys
The asymmetric --logs-vector-global-image and --logs-vector-global-networks flags were renamed to --logs-global-vector-image and --logs-global-vector-networks in #8640 so they match the standard `--<plugin>-global-<property>` shape used by every other report. The bats description string at tests/unit/logs.bats:533 was still pinned to the old asymmetric phrasing, and there was no assertion that the deprecated JSON keys had actually been removed. Updates the test description to match its assertions and adds a regression guard that fails if logs-vector-global-image or logs-vector-global-networks ever reappear in the --global JSON report. Closes #8632.
2026-05-24 02:20:52 -04:00
Jose Diaz-Gonzalez
055f803f57 fix: depend on cron | cron-daemon to allow alternatives
The bare `cron` dependency caused `apt` to remove `dokku` whenever a user installed an alternative cron daemon such as `systemd-cron`. Listing the virtual `cron-daemon` package as an alternative keeps the default install behaviour (fresh installs still pull in `cron`) while letting any provider of `cron-daemon` satisfy the dependency, so swapping cron daemons no longer takes `dokku` with it.
2026-05-24 02:16:33 -04:00
Jose Diaz-Gonzalez
5286612618 fix: respond to pr comments 2026-05-24 01:40:39 -04:00
Jose Diaz-Gonzalez
b2320121fe refactor: convert filesystem migration markers to plugin properties
The docker-options DOCKER_OPTIONS_<PHASE>.migrated sentinels and the storage data/storage-registry/migrations/<app> flag files are now stored as per-app properties (`migrated-<phase>` and `legacy-mounts-migrated` respectively), so they survive a property-store backup/restore and align with the existing `migrated-from-files`, `env-migrated`, and `nginx-conf-sigil-migrated` patterns. The new markers are written only when a non-empty legacy source was actually migrated, distinguishing apps that never had legacy state from apps that did and were drained. A one-cycle upgrade-cycle conversion drains any leftover filesystem sentinels into the new properties and removes the files; for docker-options the conversion deliberately runs before the global `migrated-from-files` short-circuit so installs upgrading from the previous release still get their `.migrated` files converted.
2026-05-23 23:47:58 -04:00
Jose Diaz-Gonzalez
5df399273a Merge pull request #8640 from dokku/8631-caddy-haproxy-traefik-report-global-lacks-raw-key-for-global-properties
Split report global keys into raw and computed
2026-05-23 22:54:23 -04:00
Jose Diaz-Gonzalez
8742f688e3 docs: add settable properties tables to plugin docs
Renames the existing `## Internal properties` umbrella section to `## Properties` across all plugin docs and adds a new `### Settable properties` subsection enumerating every property accepted by each plugin's `:set` command. Each row lists scope, default, the actual `:report` flag shapes that surface the value, and a one-line description. The buildpacks plugin is included even though it uses `:set-property`, with a note in the subsection clarifying the legacy command name. Property lists, scopes, and report flags were verified against plugin source and the live dokku binary.
2026-05-23 22:45:20 -04:00
Jose Diaz-Gonzalez
3d3c95545c test: assert empty raw vector-image and existent computed vector-image
After the report rename made --logs-global-vector-image return the raw
stored value (empty when unset) and split --logs-computed-vector-image
out as the default-resolved key, the (logs:report)
vector-global-image and vector-global-networks raw test still pinned
assert_output_exists on the raw key in the unset state. The raw key is
correctly empty after dokku logs:set --global vector-image runs, and
the bundled vector image default is exposed via the computed key now.
2026-05-23 17:55:15 -04:00
Jose Diaz-Gonzalez
052ba1fcfc docs: split multi-flag internal property table rows
The internal-properties tables on builds.md (8 --build-* flags),
ssl.md (8 --ssl-* flags), and process-management.md (4 ps flags) each
crammed all the flags into a single comma-separated table row with one
umbrella description. Splits each into a row per flag with a specific
description and the actual code-path source (the build record write
path, the openssl x509 parse target, the ps inspection helper).
2026-05-23 16:30:10 -04:00
Jose Diaz-Gonzalez
6f178afcb6 test: align logs.bats with renamed global-vector-* report keys
The previous commit renamed --logs-vector-global-image and
--logs-vector-global-networks to --logs-global-vector-image and
--logs-global-vector-networks, and added --logs-computed-vector-image,
--logs-computed-vector-networks, and --logs-computed-vector-sink. The
logs.bats per-app Invalid-flag listing was still pinned to the old
10-flag set and the vector-global JSON keys and CLI flags still used
the old names, so the (logs) logs:report app, (logs:report)
vector-global-image and vector-global-networks raw, and (logs)
logs:set --global vector-networks tests failed - the latter cascaded
because the failing assertion ran before its vector-image cleanup.
Updates the per-app Invalid-flag string to the 13-flag sorted listing,
renames every stale jq key and CLI flag reference, adds a parallel
(logs) logs:report --global invalid flag test covering the 10-flag
global-scope listing, and adds dokku logs:set --global vector-image
to teardown so a future failing test doesn't leak the property.
2026-05-23 16:23:35 -04:00
Jose Diaz-Gonzalez
e795ec97b9 Merge pull request #8652 from dokku/dependabot/go_modules/plugins/common/github.com/onsi/gomega-1.41.0
chore(deps): bump github.com/onsi/gomega from 1.40.0 to 1.41.0 in /plugins/common
2026-05-23 16:17:26 -04:00
Jose Diaz-Gonzalez
35d249bb60 Merge pull request #8663 from dokku/chore/bump-herokuish-0.11.13
chore: bump herokuish to 0.11.13
2026-05-23 16:17:10 -04:00
Jose Diaz-Gonzalez
357e12bd83 refactor: rename computed-* helpers, expose computed vector and network keys
Addresses review feedback on #8640. fn-archive-max-size,
fn-archive-max-files, fn-git-deploy-branch, and fn-git-keep-git-dir are
renamed with `computed` in the function name so the names match the
resolved-with-default semantic they implement, and every caller is
updated in lockstep. logs:report renames the misordered
--logs-vector-global-image and --logs-vector-global-networks to
--logs-global-vector-image and --logs-global-vector-networks, makes the
global getters return the raw stored value, and adds
--logs-computed-vector-image, --logs-computed-vector-networks, and
--logs-computed-vector-sink. network:report --global gains the
computed-* keys for attach-post-create, attach-post-deploy,
initial-network, and tld so external tooling can read the resolved
value at global scope. The --quiet flag is dropped from every
:report --format json | jq invocation across the PR's bats files; the
report's --format json output is the only stdout and the flag is
redundant.
2026-05-23 04:47:03 -04:00
Jose Diaz-Gonzalez
e70f7918a3 fix: nginx-vhosts globalValue returns raw global for timeout properties
The nginx-property binary's globalValue() switch returned ComputedX for
client-body-timeout, client-header-timeout, keepalive-timeout, and
lingering-timeout, leaking the per-app value into nginx:report's
global-<prop> key. Other properties in the same switch already call
GlobalX. Aligns the four with the rest. Also tightens
tests/unit/nginx-vhosts_properties.bats so the helper preserves values
containing whitespace or literal \$ across the inner /bin/bash -c, and
switches proxy-keepalive to integer values since the set subcommand
validates it via is_number.
2026-05-23 03:04:36 -04:00
Dokku Bot
4e8206501e chore: bump herokuish to 0.11.13 2026-05-23 06:56:43 +00:00
Jose Diaz-Gonzalez
82d1f8e11c test: align triplet tests with actual plugin behavior
Fixes CI failures from the prior commit's bats additions.
storage report mounts are prefixed with `-v `, logs.bats setup does not
auto-create the test app, the nginx-vhosts shell report emits JSON keys
without the `nginx-` plugin prefix, registry computed-image-repo falls
back to the default `dokku/<app>` repo name when no template is set,
cron computed-maintenance follows OR-not-override semantics so a per-app
`false` does not override a global `true`, the scheduler subcommand
help string is `Manage scheduler settings`, and bringing ps procfile-path
into the #8640 raw convention required updating the pre-existing
`(ps:set) procfile` assertion. Also extends fn-git-keep-git-dir to fall
back through the global property before the built-in default so global
keep-git-dir actually takes effect at deploy time.
2026-05-23 01:35:04 -04:00
Jose Diaz-Gonzalez
9163f0d0a6 chore: bump go modules 2026-05-23 00:07:07 -04:00
dependabot[bot]
9378100bed chore(deps): bump github.com/onsi/gomega in /plugins/common
Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.40.0 to 1.41.0.
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/gomega/compare/v1.40.0...v1.41.0)

---
updated-dependencies:
- dependency-name: github.com/onsi/gomega
  dependency-version: 1.41.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-23 00:06:56 -04:00
Jose Diaz-Gonzalez
cdcf1fc669 test: backfill raw/global/computed report triplet coverage across plugins
The bats coverage for plugin :report keys has been uneven since the raw/global/computed split landed in PR #8640. This commit adds a single combined triplet test per settable property across app-json, builder, builder-dockerfile, builder-herokuish, builder-lambda, builder-nixpacks, builder-pack, builder-railpack, buildpacks, cron (maintenance), git (keep-git-dir, rev-env-var, source-image), logs (vector-sink, vector-global-image, vector-global-networks), network (attach-post-create, attach-post-deploy, initial-network), proxy (per-app type), ps (stop-timeout-seconds), registry (image-repo, push-on-release, push-extra-tags), storage (build/deploy/run mounts), and adds a new tests/unit/scheduler.bats and tests/unit/nginx-vhosts_properties.bats. Brings ps `procfile-path` and `stop-timeout-seconds` global getters in line with the #8640 convention (raw global, default resolved in computed). Documents the read-only and internal properties that surface in `:report` (or are written by Dokku) but cannot be managed by `:set` in a new `## Internal properties` section appended to each affected plugin's docs page.
2026-05-23 00:05:33 -04:00
Jose Diaz-Gonzalez
2bdf7b59c9 test: align report key assertions with raw and computed split
The caddy and haproxy bats suites referenced `refute_output`, which is not provided by the in-tree test_helper, so the steps failed with `command not found`. The traefik `api-entry-point property` test and the logs `logs:set global` test still queried the removed bare `--traefik-api-entry-point` flag and the pre-split `--logs-global-max-size` default respectively. The assertions now use `assert_output_exists`, the `--traefik-computed-` flag, and the raw/computed key pair for `logs:set --global max-size`.
2026-05-23 00:05:33 -04:00
Jose Diaz-Gonzalez
76b033234f fix: split report global keys into raw and computed across plugins
The `<plugin>-global-<property>` keys in `:report` output returned the resolved value with the built-in default substituted in, so external tooling could not distinguish a property that had been set globally to the default from one that had never been set. The bare keys for caddy, haproxy, and traefik global-only properties had the same shape. The `global-<property>` keys now hold the raw stored value and are empty when nothing has been set, and a new `computed-<property>` key holds the effective value used at runtime, falling back through the per-app value (where one exists), the global value, and the built-in default. The bare global-only keys for the three proxy plugins are removed in favor of the raw/computed pair. Closes #8631.
2026-05-23 00:05:33 -04:00
Jose Diaz-Gonzalez
f3bdd7e4ec Merge pull request #8646 from dokku/chore/bump-pack-0.40.6
chore: bump pack to 0.40.6
2026-05-23 00:01:57 -04:00
Jose Diaz-Gonzalez
3e7f9fdf5b Merge pull request #8662 from dokku/dependabot/npm_and_yarn/tests/apps/checks-root/qs-6.15.2
chore(deps): bump qs from 6.15.0 to 6.15.2 in /tests/apps/checks-root
2026-05-23 00:01:42 -04:00
Jose Diaz-Gonzalez
0acdce85d9 Merge pull request #8659 from dokku/dependabot/go_modules/plugins/common/golang.org/x/crypto-0.52.0
chore(deps): bump golang.org/x/crypto from 0.51.0 to 0.52.0 in /plugins/common
2026-05-22 22:39:28 -04:00
Jose Diaz-Gonzalez
c49e4d2f25 chore: bump go modules 2026-05-22 20:04:56 -04:00
dependabot[bot]
a56a4b96e9 chore(deps): bump golang.org/x/crypto in /plugins/common
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.51.0 to 0.52.0.
- [Commits](https://github.com/golang/crypto/compare/v0.51.0...v0.52.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.52.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-22 19:35:02 -04:00
dependabot[bot]
691fd4bed2 chore(deps): bump qs from 6.15.0 to 6.15.2 in /tests/apps/checks-root
Bumps [qs](https://github.com/ljharb/qs) from 6.15.0 to 6.15.2.
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.15.0...v6.15.2)

---
updated-dependencies:
- dependency-name: qs
  dependency-version: 6.15.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-22 23:34:10 +00:00
Jose Diaz-Gonzalez
54c94a8b17 Merge pull request #8661 from dokku/dependabot/npm_and_yarn/tests/apps/multi/sass-1.100.0
chore(deps): bump sass from 1.99.0 to 1.100.0 in /tests/apps/multi
2026-05-22 19:33:53 -04:00
Jose Diaz-Gonzalez
8b24336369 Merge pull request #8660 from dokku/dependabot/pip/docs/_build/click-8.4.1
chore(deps): bump click from 8.4.0 to 8.4.1 in /docs/_build
2026-05-22 19:33:47 -04:00
Jose Diaz-Gonzalez
5b3fc362a0 Merge pull request #8658 from dokku/dependabot/composer/tests/apps/php/heroku/heroku-buildpack-php-290
chore(deps-dev): bump heroku/heroku-buildpack-php from 288 to 290 in /tests/apps/php
2026-05-22 19:33:38 -04:00
Jose Diaz-Gonzalez
d52c4e45f4 Merge pull request #8657 from dokku/dependabot/composer/tests/apps/php/slim/slim-4.15.2
chore(deps): bump slim/slim from 4.15.1 to 4.15.2 in /tests/apps/php
2026-05-22 19:33:04 -04:00
dependabot[bot]
ac4e332960 chore(deps): bump sass from 1.99.0 to 1.100.0 in /tests/apps/multi
Bumps [sass](https://github.com/sass/dart-sass) from 1.99.0 to 1.100.0.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.99.0...1.100.0)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.100.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-22 13:56:23 +00:00
dependabot[bot]
f86ed14668 chore(deps): bump click from 8.4.0 to 8.4.1 in /docs/_build
Bumps [click](https://github.com/pallets/click) from 8.4.0 to 8.4.1.
- [Release notes](https://github.com/pallets/click/releases)
- [Changelog](https://github.com/pallets/click/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/click/compare/8.4.0...8.4.1)

---
updated-dependencies:
- dependency-name: click
  dependency-version: 8.4.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-22 13:55:56 +00:00
dependabot[bot]
d4832baf88 chore(deps-dev): bump heroku/heroku-buildpack-php in /tests/apps/php
Bumps [heroku/heroku-buildpack-php](https://github.com/heroku/heroku-buildpack-php) from 288 to 290.
- [Release notes](https://github.com/heroku/heroku-buildpack-php/releases)
- [Changelog](https://github.com/heroku/heroku-buildpack-php/blob/main/CHANGELOG.md)
- [Commits](https://github.com/heroku/heroku-buildpack-php/compare/v288...v290)

---
updated-dependencies:
- dependency-name: heroku/heroku-buildpack-php
  dependency-version: '290'
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-22 13:54:41 +00:00
dependabot[bot]
54907559b0 chore(deps): bump slim/slim from 4.15.1 to 4.15.2 in /tests/apps/php
Bumps [slim/slim](https://github.com/slimphp/Slim) from 4.15.1 to 4.15.2.
- [Release notes](https://github.com/slimphp/Slim/releases)
- [Changelog](https://github.com/slimphp/Slim/blob/4.x/CHANGELOG.md)
- [Commits](https://github.com/slimphp/Slim/compare/4.15.1...4.15.2)

---
updated-dependencies:
- dependency-name: slim/slim
  dependency-version: 4.15.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-22 13:54:34 +00:00
Dokku Bot
ca4bf93f24 chore: bump pack to 0.40.6 2026-05-22 07:14:57 +00:00
Jose Diaz-Gonzalez
f9ac9cc13c Merge pull request #8655 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/containerd/containerd-1.7.32
chore(deps): bump github.com/containerd/containerd from 1.7.30 to 1.7.32 in /plugins/scheduler-k3s
2026-05-21 22:29:15 -04:00
Jose Diaz-Gonzalez
11115c4b94 Merge pull request #8654 from dokku/dependabot/docker/tests/apps/dockerfile-entrypoint/ruby-4.0.5
chore(deps): bump ruby from 4.0.4 to 4.0.5 in /tests/apps/dockerfile-entrypoint
2026-05-21 22:29:08 -04:00
Jose Diaz-Gonzalez
ee1b6d1fef Merge pull request #8651 from dokku/dependabot/pip/docs/_build/click-8.4.0
chore(deps): bump click from 8.3.3 to 8.4.0 in /docs/_build
2026-05-21 22:28:32 -04:00
Jose Diaz-Gonzalez
b31a8ddb19 Merge pull request #8649 from dokku/dependabot/go_modules/plugins/buildpacks/github.com/onsi/gomega-1.41.0
chore(deps): bump github.com/onsi/gomega from 1.40.0 to 1.41.0 in /plugins/buildpacks
2026-05-21 22:28:24 -04:00
Jose Diaz-Gonzalez
a8bc49a1c3 Merge pull request #8650 from dokku/dependabot/go_modules/plugins/config/github.com/onsi/gomega-1.41.0
chore(deps): bump github.com/onsi/gomega from 1.40.0 to 1.41.0 in /plugins/config
2026-05-21 22:28:17 -04:00
Jose Diaz-Gonzalez
1708276aff Merge pull request #8648 from dokku/dependabot/pip/docs/_build/zipp-4.1.0
chore(deps): bump zipp from 3.23.1 to 4.1.0 in /docs/_build
2026-05-21 22:28:04 -04:00
Jose Diaz-Gonzalez
a147017e43 Merge pull request #8645 from zenspider/zenspider__doco_fix
Removed outdated warning about dokku-update not being able to upgrade to specific versions.
2026-05-21 22:27:38 -04:00
dependabot[bot]
c41e81e008 chore(deps): bump github.com/containerd/containerd
Bumps [github.com/containerd/containerd](https://github.com/containerd/containerd) from 1.7.30 to 1.7.32.
- [Release notes](https://github.com/containerd/containerd/releases)
- [Changelog](https://github.com/containerd/containerd/blob/main/RELEASES.md)
- [Commits](https://github.com/containerd/containerd/compare/v1.7.30...v1.7.32)

---
updated-dependencies:
- dependency-name: github.com/containerd/containerd
  dependency-version: 1.7.32
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-21 21:52:49 +00:00
dependabot[bot]
a531cf1ab7 chore(deps): bump ruby in /tests/apps/dockerfile-entrypoint
Bumps ruby from 4.0.4 to 4.0.5.

---
updated-dependencies:
- dependency-name: ruby
  dependency-version: 4.0.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-21 15:05:31 +00:00
dependabot[bot]
0042fc3265 chore(deps): bump click from 8.3.3 to 8.4.0 in /docs/_build
Bumps [click](https://github.com/pallets/click) from 8.3.3 to 8.4.0.
- [Release notes](https://github.com/pallets/click/releases)
- [Changelog](https://github.com/pallets/click/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/click/compare/8.3.3...8.4.0)

---
updated-dependencies:
- dependency-name: click
  dependency-version: 8.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-18 23:38:05 +00:00
dependabot[bot]
af5421adf0 chore(deps): bump github.com/onsi/gomega in /plugins/buildpacks
Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.40.0 to 1.41.0.
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/gomega/compare/v1.40.0...v1.41.0)

---
updated-dependencies:
- dependency-name: github.com/onsi/gomega
  dependency-version: 1.41.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-18 23:38:03 +00:00
dependabot[bot]
104f36b408 chore(deps): bump github.com/onsi/gomega in /plugins/config
Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.40.0 to 1.41.0.
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/gomega/compare/v1.40.0...v1.41.0)

---
updated-dependencies:
- dependency-name: github.com/onsi/gomega
  dependency-version: 1.41.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-18 23:38:03 +00:00
dependabot[bot]
b0ced77d1e chore(deps): bump zipp from 3.23.1 to 4.1.0 in /docs/_build
Bumps [zipp](https://github.com/jaraco/zipp) from 3.23.1 to 4.1.0.
- [Release notes](https://github.com/jaraco/zipp/releases)
- [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/zipp/compare/v3.23.1...v4.1.0)

---
updated-dependencies:
- dependency-name: zipp
  dependency-version: 4.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-18 23:38:00 +00:00
Ryan Davis
f7f31a5c8a Removed outdated warning about dokku-update not being able to upgrade to specific versions. 2026-05-16 14:35:56 -07:00
Jose Diaz-Gonzalez
55753a822b Merge pull request #8644 from dokku/chore/bump-pack-0.40.5
chore: bump pack to 0.40.5
2026-05-16 14:09:12 -04:00
Jose Diaz-Gonzalez
c1c5afdcbe Merge pull request #8642 from dokku/dependabot/go_modules/tests/apps/gogrpc/google.golang.org/grpc-1.81.1
chore(deps): bump google.golang.org/grpc from 1.81.0 to 1.81.1 in /tests/apps/gogrpc
2026-05-16 14:09:02 -04:00
Dokku Bot
0ac7c6d8d7 chore: bump pack to 0.40.5 2026-05-16 06:48:16 +00:00
dependabot[bot]
336c351d87 chore(deps): bump google.golang.org/grpc in /tests/apps/gogrpc
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.81.0 to 1.81.1.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.81.0...v1.81.1)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.81.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-15 13:52:29 +00:00
Jose Diaz-Gonzalez
447b7d1e9c Merge pull request #8641 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-v3.7.1
chore(deps): bump traefik from v3.7.0 to v3.7.1 in /plugins/traefik-vhosts
2026-05-14 14:11:49 -04:00
dependabot[bot]
c61c7354d5 chore(deps): bump traefik in /plugins/traefik-vhosts
Bumps traefik from v3.7.0 to v3.7.1.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: v3.7.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-14 13:54:36 +00:00
Jose Diaz-Gonzalez
ca5e8201fc Merge pull request #8638 from dokku/8637-cron-set-lacks-global-flag-in-dokku-0-38-x
Support --global on cron:set
2026-05-13 16:11:58 -04:00
Jose Diaz-Gonzalez
4001f318a6 fix: support --global on cron:set
`cron:set --global` wrote the property but emitted `unknown flag: --global` because the post-set `scheduler-cron-write` trigger received `--global` as the appName arg, which pflag rejected before reaching the trigger body.

The trigger args now omit appName for global writes, and the `scheduler-k3s` cron-write trigger short-circuits when called without an app since per-app reconciliation requires a real app name. The docker-local trigger already regenerates the global crontab from all apps so global `mailfrom`/`mailto` are picked up without any further changes.
2026-05-13 12:37:14 -04:00
Jose Diaz-Gonzalez
fee155a0a6 Merge pull request #8634 from dokku/dependabot/pip/docs/_build/pymdown-extensions-10.21.3
chore(deps): bump pymdown-extensions from 10.21.2 to 10.21.3 in /docs/_build
2026-05-13 11:08:38 -04:00
dependabot[bot]
536349990e chore(deps): bump pymdown-extensions in /docs/_build
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.21.2 to 10.21.3.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.21.2...10.21.3)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-version: 10.21.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-13 14:08:42 +00:00
Dokku Bot
f6439d3641 Release 0.38.5
# History

## 0.38.5

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.5/bootstrap.sh
sudo DOKKU_TAG=v0.38.5 bash bootstrap.sh
```

### Bug Fixes

- #8627: @josegonzalez Preserve explicit https:443 port mappings on cert update

### New Features

- #8629: @josegonzalez Attach vector container to additional docker networks
- #8624: @josegonzalez Expose certs-set and certs-remove plugin triggers
- #8626: @josegonzalez Split caddy report tls-internal into raw, computed, and global

### Tests

- #8620: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 287 to 288 in /tests/apps/php
- #8621: @dependabot[bot] chore(deps): bump ruby from 4.0.3 to 4.0.4 in /tests/apps/dockerfile-entrypoint

### Dependencies

- #8622: @dependabot[bot] chore(deps): bump k8s.io/kubernetes from 1.36.0 to 1.36.1 in /plugins/scheduler-k3s
2026-05-13 04:40:12 +00:00
Jose Diaz-Gonzalez
3544bdd308 Merge pull request #8629 from dokku/8628-logs-support-attaching-the-vector-container-to-additional-docker-networks
Attach vector container to additional docker networks
2026-05-13 00:38:49 -04:00
Jose Diaz-Gonzalez
6cb5d472e5 Merge pull request #8624 from dokku/8623-expose-certs-add-and-certs-remove-to-plugins-via-triggers-or-sourceable-functions
Expose certs-set and certs-remove plugin triggers
2026-05-13 00:09:47 -04:00
Jose Diaz-Gonzalez
a4e6d06fd1 fix: reject app-level vector-networks and vector-image, drop bridge from joined nets
The Docker daemon refuses any endpoint settings on the default bridge network and `docker compose` unconditionally attaches the service name as an alias on every joined network, so combining bridge with user-defined networks via compose's `networks:` block is impossible. When `vector-networks` is set, the compose template now joins only the configured networks; outbound to external sinks still works through user-defined network NAT. Additionally, `vector-image` and `vector-networks` are both global-only but `common.CommandPropertySet` silently accepts them at app level by merging global-only keys into the valid-property set, so both now reject explicitly in `validateSetValue`.
2026-05-12 23:45:10 -04:00
Jose Diaz-Gonzalez
b4e3d85024 test: route run_plugn_trigger through dokku plugin:trigger
The dokku entrypoint already exports DOKKU_ROOT, PLUGIN_PATH, PLUGIN_AVAILABLE_PATH, PLUGIN_ENABLED_PATH, PLUGIN_CORE_AVAILABLE_PATH and DOKKU_LIB_ROOT before invoking plugn. Delegating to `dokku plugin:trigger` keeps the helper at env-var parity with the production trigger path without enumerating every var the helper must forward.
2026-05-12 22:36:47 -04:00
Jose Diaz-Gonzalez
282b2df71a test: forward DOKKU_ROOT from run_plugn_trigger
Triggers that call verify_app_name or otherwise reference $DOKKU_ROOT fail under bats because the helper did not forward DOKKU_ROOT to the plugn subshell. The production dokku entrypoint exports DOKKU_ROOT before invoking plugn, so bring the helper to env-var parity.
2026-05-12 22:30:49 -04:00
Jose Diaz-Gonzalez
d00a7d741a feat: attach vector container to additional docker networks
Adds a new global `vector-networks` property on the logs plugin that takes a comma-separated list of Docker networks. When set, the rendered compose file declares each network plus `bridge` as external and joins them on the vector service, so `docker compose up` reconciles attachments on every `logs:vector-start`. When unset, the existing `network_mode: bridge` template is preserved unchanged. The value is validated against `docker network inspect` at set time, rejects the reserved `bridge` entry, and is surfaced in `dokku logs:report` via `--logs-vector-global-networks`.
2026-05-12 22:05:50 -04:00
Jose Diaz-Gonzalez
a9b2f56ee8 test: forward PLUGIN_AVAILABLE_PATH and PLUGIN_ENABLED_PATH from run_plugn_trigger
The dokku entrypoint exports both vars before invoking plugn, so triggers that source `$PLUGIN_AVAILABLE_PATH/...` work in production. The helper only forwarded PLUGIN_PATH / PLUGIN_CORE_AVAILABLE_PATH / DOKKU_LIB_ROOT, so triggers that follow the same pattern fail under bats.
2026-05-12 21:31:58 -04:00
Jose Diaz-Gonzalez
b096d0f131 Merge pull request #8627 from dokku/8619-certs-add-rewrites-explicit-https-443-port-mappings
Preserve explicit https:443 port mappings on cert update
2026-05-12 21:29:47 -04:00
Jose Diaz-Gonzalez
f6448cef2c Merge pull request #8626 from dokku/8625-caddy-report-tls-internal-has-no-raw-vs-computed-key-separation
Split caddy report tls-internal into raw, computed, and global
2026-05-12 20:34:18 -04:00
Jose Diaz-Gonzalez
2b963884b4 test: invoke certs trigger tests via run_plugn_trigger helper
The new certs-set / certs-remove tests called plugn directly via /bin/bash -c, which exits with 'PLUGIN_PATH is not set in environment' under the bats runner. Route the calls through the existing run_plugn_trigger helper so the required PLUGIN_PATH / PLUGIN_CORE_AVAILABLE_PATH / DOKKU_LIB_ROOT vars are set.
2026-05-12 20:21:07 -04:00
Jose Diaz-Gonzalez
cecd07d914 fix: preserve explicit https:443 port mappings on cert update
The ports plugin's `post-certs-update` trigger was rewriting every `https:443:*` mapping from the app's `http:80:*` mappings, silently overwriting any user-defined mapping such as `https:443:443` used by apps that terminate TLS inside the container. The trigger now skips the rewrite when an `https:443:*` mapping already exists, keeping the default behavior only when the app has no explicit HTTPS mapping configured.

Closes #8619.
2026-05-12 19:02:47 -04:00
Jose Diaz-Gonzalez
436825b782 feat: split caddy report tls-internal into raw, computed, and global
The bare `tls-internal` key previously returned the computed value, so external tooling could not tell whether the property had been set on the app or was merely defaulting to `false`. The property is now also configurable with `--global`, the report exposes `computed-tls-internal` and `global-tls-internal` keys alongside the bare raw key, and the deploy path honors the per-app value with a fallback to the global value before the built-in default. Closes #8625.
2026-05-12 18:54:26 -04:00
Jose Diaz-Gonzalez
460d92e21c feat: expose certs-set and certs-remove plugin triggers
Adds `certs-set` and `certs-remove` plugin triggers so other plugins can install or remove an app's SSL cert/key pair without shelling out to the `dokku certs:add` / `dokku certs:remove` subcommands. Shared implementations live as `fn-certs-set` and `fn-certs-remove` in `plugins/certs/internal-functions`, with the subcommands and the new triggers calling `verify_app_name` before delegating.
2026-05-12 18:37:06 -04:00
Jose Diaz-Gonzalez
12c00b57fc Merge pull request #8620 from dokku/dependabot/composer/tests/apps/php/heroku/heroku-buildpack-php-288
chore(deps-dev): bump heroku/heroku-buildpack-php from 287 to 288 in /tests/apps/php
2026-05-12 18:13:53 -04:00
Jose Diaz-Gonzalez
db74bd4b5e Merge pull request #8621 from dokku/dependabot/docker/tests/apps/dockerfile-entrypoint/ruby-4.0.4
chore(deps): bump ruby from 4.0.3 to 4.0.4 in /tests/apps/dockerfile-entrypoint
2026-05-12 18:13:45 -04:00
Jose Diaz-Gonzalez
5c12d7733d Merge pull request #8622 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/kubernetes-1.36.1
chore(deps): bump k8s.io/kubernetes from 1.36.0 to 1.36.1 in /plugins/scheduler-k3s
2026-05-12 18:13:33 -04:00
dependabot[bot]
ef36fe0a53 chore(deps): bump k8s.io/kubernetes in /plugins/scheduler-k3s
Bumps [k8s.io/kubernetes](https://github.com/kubernetes/kubernetes) from 1.36.0 to 1.36.1.
- [Release notes](https://github.com/kubernetes/kubernetes/releases)
- [Commits](https://github.com/kubernetes/kubernetes/compare/v1.36.0...v1.36.1)

---
updated-dependencies:
- dependency-name: k8s.io/kubernetes
  dependency-version: 1.36.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-12 19:50:09 +00:00
dependabot[bot]
fce9cf8bc7 chore(deps): bump ruby in /tests/apps/dockerfile-entrypoint
Bumps ruby from 4.0.3 to 4.0.4.

---
updated-dependencies:
- dependency-name: ruby
  dependency-version: 4.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-12 19:48:15 +00:00
dependabot[bot]
71fd53d2e1 chore(deps-dev): bump heroku/heroku-buildpack-php in /tests/apps/php
Bumps [heroku/heroku-buildpack-php](https://github.com/heroku/heroku-buildpack-php) from 287 to 288.
- [Release notes](https://github.com/heroku/heroku-buildpack-php/releases)
- [Changelog](https://github.com/heroku/heroku-buildpack-php/blob/main/CHANGELOG.md)
- [Commits](https://github.com/heroku/heroku-buildpack-php/compare/v287...v288)

---
updated-dependencies:
- dependency-name: heroku/heroku-buildpack-php
  dependency-version: '288'
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-12 19:47:16 +00:00
Dokku Bot
ada4a82d77 Release 0.38.4
# History

## 0.38.4

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.4/bootstrap.sh
sudo DOKKU_TAG=v0.38.4 bash bootstrap.sh
```

### Bug Fixes

- #8615: @josegonzalez Reject per-app sets for openresty global-only properties
- #8613: @josegonzalez Expose raw deploy-branch and keep-git-dir in git:report
- #8549: @josegonzalez Route CNB images through launcher on scheduler-k3s

### New Features

- #8614: @josegonzalez Split scheduler-docker-local report into raw, computed, and global

### Documentation

- #8603: @cheif Add `dokku-http-oauth` to community plugins

### Tests

- #8618: @josegonzalez Isolate scheduler-k3s registry tags per bats file
- #8616: @josegonzalez Migrate from junit_files to files in EnricoMi/publish-unit-test-result-action
- #8617: @josegonzalez Upgrade actions in shared build-image compose action
- #8609: @josegonzalez Skip packer lint job on dependabot PRs
- #8604: @dependabot[bot] chore(deps): bump python from 3.14.3-bookworm to 3.15.0b1-bookworm in /tests/apps/dockerfile-release

### Dependencies

- #8606: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.50.0 to 0.51.0 in /plugins/common
- #8608: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.11.45 to 2.11.46 in /plugins/scheduler-k3s
- #8607: @dependabot[bot] chore(deps): bump dokku/openresty-docker-proxy from 0.10.0 to 0.11.0 in /plugins/openresty-vhosts
- #8605: @dependabot[bot] chore(deps): bump python from 3.14.3-alpine to 3.15.0b1-alpine in /docs/_build
2026-05-12 17:40:42 +00:00
Jose Diaz-Gonzalez
b8b0b527b0 Merge pull request #8618 from dokku/fix-k3s-exec
Isolate scheduler-k3s registry tags per bats file
2026-05-12 13:28:03 -04:00
Jose Diaz-Gonzalez
b30eb48444 test: isolate scheduler-k3s registry tags per bats file
Parallel `unit.scheduler-k3s-*` matrix jobs all pushed to the same `savant/rdmtestapp:1` tag on Docker Hub, so a herokuish run pod could pull a CNB or dockerfile image that another job had just overwritten and fail with `exec: "/exec": stat /exec: no such file or directory`. The image-repo-template now embeds the bats file basename so each job owns its own tag namespace.
2026-05-12 11:43:58 -04:00
Jose Diaz-Gonzalez
b32fb47e48 Merge pull request #8616 from dokku/josegonzalez-patch-1
Migrate from junit_files to files in EnricoMi/publish-unit-test-result-action
2026-05-12 11:24:11 -04:00
Jose Diaz-Gonzalez
e4695dc99a Merge pull request #8617 from dokku/josegonzalez-patch-2
Upgrade actions in shared build-image compose action
2026-05-12 10:57:54 -04:00
Jose Diaz-Gonzalez
7898f98488 Merge pull request #8615 from dokku/8612-openresty-set-accepts-per-app-writes-for-global-only-properties-silently-follow-up-to-8597
Reject per-app sets for openresty global-only properties
2026-05-12 01:34:57 -04:00
Jose Diaz-Gonzalez
3a36de7349 Merge pull request #8614 from dokku/8611-scheduler-docker-local-report-raw-computed-keys
Split scheduler-docker-local report into raw, computed, and global
2026-05-12 01:29:59 -04:00
Jose Diaz-Gonzalez
4551f258b2 Merge pull request #8613 from dokku/8610-git-report-deploy-branch-keep-git-dir-return-computed-value-at-bare-key-no-raw-per-app-key
Expose raw deploy-branch and keep-git-dir in git:report
2026-05-12 01:29:43 -04:00
Jose Diaz-Gonzalez
162af06c80 chore: upgrade actions in shared build-image compose action 2026-05-12 00:28:17 -04:00
Jose Diaz-Gonzalez
da52b8133d fix: migrate from junit_files to files in EnricoMi/publish-unit-test-result-action 2026-05-12 00:27:04 -04:00
Jose Diaz-Gonzalez
bc6f2da13a Merge pull request #8606 from dokku/dependabot/go_modules/plugins/common/golang.org/x/crypto-0.51.0
chore(deps): bump golang.org/x/crypto from 0.50.0 to 0.51.0 in /plugins/common
2026-05-11 23:31:04 -04:00
Jose Diaz-Gonzalez
ebdd5f2b2f fix: reject per-app sets for openresty global-only properties
`openresty:set <app>` previously accepted per-app writes for properties whose readers only consult the global store, so `:set myapp image foo` printed a success message while `:report myapp` kept showing the global default. The per-app form is now rejected with `The key '<key>' can only be set globally`, matching the behavior introduced for `caddy`, `haproxy`, and `traefik` in #8602.
2026-05-11 22:55:37 -04:00
Jose Diaz-Gonzalez
7d73cf78c4 feat: split scheduler-docker-local report into raw, computed, and global
The bare `init-process` and `parallel-schedule-count` keys previously returned the computed value, so external tooling could not tell whether a property had been set on the app or was merely defaulting. Both properties are now also configurable with `--global`, the report exposes `computed-*` and `global-*` keys alongside the bare raw keys, and the deploy path honors the global value before falling back to the linuxserver.io vendor heuristic.
2026-05-11 22:29:28 -04:00
Jose Diaz-Gonzalez
c45b95fc4d fix: expose raw deploy-branch and keep-git-dir in git:report
The bare `deploy-branch` and `keep-git-dir` keys in `git:report` returned the computed (effective) value rather than the raw per-app value, with no separate `computed-*` key to distinguish "set per-app" from "falling back to global or default". This left external tooling unable to detect a per-app unset without out-of-band state. The bare keys now hold the raw per-app value (empty when unset) and new `computed-deploy-branch` and `computed-keep-git-dir` keys hold the effective value, matching the convention used by `nginx-vhosts`, `network`, and `builder`. Closes #8610.
2026-05-11 22:18:17 -04:00
Jose Diaz-Gonzalez
db2cbd802f Merge pull request #8549 from dokku/8526-improve-scheduler-k3s-support-for-alternative-builders-cnb-etc
Route CNB images through launcher on scheduler-k3s
2026-05-11 22:01:07 -04:00
Jose Diaz-Gonzalez
22f1fcdc1f chore: bump go modules 2026-05-11 21:29:58 -04:00
dependabot[bot]
c2f927cd50 chore(deps): bump golang.org/x/crypto in /plugins/common
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.50.0 to 0.51.0.
- [Commits](https://github.com/golang/crypto/compare/v0.50.0...v0.51.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.51.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-11 21:29:11 -04:00
Jose Diaz-Gonzalez
541464b9c8 Merge pull request #8609 from dokku/skip-packer-lint-on-dependabot
ci: skip packer lint job on dependabot PRs
2026-05-11 21:28:39 -04:00
Jose Diaz-Gonzalez
993d727dcb ci: skip packer lint job on dependabot PRs
Dependabot PRs don't receive `secrets.DIGITALOCEAN_TOKEN`, so the `packer validate` step fails on every dependency bump. Guarding the job by PR author skips it cleanly while keeping it active for human PRs and pushes to `master`.
2026-05-11 21:27:10 -04:00
Jose Diaz-Gonzalez
228b6de482 Merge pull request #8608 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/traefik/traefik/v2-2.11.46
chore(deps): bump github.com/traefik/traefik/v2 from 2.11.45 to 2.11.46 in /plugins/scheduler-k3s
2026-05-11 21:17:15 -04:00
Jose Diaz-Gonzalez
bdc77c9706 Merge pull request #8607 from dokku/dependabot/docker/plugins/openresty-vhosts/dokku/openresty-docker-proxy-0.11.0
chore(deps): bump dokku/openresty-docker-proxy from 0.10.0 to 0.11.0 in /plugins/openresty-vhosts
2026-05-11 21:17:10 -04:00
Jose Diaz-Gonzalez
90e5903760 Merge pull request #8605 from dokku/dependabot/docker/docs/_build/python-3.15.0b1-alpine
chore(deps): bump python from 3.14.3-alpine to 3.15.0b1-alpine in /docs/_build
2026-05-11 21:16:10 -04:00
Jose Diaz-Gonzalez
d121eb982c Merge pull request #8604 from dokku/dependabot/docker/tests/apps/dockerfile-release/python-3.15.0b1-bookworm
chore(deps): bump python from 3.14.3-bookworm to 3.15.0b1-bookworm in /tests/apps/dockerfile-release
2026-05-11 21:16:03 -04:00
dependabot[bot]
2796733119 chore(deps): bump github.com/traefik/traefik/v2
Bumps [github.com/traefik/traefik/v2](https://github.com/traefik/traefik) from 2.11.45 to 2.11.46.
- [Release notes](https://github.com/traefik/traefik/releases)
- [Changelog](https://github.com/traefik/traefik/blob/v2.11.46/CHANGELOG.md)
- [Commits](https://github.com/traefik/traefik/compare/v2.11.45...v2.11.46)

---
updated-dependencies:
- dependency-name: github.com/traefik/traefik/v2
  dependency-version: 2.11.46
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-11 21:43:14 +00:00
dependabot[bot]
af614cd049 chore(deps): bump dokku/openresty-docker-proxy
Bumps dokku/openresty-docker-proxy from 0.10.0 to 0.11.0.

---
updated-dependencies:
- dependency-name: dokku/openresty-docker-proxy
  dependency-version: 0.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-11 21:42:13 +00:00
dependabot[bot]
194bfc6f12 chore(deps): bump python in /docs/_build
Bumps python from 3.14.3-alpine to 3.15.0b1-alpine.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.15.0b1-alpine
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-11 21:40:35 +00:00
dependabot[bot]
95b97defb7 chore(deps): bump python in /tests/apps/dockerfile-release
Bumps python from 3.14.3-bookworm to 3.15.0b1-bookworm.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.15.0b1-bookworm
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-11 21:40:34 +00:00
Jose Diaz-Gonzalez
b66df28d96 fix: harden scheduler-k3s cron manifests and dockerfile run startup
The cron-id label could exceed Kubernetes' 63-byte cap when commands or
schedules were long, and an all-digit job-suffix or cron-id rendered as
an unquoted YAML scalar caused the API server to reject manifests. Run
pods built from dockerfiles also occasionally hit the 10s startup wait
on a cold image pull, even though the pod was scheduled correctly.

The cron-id is now stored as an annotation and a shorter hash is used as
the selector label. Every interpolated annotation and label value in the
cron-job and deployment templates is now quoted to prevent numeric
coercion, and the run-pod wait timeout is raised to 30 seconds.
2026-05-11 14:49:58 -04:00
Jose Diaz-Gonzalez
d0588698f5 test: add scheduler-k3s run parity tests across builders
Extends bats coverage for the scheduler-k3s scheduler so that
herokuish and dockerfile builders match the cnb test surface for
`dokku run`, `dokku run:detached`, `dokku cron:run`, deployment
manifests, cronjob manifests, and Procfile-key resolution. Adds
the corresponding `app-cron-procfile.json` fixture for the python
app and `app-cron.json` / `app-cron-procfile.json` fixtures for
the dockerfile-procfile app.
2026-05-11 12:10:54 -04:00
Jose Diaz-Gonzalez
41afd7646e Merge pull request #8603 from cheif/feat/add-oauth-auth-plugin
Add `dokku-http-oauth` to community plugins
2026-05-11 11:46:44 -04:00
Dokku Bot
029e98673f Release 0.38.3
# History

## 0.38.3

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.3/bootstrap.sh
sudo DOKKU_TAG=v0.38.3 bash bootstrap.sh
```

### Bug Fixes

- #8602: @josegonzalez Reject per-app sets for global-only proxy properties
- #8601: @josegonzalez Rename app-json:report flags to match property
- #8600: @josegonzalez Report info-flag should not error when app undeployed

### New Features

- #8599: @josegonzalez Add docker healthcheck to dokku container
2026-05-11 08:04:48 +00:00
Dan Berglund
eb8316d3a8 Add dokku-http-oauth to community plugins 2026-05-11 08:49:17 +02:00
Jose Diaz-Gonzalez
f1e2f41bd9 fix: wait for terminal pod phase on scheduler-k3s run
After streaming logs from a run pod on scheduler-k3s, the apiserver may still report `PodRunning` for a short window due to kubelet status propagation lag, causing `dokku run` to fail with `Unable to attach as the pod is in an unknown state: Running`. Wait briefly for the pod to reach a terminal phase before classifying the outcome.
2026-05-11 02:38:20 -04:00
Jose Diaz-Gonzalez
59c1bef87b fix: stream logs for non-tty dokku run on scheduler-k3s
For short-lived commands the run pod can transition Running to Succeeded
between the running-pod check and the kubectl exec SPDY upgrade, leaving
the upgrade to fail with `container not found`. When stdout is not a TTY
(and DOKKU_FORCE_TTY is not set) the exec attach is only being used to
capture stdout, so stream the run pod logs in follow mode instead. The
pod's `TTLSecondsAfterFinished` of 60s keeps the kubelet's log file
readable for the duration of the call, eliminating the race.
2026-05-11 02:05:56 -04:00
Jose Diaz-Gonzalez
ff1296859b test: stabilize scheduler-k3s cnb bats tests
Drop the assertion that the web deployment has no command since the python buildpack auto-emits a web Procfile entry, which correctly routes through launcher just like docker-local. Shorten the cron command fixture so the base36-encoded cron-id stays under the 63-byte kubernetes label limit, and relax the `dokku run` and `dokku cron:run` output assertions to `assert_output_contains` so they tolerate the leading blank line emitted on k3s.
2026-05-11 02:05:56 -04:00
Jose Diaz-Gonzalez
3a845f4d14 fix: route CNB images through launcher on scheduler-k3s
Mirror the docker-local fix in #8525 for the k3s scheduler. CNB images default to a `/cnb/process/web` entrypoint that ignores incoming args, so non-web deployments, scheduled cron jobs, and ad-hoc `dokku run` / `cron:run` commands all need an explicit `launcher` entrypoint. The deployment and cron-job helm templates now set `command: [launcher]` when `image.type` is `pack`, and `TriggerSchedulerRun` sets the entrypoint to `launcher` for pack images while finishing the previously stubbed Procfile lookup branch so the resolved command is actually scheduled.
2026-05-11 02:05:56 -04:00
Jose Diaz-Gonzalez
3ddce21aef Merge pull request #8602 from dokku/8597-caddy-haproxy-traefik-accept-per-app-set-but-report-only-returns-global-value 2026-05-11 01:04:14 -04:00
Jose Diaz-Gonzalez
cdce68f8a2 Merge pull request #8601 from dokku/8598-app-json-set-appjson-path-succeeds-but-app-json-appjson-path-is-not-a-valid-report-flag
Rename app-json:report flags to match property
2026-05-10 23:58:05 -04:00
Jose Diaz-Gonzalez
74dc94bad2 Merge pull request #8599 from dokku/dokku-container-healthcheck
Add docker healthcheck to dokku container
2026-05-10 23:50:29 -04:00
Jose Diaz-Gonzalez
9123d14f3c Merge pull request #8600 from dokku/8596-report-subcommand-errors-with-not-deployed-when-probing-config-properties-before-deploy
Report info-flag should not error when app undeployed
2026-05-10 23:49:56 -04:00
Jose Diaz-Gonzalez
66eb1340f5 fix: install nginx catch-all default site in dokku container
Pre-seeds the `dokku/install_default_site` debconf answer to `true` so the dokku postinst installs `/etc/nginx/conf.d/00-default-vhost.conf` during image build. Without this, debconf returned an empty value in non-interactive docker builds, the postinst's `setup-default-site` short-circuited, and nginx had no listener on port 80 - which left the readiness sentinel untouched and the container stuck unhealthy.
2026-05-10 22:54:49 -04:00
Jose Diaz-Gonzalez
822b7dddcd fix: reject per-app sets for global-only proxy properties
`caddy:set`, `haproxy:set`, and `traefik:set` previously accepted per-app writes for properties that only have a single host-wide reader, so `:set myapp image foo:bar` printed a success message while `:report myapp` kept showing the global default. The per-app form is now rejected with `The key '<key>' can only be set globally`, matching the existing rejection used for haproxy `refresh-conf` and traefik `challenge-mode`. Caddy `tls-internal` remains the only legitimate per-app property in this family.
2026-05-10 22:42:57 -04:00
Jose Diaz-Gonzalez
4eee229bbc fix: rename app-json:report flags to match property
The property name set via `app-json:set` is `appjson-path`, but the matching read-back flags on `app-json:report` were named `--app-json-selected`, `--app-json-global-selected`, and `--app-json-computed-selected`. The mismatch meant `dokku app-json:report <app> --app-json-appjson-path` (the form already documented in deployment-tasks.md) was rejected as an invalid flag, and the `--format json` output advertised keys that did not correspond to any settable property. The flags and JSON keys are renamed to `--app-json-appjson-path`, `--app-json-global-appjson-path`, and `--app-json-computed-appjson-path` so that the property name round-trips through set and report.
2026-05-10 22:32:16 -04:00
Jose Diaz-Gonzalez
7b515ea129 refactor: drop unused value_exists from report functions
The `value_exists` variable in the report info-flag loop is no longer read after the `not deployed` failure was removed, and was already unused in domains, haproxy-vhosts, traefik-vhosts, caddy-vhosts, and openresty-vhosts. Drop the declaration and the trailing assignment so the loop reads cleanly across all plugins.
2026-05-10 22:23:46 -04:00
Jose Diaz-Gonzalez
bd748052a1 fix: report info-flag should not error when app undeployed
Several plugin `:report` subcommands erroneously failed with `not deployed` when an info-flag matched a property that was empty. Empty values are legitimate for configuration properties pre-deploy and the `--format json` path already returns them without error. Remove the `value_exists` check across nginx, checks, git, certs, scheduler-docker-local, and the builder-* plugins so the info-flag form behaves consistently with the JSON form.
2026-05-10 22:15:27 -04:00
Jose Diaz-Gonzalez
2c274217de chore: run shfmt 2026-05-10 21:42:35 -04:00
Jose Diaz-Gonzalez
2a4393a63a test: cover dokku container healthcheck wiring
Adds a bats lint test that guards the static wiring (nginx conf, dokku-restore finish-script ordering, my_init sentinel reset, and the Dockerfile HEALTHCHECK line) plus a docker smoke test that boots the built image, waits for the health flip, exercises the loopback endpoint, asserts the port is not published to the host, and verifies the negative path. The smoke test is invoked via a new `make test-image-healthcheck` target and runs automatically in the build-image action after `docker buildx --load`.
2026-05-10 21:39:43 -04:00
Jose Diaz-Gonzalez
cc0843391f feat: add docker healthcheck to dokku container
The official dokku/dokku image gains a HEALTHCHECK directive backed by a loopback-only HTTP endpoint at `127.0.0.1:18080/_dokku/health`. The endpoint reports 200 once first-boot bootstrap finishes, sshd and nginx are accepting connections, and `dokku ps:restore` completes; otherwise it returns 503. Changes are scoped to the Docker overlay and Dockerfile so debian-package installs are unaffected.
2026-05-10 21:17:09 -04:00
Dokku Bot
a553f04966 Release 0.38.2
# History

## 0.38.2

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.2/bootstrap.sh
sudo DOKKU_TAG=v0.38.2 bash bootstrap.sh
```

### Security

- #8590: @josegonzalez Restrict app names to prevent command injection
- #8591: @josegonzalez Harden archive extraction against symlink traversal
- #8589: @josegonzalez Enforce 0600 permissions on .netrc credentials file
- #8588: @josegonzalez Sanitize openresty include filenames to prevent eval injection

### Bug Fixes

- #8593: @josegonzalez Gate ssl_reject_handshake behind nginx 1.19.4
- #8578: @josegonzalez Reference SOURCECODE_WORK_DIR in builder core-post-extract

### Documentation

- #8592: @josegonzalez Add security section to release changelog
- #8587: @vixalien Correct buildkit builder code block syntax
- #8580: @othercorey Set issue type in bug report template

### Tests

- #8586: @josegonzalez Count assert_output_contains matches as fixed strings
- #8581: @dependabot[bot] chore(deps): bump golang from 1.26.2 to 1.26.3 in /tests/apps/go-fail-predeploy
- #8582: @dependabot[bot] chore(deps): bump golang from 1.26.2 to 1.26.3 in /tests/apps/gogrpc
- #8584: @dependabot[bot] chore(deps): bump golang from 1.26.2 to 1.26.3 in /tests/apps/go-fail-postdeploy
- #8583: @dependabot[bot] chore(deps): bump golang from 1.26.2 to 1.26.3 in /tests/apps/zombies-dockerfile-tini
- #8585: @dependabot[bot] chore(deps): bump golang from 1.26.2 to 1.26.3 in /tests/apps/zombies-dockerfile-no-tini
- #8574: @dependabot[bot] chore(deps): bump node from 25-alpine to 26-alpine in /tests/apps/dockerfile-noexpose
- #8575: @dependabot[bot] chore(deps): bump node from 25-alpine to 26-alpine in /tests/apps/dockerfile-procfile-bad
- #8577: @dependabot[bot] chore(deps): bump node from 25-alpine to 26-alpine in /tests/apps/dockerfile-app-json-formations
- #8576: @dependabot[bot] chore(deps): bump node from 25-alpine to 26-alpine in /tests/apps/dockerfile
- #8573: @dependabot[bot] chore(deps): bump node from 25-alpine to 26-alpine in /tests/apps/dockerfile-procfile

### Dependencies

- #8579: @josegonzalez Use type prefix for dokku-bot dependency label
2026-05-10 20:17:51 +00:00
Jose Diaz-Gonzalez
9adf6e5f36 Merge pull request #8593 from dokku/fix-debian-bullseye-ssl-reject-handshake 2026-05-10 16:16:16 -04:00
Jose Diaz-Gonzalez
235078f111 Merge pull request #8590 from dokku/command-injection-via-app-name 2026-05-10 15:29:35 -04:00
Jose Diaz-Gonzalez
392ac73d33 fix: gate ssl_reject_handshake behind nginx 1.19.4
The shipped catch-all default site uses `ssl_reject_handshake`, which is unsupported on nginx older than 1.19.4 and causes nginx to fail to start on Debian Bullseye. The postinst now detects the installed nginx version and installs an HTTP-only variant of the catch-all on older systems.
2026-05-09 16:32:30 -04:00
Jose Diaz-Gonzalez
4f4fed7101 test: update apps:rename assertions for quoted git-hook app name
The security fix that quoted `$APP` inside the pre-receive hook heredoc changed the literal hook contents from `dokku git-hook foo` to `dokku git-hook "foo"`, so the existing substring assertions no longer match.
2026-05-09 16:06:27 -04:00
Jose Diaz-Gonzalez
dbac12e9f1 refactor: route bash app name validation through go
The bash and go validators previously each kept their own copy of the regex, which had to be updated in lockstep. Both bash wrappers now invoke the existing common binary via the same pattern as `verify_app_name`, leaving go as the single source of truth. The legacy `IsValidAppNameOld` rule is also widened to allow underscores again so apps created under the old naming rules can still be looked up through `VerifyAppName`'s either-rule fallback.
2026-05-09 16:00:51 -04:00
Jose Diaz-Gonzalez
93f87a0f07 fix: restrict app names to prevent command injection
The previous app name validation regex permitted shell metacharacters such as `;`, `$`, backticks, `|`, and `&`. These names were embedded unquoted into the generated git pre-receive hook script, allowing an authenticated user to execute arbitrary commands as the dokku user simply by pushing to a remote with a crafted app name. App names are now restricted to lowercase alphanumerics, dots, and hyphens, and the hook script also quotes the app variable as a defense-in-depth measure.
2026-05-09 16:00:51 -04:00
Jose Diaz-Gonzalez
d00aaf3ff3 Merge pull request #8586 from dokku/assert-output-contains
Count assert_output_contains matches as fixed strings
2026-05-09 16:00:27 -04:00
Jose Diaz-Gonzalez
e78d3bcc78 Merge pull request #8591 from dokku/arbitrary-file-write
Harden archive extraction against symlink traversal
2026-05-09 15:58:31 -04:00
Jose Diaz-Gonzalez
33dd8005dd Merge pull request #8589 from dokku/netrc-permissions 2026-05-09 15:36:10 -04:00
Jose Diaz-Gonzalez
90aa64e7e3 Merge pull request #8588 from dokku/sanitize-openresty-filenames 2026-05-09 15:36:01 -04:00
Jose Diaz-Gonzalez
f4213a4bf5 tests: prevent assert_output_contains from aborting on no match
Bats runs tests under `set -eo pipefail`, so when `grep -F -o` finds nothing inside the count pipe it exits 1, the whole pipe fails, errexit fires, and the function aborts before reaching the count comparison. Wrap grep in `{ ... || true; }` so the pipe stays zero when the pattern is absent and the helper falls through to the flunk message.
2026-05-09 13:36:29 -04:00
Jose Diaz-Gonzalez
253d47ecf5 Merge pull request #8592 from dokku/security-section
Add security section to release changelog
2026-05-09 13:27:34 -04:00
Jose Diaz-Gonzalez
0b93488006 feat: add security section to release changelog 2026-05-09 13:19:33 -04:00
Jose Diaz-Gonzalez
9decf16ea1 feat: configure archive limits via git properties
Replaces the `DOKKU_ARCHIVE_MAX_SIZE` and `DOKKU_ARCHIVE_MAX_FILES` environment variables with global git properties (`archive-max-size` and `archive-max-files`), configurable via `dokku git:set --global` and surfaced through `dokku git:report --global`. Defaults remain `1073741824` bytes and `10000` entries.
2026-05-09 13:08:23 -04:00
Jose Diaz-Gonzalez
2df0791fcd fix: prevent tar symlink traversal in archive extraction
Archives passed to git:from-archive and certs:add were extracted without symlink or path validation, allowing a crafted archive to write arbitrary files anywhere writable by the dokku user via symlink traversal. Extraction now pre-scans entries for absolute paths, parent traversal, and unsafe symlinks, applies the GNU tar `--no-unsafe-links` flag when available, and validates symlinks after extraction.
2026-05-09 12:54:42 -04:00
Jose Diaz-Gonzalez
6eb8b8632c fix: enforce 0600 permissions on .netrc credentials file
The previous use of `touch` before `netrc set` allowed the file to inherit the umask and be world-readable, exposing stored git credentials to local users. The set and unset paths now explicitly chmod 0600 and chown to the dokku user, and the plugin install hook repairs permissions on already-affected installations.
2026-05-09 12:22:17 -04:00
Jose Diaz-Gonzalez
a70728f61e fix: sanitize openresty include filenames to prevent eval injection
Add defense-in-depth sanitization for OpenResty include files to prevent
OS command injection via malicious filenames that break shell quoting in eval.

- Add filename validation in core-post-extract using regex [^a-zA-Z0-9_.-]
- Validate both http-includes and location-includes paths
- Abort deploy via dokku_log_fail on unsafe filenames
- Skip non-regular files (symlinks, directories) during extraction
- Add security regression test with unsafe filename containing space
- Keep existing guards in docker-args-process-deploy as belt-and-suspenders
- Update documentation to clarify allowed filename characters

Addresses CVSS 9.9 vulnerability where filenames like poc'$(cmd)'x.conf
could escape shell quoting and execute arbitrary commands during deploy.
2026-05-09 12:20:50 -04:00
Jose Diaz-Gonzalez
25abd38387 tests: use /bin/bash -c to execute commands in init tests 2026-05-09 10:48:29 -04:00
Jose Diaz-Gonzalez
2974830e8f Merge pull request #8587 from vixalien/patch-1
Correct buildkit builder code block syntax
2026-05-09 10:45:42 -04:00
Angelo Verlain
2c3f29daca fox: correct buildkit builder code block syntax 2026-05-09 04:07:01 +02:00
Jose Diaz-Gonzalez
38de83eabf tests: use inverted assert
Also echo the status
2026-05-08 21:39:57 -04:00
Jose Diaz-Gonzalez
01268ebad9 tests: fix count 2026-05-08 21:38:22 -04:00
Jose Diaz-Gonzalez
2cf2846c6b test: count assert_output_contains matches as fixed strings
Replace the bash pattern-substitution loop with grep -F -o piped to wc -l so the helper counts literal substring occurrences instead of treating the expected value as a glob pattern. The old implementation interpreted `[`, `]`, `*`, `?`, and `\` as pattern syntax, which made `assert_output_contains "['task.py', 'test']"` report 17 matches against an output that contained the string exactly once - the inner characters were being matched as a character class. assert_output_not_contains delegates to assert_output_contains and is fixed transitively.
2026-05-08 18:56:33 -04:00
Jose Diaz-Gonzalez
47c8141148 Merge pull request #8578 from dokku/8566-core-post-extract-in-four-builder-plugins-fails-under-bash-5-3
Reference SOURCECODE_WORK_DIR in builder core-post-extract
2026-05-08 17:06:10 -04:00
Jose Diaz-Gonzalez
b8f94dfa7f Merge pull request #8581 from dokku/dependabot/docker/tests/apps/go-fail-predeploy/golang-1.26.3
chore(deps): bump golang from 1.26.2 to 1.26.3 in /tests/apps/go-fail-predeploy
2026-05-08 17:00:05 -04:00
Jose Diaz-Gonzalez
4efe0eb9fd Merge pull request #8582 from dokku/dependabot/docker/tests/apps/gogrpc/golang-1.26.3
chore(deps): bump golang from 1.26.2 to 1.26.3 in /tests/apps/gogrpc
2026-05-08 16:59:53 -04:00
Jose Diaz-Gonzalez
a6cfe3a2d1 Merge pull request #8584 from dokku/dependabot/docker/tests/apps/go-fail-postdeploy/golang-1.26.3
chore(deps): bump golang from 1.26.2 to 1.26.3 in /tests/apps/go-fail-postdeploy
2026-05-08 16:31:33 -04:00
Jose Diaz-Gonzalez
390fe2b35a Merge pull request #8583 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-tini/golang-1.26.3
chore(deps): bump golang from 1.26.2 to 1.26.3 in /tests/apps/zombies-dockerfile-tini
2026-05-08 16:28:33 -04:00
Jose Diaz-Gonzalez
a5ee710496 Merge pull request #8585 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-no-tini/golang-1.26.3
chore(deps): bump golang from 1.26.2 to 1.26.3 in /tests/apps/zombies-dockerfile-no-tini
2026-05-08 16:28:25 -04:00
dependabot[bot]
1706729cfe chore(deps): bump golang in /tests/apps/zombies-dockerfile-no-tini
Bumps golang from 1.26.2 to 1.26.3.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-08 13:53:22 +00:00
dependabot[bot]
51dc7799d0 chore(deps): bump golang in /tests/apps/go-fail-postdeploy
Bumps golang from 1.26.2 to 1.26.3.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-08 13:53:11 +00:00
dependabot[bot]
07d301775e chore(deps): bump golang in /tests/apps/zombies-dockerfile-tini
Bumps golang from 1.26.2 to 1.26.3.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-08 13:53:10 +00:00
dependabot[bot]
0619338607 chore(deps): bump golang from 1.26.2 to 1.26.3 in /tests/apps/gogrpc
Bumps golang from 1.26.2 to 1.26.3.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-08 13:53:04 +00:00
dependabot[bot]
902b7f6af4 chore(deps): bump golang in /tests/apps/go-fail-predeploy
Bumps golang from 1.26.2 to 1.26.3.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-08 13:53:03 +00:00
Jose Diaz-Gonzalez
25f87164ce Merge pull request #8574 from dokku/dependabot/docker/tests/apps/dockerfile-noexpose/node-26-alpine
chore(deps): bump node from 25-alpine to 26-alpine in /tests/apps/dockerfile-noexpose
2026-05-08 01:35:18 -04:00
Jose Diaz-Gonzalez
67ce12b973 Merge pull request #8575 from dokku/dependabot/docker/tests/apps/dockerfile-procfile-bad/node-26-alpine
chore(deps): bump node from 25-alpine to 26-alpine in /tests/apps/dockerfile-procfile-bad
2026-05-08 01:35:10 -04:00
Jose Diaz-Gonzalez
5d212f3195 test: use BATS_TEST_TMPDIR in core-post-extract regression tests
The previous form set `trap "rm -rf '$TMP_DIR'" RETURN` inside the test, but bats propagates `RETURN` traps to nested function calls, so the trap fired on the first `assert_success` and removed the work directory before the trigger script ran. Switching to bats's per-test `BATS_TEST_TMPDIR` removes the trap entirely and lets bats handle cleanup.
2026-05-08 01:34:05 -04:00
Jose Diaz-Gonzalez
05ffccd7e7 Merge pull request #8577 from dokku/dependabot/docker/tests/apps/dockerfile-app-json-formations/node-26-alpine
chore(deps): bump node from 25-alpine to 26-alpine in /tests/apps/dockerfile-app-json-formations
2026-05-07 15:46:32 -04:00
Jose Diaz-Gonzalez
5dfda450d9 Merge pull request #8576 from dokku/dependabot/docker/tests/apps/dockerfile/node-26-alpine
chore(deps): bump node from 25-alpine to 26-alpine in /tests/apps/dockerfile
2026-05-07 15:28:44 -04:00
Jose Diaz-Gonzalez
a7119ba693 Merge pull request #8573 from dokku/dependabot/docker/tests/apps/dockerfile-procfile/node-26-alpine
chore(deps): bump node from 25-alpine to 26-alpine in /tests/apps/dockerfile-procfile
2026-05-07 15:28:24 -04:00
Jose Diaz-Gonzalez
870b93c8e3 Merge pull request #8580 from othercorey/patch-1
Set issue type in bug report template
2026-05-07 15:28:07 -04:00
othercorey
48594ca0a4 Set issue type in bug report template 2026-05-07 14:18:30 -05:00
Jose Diaz-Gonzalez
5e279074fd Merge pull request #8579 from dokku/dokku-bot-dependency-patching
Use type prefix for dokku-bot dependency label
2026-05-07 14:41:44 -04:00
Jose Diaz-Gonzalez
5f0c5a5a4f chore: use type prefix for dokku-bot dependency label 2026-05-07 14:39:06 -04:00
Dokku Bot
983c462904 Release 0.38.1
# History

## 0.38.1

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.1/bootstrap.sh
sudo DOKKU_TAG=v0.38.1 bash bootstrap.sh
```

### Bug Fixes

- #8563: @josegonzalez Source property-functions where fn-plugin-property-* helpers are used
- #8559: @josegonzalez Install cnb pack from github releases instead of ppa
- #8558: @josegonzalez Chown migrated legacy storage entries to dokku
- #8545: @josegonzalez Deflake haproxy bats tests

### Refactors

- #8546: @josegonzalez Consolidate nginx.conf.sigil server blocks

### Documentation

- #8548: @josegonzalez Use explicit type property in proxy:set examples
- #8547: @josegonzalez Document plugin properties migrated from env vars
- #8544: @josegonzalez Fix reference to when the build plugin was introduced

### Tests

- #8565: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.80.0 to 1.81.0 in /tests/apps/gogrpc
- #8568: @dependabot[bot] chore(deps): bump gunicorn from 25.3.0 to 26.0.0 in /tests/apps/multi
- #8572: @dependabot[bot] chore(deps): bump django from 5.2.13 to 5.2.14 in /tests/apps/dockerfile-release
- #8570: @dependabot[bot] chore(deps): bump gunicorn from 25.3.0 to 26.0.0 in /tests/apps/dockerfile-release
- #8567: @dependabot[bot] chore(deps): bump gunicorn from 25.3.0 to 26.0.0 in /tests/apps/python-flask

### Dependencies

- #8571: @dependabot[bot] chore(deps): bump traefik from v3.6.15 to v3.7.0 in /plugins/traefik-vhosts
- #8569: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.11.44 to 2.11.45 in /plugins/scheduler-k3s
- #8561: @dokku-bot chore: bump pack to 0.40.4
- #8555: @dependabot[bot] chore(deps): bump github.com/mattn/go-isatty from 0.0.20 to 0.0.22 in /plugins/app-json
- #8556: @dependabot[bot] chore(deps): bump github.com/Masterminds/semver/v3 from 3.4.0 to 3.5.0 in /plugins/scheduler-k3s
- #8550: @dokku-bot chore: bump docker-container-healthchecker to 0.15.2
- #8553: @dokku-bot chore: bump dokku-event-listener to 0.19.1
- #8552: @dokku-bot chore: bump lambda-builder to 0.9.3
- #8551: @dokku-bot chore: bump procfile-util to 0.20.7
- #8554: @dependabot[bot] chore(deps): bump peter-evans/create-pull-request from 7 to 8
2026-05-07 17:29:53 +00:00
Jose Diaz-Gonzalez
bc8adfa6e2 test: add run_plugn_trigger and run_plugin_script bats helpers
Both helpers wrap `run /bin/bash -c "..."` with the env vars dokku plugin scripts and `plugn` need, replacing the long inline boilerplate that was duplicated across `tests/unit/resource_3.bats` and the new `core-post-extract` regression tests in the builder bats files.
2026-05-07 12:47:00 -04:00
Jose Diaz-Gonzalez
eb17a383c6 fix: reference SOURCECODE_WORK_DIR in builder core-post-extract
The builder-dockerfile, builder-lambda, builder-nixpacks, builder-pack and builder-railpack `core-post-extract` triggers assigned `$2` to a local `SOURCECODE_WORK_DIR` but called `pushd "$TMP_WORK_DIR"`, which was unset. Bash 5.2 silently accepted `pushd ""`, so the bug stayed dormant. Bash 5.3 (shipped with Ubuntu 26.04) makes it a hard error and `set -e` aborts the trigger, causing every `git push` to fail with `pushd: null directory`.
2026-05-07 12:39:46 -04:00
Jose Diaz-Gonzalez
368a6999c9 Merge pull request #8565 from dokku/dependabot/go_modules/tests/apps/gogrpc/google.golang.org/grpc-1.81.0
chore(deps): bump google.golang.org/grpc from 1.80.0 to 1.81.0 in /tests/apps/gogrpc
2026-05-07 10:37:25 -04:00
dependabot[bot]
1e7df47feb chore(deps): bump node in /tests/apps/dockerfile-app-json-formations
Bumps node from 25-alpine to 26-alpine.

---
updated-dependencies:
- dependency-name: node
  dependency-version: 26-alpine
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-07 13:55:48 +00:00
dependabot[bot]
39f15930a0 chore(deps): bump node in /tests/apps/dockerfile
Bumps node from 25-alpine to 26-alpine.

---
updated-dependencies:
- dependency-name: node
  dependency-version: 26-alpine
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-07 13:55:42 +00:00
dependabot[bot]
a8fd9122fe chore(deps): bump node in /tests/apps/dockerfile-procfile-bad
Bumps node from 25-alpine to 26-alpine.

---
updated-dependencies:
- dependency-name: node
  dependency-version: 26-alpine
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-07 13:55:38 +00:00
dependabot[bot]
09ee789849 chore(deps): bump node in /tests/apps/dockerfile-noexpose
Bumps node from 25-alpine to 26-alpine.

---
updated-dependencies:
- dependency-name: node
  dependency-version: 26-alpine
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-07 13:55:36 +00:00
dependabot[bot]
117a9b43f9 chore(deps): bump node in /tests/apps/dockerfile-procfile
Bumps node from 25-alpine to 26-alpine.

---
updated-dependencies:
- dependency-name: node
  dependency-version: 26-alpine
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-07 13:55:35 +00:00
Jose Diaz-Gonzalez
2d9521a855 Merge pull request #8568 from dokku/dependabot/pip/tests/apps/multi/gunicorn-26.0.0 2026-05-07 07:55:41 -04:00
Jose Diaz-Gonzalez
0429ecfd98 Merge pull request #8572 from dokku/dependabot/pip/tests/apps/dockerfile-release/django-5.2.14
chore(deps): bump django from 5.2.13 to 5.2.14 in /tests/apps/dockerfile-release
2026-05-07 07:09:01 -04:00
Jose Diaz-Gonzalez
c676a09bd5 Merge pull request #8571 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-v3.7.0
chore(deps): bump traefik from v3.6.15 to v3.7.0 in /plugins/traefik-vhosts
2026-05-07 07:08:53 -04:00
Jose Diaz-Gonzalez
dc6a3690d9 Merge pull request #8570 from dokku/dependabot/pip/tests/apps/dockerfile-release/gunicorn-26.0.0
chore(deps): bump gunicorn from 25.3.0 to 26.0.0 in /tests/apps/dockerfile-release
2026-05-07 07:08:48 -04:00
Jose Diaz-Gonzalez
c2c02e174c Merge pull request #8569 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/traefik/traefik/v2-2.11.45
chore(deps): bump github.com/traefik/traefik/v2 from 2.11.44 to 2.11.45 in /plugins/scheduler-k3s
2026-05-07 07:08:40 -04:00
Jose Diaz-Gonzalez
d4ce0b987b Merge pull request #8567 from dokku/dependabot/pip/tests/apps/python-flask/gunicorn-26.0.0
chore(deps): bump gunicorn from 25.3.0 to 26.0.0 in /tests/apps/python-flask
2026-05-07 07:08:25 -04:00
dependabot[bot]
097b3c5449 chore(deps): bump django in /tests/apps/dockerfile-release
Bumps [django](https://github.com/django/django) from 5.2.13 to 5.2.14.
- [Commits](https://github.com/django/django/compare/5.2.13...5.2.14)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 5.2.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-06 13:56:02 +00:00
dependabot[bot]
494c42428f chore(deps): bump traefik in /plugins/traefik-vhosts
Bumps traefik from v3.6.15 to v3.7.0.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: v3.7.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-06 13:55:24 +00:00
dependabot[bot]
5e092caef3 chore(deps): bump gunicorn in /tests/apps/dockerfile-release
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 25.3.0 to 26.0.0.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/25.3.0...26.0.0)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-version: 26.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-05 13:55:32 +00:00
dependabot[bot]
d573054731 chore(deps): bump github.com/traefik/traefik/v2
Bumps [github.com/traefik/traefik/v2](https://github.com/traefik/traefik) from 2.11.44 to 2.11.45.
- [Release notes](https://github.com/traefik/traefik/releases)
- [Changelog](https://github.com/traefik/traefik/blob/v2.11.45/CHANGELOG.md)
- [Commits](https://github.com/traefik/traefik/compare/v2.11.44...v2.11.45)

---
updated-dependencies:
- dependency-name: github.com/traefik/traefik/v2
  dependency-version: 2.11.45
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-05 13:55:27 +00:00
dependabot[bot]
f8813232d8 chore(deps): bump gunicorn from 25.3.0 to 26.0.0 in /tests/apps/multi
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 25.3.0 to 26.0.0.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/25.3.0...26.0.0)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-version: 26.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-05 13:52:52 +00:00
dependabot[bot]
824aed042f chore(deps): bump gunicorn in /tests/apps/python-flask
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 25.3.0 to 26.0.0.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/25.3.0...26.0.0)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-version: 26.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-05 13:52:23 +00:00
Jose Diaz-Gonzalez
5d7c683daa Merge pull request #8563 from dokku/8560-fn-plugin-property-get-default-command-not-found
Source property-functions where fn-plugin-property-* helpers are used
2026-05-04 14:39:56 -04:00
dependabot[bot]
91e40634f4 chore(deps): bump google.golang.org/grpc in /tests/apps/gogrpc
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.80.0 to 1.81.0.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.80.0...v1.81.0)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.81.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-04 17:52:13 +00:00
Jose Diaz-Gonzalez
aea322be6f chore: use old path 2026-05-04 13:17:49 -04:00
Jose Diaz-Gonzalez
d268074189 chore: standardize on PLUGIN_AVAILABLE_PATH for source 2026-05-04 13:17:11 -04:00
Jose Diaz-Gonzalez
f0a4a7fc29 chore: remove now invalid tests 2026-05-04 13:16:28 -04:00
Jose Diaz-Gonzalez
473bcce688 fix: use inline source instead of global source
Ensure property-functions are sourced only if not already defined.
2026-05-04 09:32:09 -04:00
Jose Diaz-Gonzalez
49dc1c1e64 fix: correct the assertion 2026-05-04 09:30:00 -04:00
Jose Diaz-Gonzalez
964c0fc4e9 fix: source property-functions where fn-plugin-property-* helpers are used
The release_and_deploy function and several proxy plugin scripts call fn-plugin-property-* helpers without sourcing `plugins/common/property-functions`, producing `command not found` errors during deploys. Source the helpers from `plugins/common/functions` and from each proxy plugin entry point that consumes them.
2026-05-04 06:11:22 -04:00
Jose Diaz-Gonzalez
ec8fd0994b Merge pull request #8561 from dokku/chore/bump-pack-0.40.4
chore: bump pack to 0.40.4
2026-05-04 06:01:21 -04:00
Dokku Bot
1e04955c4d chore: bump pack to 0.40.4 2026-05-03 06:52:51 +00:00
Jose Diaz-Gonzalez
eaaed79b39 Merge pull request #8559 from dokku/alternative-pack-install
Install cnb pack from github releases instead of ppa
2026-05-02 10:03:00 -04:00
Jose Diaz-Gonzalez
31ce5a7c48 fix: install cnb pack from github releases instead of ppa
The ppa:cncf-buildpacks/pack-cli launchpad source is currently down, breaking the runtime image build and any bats run that calls install_pack. Pack is now tracked in contrib/dependencies.json and pulled from the buildpacks/pack GitHub release tarball, matching how other binary deps are managed. update-deb-dependencies gains hyphen-aware word-boundary matching so single-word names like pack cannot accidentally rewrite unrelated debian/control lines, keeping pack out of the package's hard requirements.
2026-05-02 09:12:46 -04:00
Jose Diaz-Gonzalez
ef959160bd Merge pull request #8558 from dokku/8557-storage-mount-migration-in-0-38-0-uses-the-wrong-owner-for-the-legacy-files-causing-ps-rebuild-failures 2026-05-02 07:12:36 -04:00
Jose Diaz-Gonzalez
179d09fdd5 fix: chown migrated legacy storage entries to dokku
`SaveEntry` and `touchMigrationFlag` wrote files via `os.WriteFile` and `os.Create` and never chowned them, so the install-time legacy-mount migration produced root-owned `legacy-*.json` files in `/var/lib/dokku/data/storage-registry/entries/`. The dokku user that runs `ps:rebuild` could not read them and every rebuild on a 0.37.x to 0.38.0 upgrade failed with permission denied. The companion `repairRegistryOwnership` pass in `TriggerInstall` rewrites ownership across the whole registry tree so installs that already ran the buggy code are fixed on the next package upgrade, since the per-app migration flag would otherwise cause `MigrateLegacyMounts` to skip the broken files forever.
2026-05-02 05:37:11 -04:00
Jose Diaz-Gonzalez
cdfcd4d2c8 Merge pull request #8555 from dokku/dependabot/go_modules/plugins/app-json/github.com/mattn/go-isatty-0.0.22
chore(deps): bump github.com/mattn/go-isatty from 0.0.20 to 0.0.22 in /plugins/app-json
2026-05-02 03:52:13 -04:00
Jose Diaz-Gonzalez
ea807bb46e chore: bump go modules 2026-05-02 03:46:40 -04:00
dependabot[bot]
2c3ed3ad14 chore(deps): bump github.com/mattn/go-isatty in /plugins/app-json
Bumps [github.com/mattn/go-isatty](https://github.com/mattn/go-isatty) from 0.0.20 to 0.0.22.
- [Commits](https://github.com/mattn/go-isatty/compare/v0.0.20...v0.0.22)

---
updated-dependencies:
- dependency-name: github.com/mattn/go-isatty
  dependency-version: 0.0.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-02 03:46:23 -04:00
Jose Diaz-Gonzalez
4f0a7e63f3 Merge pull request #8556 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/Masterminds/semver/v3-3.5.0
chore(deps): bump github.com/Masterminds/semver/v3 from 3.4.0 to 3.5.0 in /plugins/scheduler-k3s
2026-05-02 03:45:40 -04:00
Jose Diaz-Gonzalez
4dbd2e5bba Merge pull request #8550 from dokku/chore/bump-docker-container-healthchecker-0.15.2
chore: bump docker-container-healthchecker to 0.15.2
2026-05-02 03:44:55 -04:00
Jose Diaz-Gonzalez
9671cbd78e Merge pull request #8553 from dokku/chore/bump-dokku-event-listener-0.19.1
chore: bump dokku-event-listener to 0.19.1
2026-05-02 03:44:33 -04:00
Jose Diaz-Gonzalez
641f1e3374 Merge pull request #8552 from dokku/chore/bump-lambda-builder-0.9.3
chore: bump lambda-builder to 0.9.3
2026-05-02 03:43:56 -04:00
Jose Diaz-Gonzalez
b4c1eb246d Merge pull request #8551 from dokku/chore/bump-procfile-util-0.20.7
chore: bump procfile-util to 0.20.7
2026-05-02 03:42:35 -04:00
Dokku Bot
9e9f374050 chore: bump procfile-util to 0.20.7 2026-05-02 06:40:39 +00:00
Dokku Bot
75d42dfa38 chore: bump dokku-event-listener to 0.19.1 2026-05-02 06:40:38 +00:00
Dokku Bot
d3f977f953 chore: bump lambda-builder to 0.9.3 2026-05-02 06:40:38 +00:00
Dokku Bot
e76785e629 chore: bump docker-container-healthchecker to 0.15.2 2026-05-02 06:40:35 +00:00
Jose Diaz-Gonzalez
8497a1cc52 Merge pull request #8545 from dokku/haproxy-fails
Deflake haproxy bats tests
2026-05-01 16:53:41 -04:00
Jose Diaz-Gonzalez
6b03e2ed88 Merge pull request #8554 from dokku/dependabot/github_actions/peter-evans/create-pull-request-8
chore(deps): bump peter-evans/create-pull-request from 7 to 8
2026-05-01 12:38:47 -04:00
dependabot[bot]
3bf2478393 chore(deps): bump github.com/Masterminds/semver/v3
Bumps [github.com/Masterminds/semver/v3](https://github.com/Masterminds/semver) from 3.4.0 to 3.5.0.
- [Release notes](https://github.com/Masterminds/semver/releases)
- [Changelog](https://github.com/Masterminds/semver/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Masterminds/semver/compare/v3.4.0...v3.5.0)

---
updated-dependencies:
- dependency-name: github.com/Masterminds/semver/v3
  dependency-version: 3.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-01 16:31:06 +00:00
dependabot[bot]
edceed1524 chore(deps): bump peter-evans/create-pull-request from 7 to 8
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 7 to 8.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v7...v8)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-01 16:28:48 +00:00
Jose Diaz-Gonzalez
60fe2400a9 fix: openresty bats global-flag test uses settable key
The previous regression case selected `--openresty-global-hsts`, but `hsts` is rejected by `openresty:set --global` because it is not in the plugin's GLOBAL_KEYS list. Switch to `--openresty-letsencrypt-server`, which the bats setup already pins to a known staging URL, so the test exercises the same `--global --<info-flag>` parsing path without needing a separate set step.
2026-05-01 04:02:26 -04:00
Jose Diaz-Gonzalez
e8d8b0683a fix: preserve info flag in plugin reports with --global
The argument-handling block in each plugin's report command overwrote APP with --global before checking whether $1 actually held an info flag, so `dokku <plugin>:report --global --<plugin>-foo` always emitted the full report instead of the requested value. Reorder the conditionals across the sixteen plugins that share the pattern so the info-flag check runs first, and add a regression bats case for each one.
2026-04-30 21:05:46 -04:00
Jose Diaz-Gonzalez
53ef8c7780 fix: deflake haproxy bats tests
The byjg/easy-haproxy image polls Docker for label changes every 10
seconds by default, which races with the haproxy bats suite and
intermittently produces curl exit 7. Expose `refresh-conf` as a
global-only haproxy property that maps to `EASYHAPROXY_REFRESH_CONF`,
lower it to 2 seconds in the bats setup, and wrap the localhost HTTP
assertions in a retry loop so checks wait for haproxy to converge
rather than failing on the first attempt.
2026-04-30 18:40:57 -04:00
Jose Diaz-Gonzalez
8f8a23aac3 Merge pull request #8546 from dokku/simpler-nginx-conf-sigil
Consolidate nginx.conf.sigil server blocks
2026-04-30 18:40:11 -04:00
Jose Diaz-Gonzalez
dc5b9cc883 test: relax ssl_certificate occurrence count in nginx-vhosts_16 2026-04-30 17:30:03 -04:00
Jose Diaz-Gonzalez
8d3506a09c Merge pull request #8548 from dokku/migration-docs-2
Use explicit type property in proxy:set examples
2026-04-30 17:21:36 -04:00
Jose Diaz-Gonzalez
554fee91de docs: use explicit type property in proxy:set examples
The 0.38.0 migration documents `proxy:set <app> type <value>` as the canonical way to set the proxy implementation, but several user-facing examples still taught the legacy implicit form. Switch every example over to the explicit property syntax so the docs match the migration guide and other property-based plugin commands.
2026-04-30 17:20:16 -04:00
Jose Diaz-Gonzalez
4c8bdef06d Merge pull request #8547 from dokku/migration-docs
Document plugin properties migrated from env vars
2026-04-30 17:04:46 -04:00
Jose Diaz-Gonzalez
cb0f729299 docs: document plugin properties migrated from env vars
Per-plugin management docs now describe the properties introduced by the env-var-to-property migration in PR #8498, and stale prose and command-output examples that still referenced the old `DOKKU_*` names have been refreshed. The deprecated env vars table moves out of `environment-variables.md` and into the 0.38.0 migration guide, where it functions as a one-time pointer for upgrading users rather than ongoing reference material.
2026-04-30 17:02:39 -04:00
Jose Diaz-Gonzalez
ae3d63668d fix: drop trailing blank line in nginx-vhosts_16.bats 2026-04-30 16:38:43 -04:00
Jose Diaz-Gonzalez
465de6cc71 refactor: consolidate nginx.conf.sigil server blocks
The default nginx template rendered four near-identical server blocks per app, so the same listen, access_log, error_log, ssl_*, error_page, and proxy chain had to be maintained across http, https, grpc, and grpcs branches. Merging http and https into a single branch keyed on an `is_ssl` boolean, and likewise grpc and grpcs, removes the duplicate proxy_set_header chain and error-page locations and brings the structure in line with the openresty proxy template. Output is preserved up to whitespace and the existing `cat -s` pass already squashes the leftover blank lines. Adds plugins/nginx-vhosts/template_test.go exercising the rendered output via sigil as a Go library across HTTP-only, HTTPS, HTTP-to-HTTPS redirect, no-listeners 502 fallback, gRPC, gRPCs, gRPC-without-listeners skip, IPv4 bind, upstream blocks with and without keepalive, the access_log `off` short-circuit, the X-Forwarded-Ssl toggle, the http2 listen-parameter vs directive split, http2_push_preload conditional emission, and the nginx.conf.d/*.conf include in every code path; and tests/unit/nginx-vhosts_16.bats covering deploy plus `nginx -t` end-to-end for both HTTP and HTTPS apps.
2026-04-30 16:36:45 -04:00
Jose Diaz-Gonzalez
823b37e383 Merge pull request #8544 from dokku/josegonzalez-patch-1
Fix reference to when the build plugin was introduced
2026-04-30 14:39:16 -04:00
Jose Diaz-Gonzalez
63f0aaa0cf docs: fix reference to when the build plugin was introduced 2026-04-30 14:39:02 -04:00
Dokku Bot
7dfe8dd336 Release 0.38.0
# History

## 0.38.0

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.38.0/bootstrap.sh
sudo DOKKU_TAG=v0.38.0 bash bootstrap.sh
```

See the [0.38.0 migration guide](/docs/appendices/0.38.0-migration-guide.md) for more information on migrating to 0.38.0.

### Bug Fixes

- #8533: @josegonzalez Split env config and image pull secret into separate helm releases
- #8530: @josegonzalez Split multi-flag input in docker-options
- #8528: @josegonzalez Skip retiring images still in use by app containers
- #8525: @josegonzalez Add launcher entrypoint for CNB images on dokku run and cron:run
- #8522: @josegonzalez Only emit keda fallback when a non-cpu/memory trigger exists
- #8515: @josegonzalez Fix vector mount directory config
- #8508: @josegonzalez Preserve all domains when renaming an app
- #8507: @josegonzalez Retire orphaned containers when scaling down

### New Features

- #8538: @josegonzalez Add scheduler-aware named storage entries
- #8527: @josegonzalez Accept --global on :report subcommands
- #8524: @josegonzalez Pre-validate custom nginx.conf.sigil during core-post-extract
- #8523: @josegonzalez Support resource limits on the build container
- #8517: @josegonzalez Send SIGTERM to old containers immediately on deploy
- #8516: @josegonzalez Scope docker-options to specific procfile processes
- #8509: @josegonzalez Ship default catch-all site on fresh apt install
- #8506: @josegonzalez Add --format json to git:report and nginx:report
- #8505: @josegonzalez Add git:auth-status to check netrc match
- #8493: @josegonzalez Generate 502 config for apps without web listeners
- #8404: @josegonzalez Upgrade vector chart from 0.42.0 to 0.52.0
- #8403: @josegonzalez Upgrade ingress-nginx chart from 4.10.0 to 4.15.1
- #8402: @josegonzalez Upgrade keda to 2.19.0 and keda-add-ons-http to 0.12.2
- #8259: @josegonzalez Add post-create support for env key in app.json
- #8157: @josegonzalez Add support for specifying buildpacks via app.json
- #8154: @josegonzalez Enable live-restore by default when installing Dokku
- #3697: @josegonzalez Migrate builds plugin to go and track per-build records

### Refactors

- #8514: @josegonzalez Migrate docker-options subcommands to go
- #6716: @josegonzalez Move app and global ENV files to consolidated config path

### Dependencies

- #8541: @dependabot[bot] chore(deps): bump traefik from v3.6.14 to v3.6.15 in /plugins/traefik-vhosts
- #8537: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.11.43 to 2.11.44 in /plugins/scheduler-k3s
- #8535: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.39.1 to 1.40.0 in /plugins/common
- #8529: @josegonzalez chore: bump dokku/netrc to v0.11.0
- #8520: @dependabot[bot] chore(deps): bump packaging from 26.1 to 26.2 in /docs/_build
- #8510: @dependabot[bot] chore(deps): bump packaging from 26.1 to 26.2 in /docs/_build
- #8503: @josegonzalez Bump dependency versions and add daily updater workflow
- #8502: @josegonzalez Bump go version to 1.26.2
- #8495: @dependabot[bot] chore(deps): bump k8s.io/apimachinery from 0.35.4 to 0.36.0 in /plugins/scheduler-k3s
- #8494: @dependabot[bot] chore(deps): bump dokku/openresty-docker-proxy from 0.9.3 to 0.10.0 in /plugins/openresty-vhosts
- #8490: @dependabot[bot] chore(deps): bump k8s.io/kubernetes from 1.35.4 to 1.36.0 in /plugins/scheduler-k3s

### Other

- #8498: @josegonzalez Migrate environment variables to plugin properties
2026-04-30 17:38:51 +00:00
Jose Diaz-Gonzalez
c95c9f8518 Merge pull request #8501 from dokku/0.38-release
Release 0.38.0
2026-04-30 13:36:29 -04:00
Jose Diaz-Gonzalez
c0794abc30 Merge pull request #8538 from dokku/6814-k3s-plugin-add-pv-option
Add scheduler-aware named storage entries
2026-04-30 12:10:30 -04:00
Jose Diaz-Gonzalez
f020b76e11 Merge pull request #3697 from dokku/track-deploys
Migrate builds plugin to go and track per-build records
2026-04-30 12:08:11 -04:00
Jose Diaz-Gonzalez
0a857b7966 docs: add file formats to list 2026-04-30 12:08:00 -04:00
Jose Diaz-Gonzalez
1a6f01a1eb docs: link to build tracking docs in sidebar 2026-04-30 12:04:23 -04:00
Jose Diaz-Gonzalez
8de073c960 docs: delete docs/deployment/builds-management.md
This is duplicated
2026-04-30 12:03:07 -04:00
Jose Diaz-Gonzalez
7cd4493cc7 Merge pull request #8541 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-v3.6.15
chore(deps): bump traefik from v3.6.14 to v3.6.15 in /plugins/traefik-vhosts
2026-04-30 10:15:10 -04:00
dependabot[bot]
2210307e42 chore(deps): bump traefik in /plugins/traefik-vhosts
Bumps traefik from v3.6.14 to v3.6.15.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: v3.6.15
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-30 13:54:23 +00:00
Jose Diaz-Gonzalez
4d5a16b714 fix: chown test-fixture build records to dokku user 2026-04-30 02:58:18 -04:00
Jose Diaz-Gonzalez
f0d088bc1d test: cover the legacy -v migration with go and bats tests
Adds plugins/storage/migrate_test.go exercising migrateApp and MigrateLegacyMounts: single deploy phase, cross-phase grouping into one attachment, :ro and free-form volume options preserved on the attachment, idempotency on a second pass, the per-app flag-file fast path that skips already-migrated apps, and the name-collision refusal that aborts before draining. tests/unit/storage.bats gains an end-to-end case that stages a -v line via docker-options:add, runs storage:migrate, and asserts the synthesized colon form shows up in storage:list, the legacy-<hash> entry shows up in storage:list-entries, and the original -v line is gone from docker-options:report on both phases. To make that test (and operators with restored backups) practical, storage gains a storage:migrate <app>|--all subcommand backed by a new MigrateApp helper that skips the per-app flag file so a re-run actually re-scans.
2026-04-30 02:37:01 -04:00
Jose Diaz-Gonzalez
ea25c5b6e2 fix: keep operator stdout when teeing build output to file 2026-04-30 02:02:02 -04:00
Jose Diaz-Gonzalez
ae61547505 fix: pad shfmt-required spaces around arithmetic operator 2026-04-30 01:19:21 -04:00
Jose Diaz-Gonzalez
67e4cf04ab feat: migrate builds plugin to go and track per-build records
Adds typed JSON build records under data/builds/<app>/<build-id>.{json,log} keyed on a stable base36 ULID-style DOKKU_BUILD_ID generated for every deploy. The new commands surface that history (builds:list, builds:info, builds:prune) and an operator-configurable retention via builds:set retention. The existing builds:cancel and builds:output now key on the build-id (with safe handling for already-finalized and abandoned records), and the per-build log file replaces journalctl as the durable source of truth for builds:output.
2026-04-30 01:18:03 -04:00
Jose Diaz-Gonzalez
e9a53ac82d fix: propagate storage:exec exit codes and route legacy mounts to attachments
CallExecCommand wraps non-zero exit codes as errors with the code populated on the response, so storage:exec was returning the wrapped error and being collapsed to exit 1 by LogFailWithError before the os.Exit branch ran. Both storage's CommandExec and scheduler-docker-local's TriggerSchedulerStorageExec now check ExitCode before err so the underlying tool's status flows through verbatim. Separately, the legacy host:container colon form of storage:mount used to write straight into docker-options, but storage:list now reads only attachments, so newly mounted legacy-form storage was invisible. CommandMount and CommandUnmount route the colon form through LegacyMountToEntry plus AddAttachment / RemoveAttachment, making storage:list show every mount regardless of form while preserving the existing "Mount path already exists." / "Mount path does not exist." error wording.
2026-04-30 01:10:00 -04:00
Jose Diaz-Gonzalez
cdbc91048a fix: chown the storage registry tree to the dokku user
The install trigger created /var/lib/dokku/data/storage-registry and its entries / migrations subdirectories as root with mode 0755, so the dokku user that runs storage:create couldn't write entry JSON files or migration flag files into them. Mirrors what PropertySetup does for config/storage by calling SetPermissions on each registry path. This unblocks the bats coverage that was failing at the first storage:create call.
2026-04-30 00:01:54 -04:00
Jose Diaz-Gonzalez
58042b9330 feat: delegate storage:exec to scheduler plugins, harden the flow
Moves the actual exec out of the storage plugin and into a new scheduler-storage-exec plugn trigger. scheduler-docker-local does docker run with TTY-aware -it/-i selection and --user derived from entry.Chown; scheduler-k3s creates a throwaway Pod via the kubernetes API, waits for it to reach Running with structured error reporting (ImagePullBackOff and friends are surfaced from the container status verbatim, no kubectl involvement), execs the user command via the existing SPDY plumbing in k8s.go, and deletes the Pod on the way out. (Entry).Validate now accepts either an absolute path or a docker named-volume token for docker-local entries so the migration synthesizer's named-volume legacy entries work cleanly. storage:exec gains --as-user for one-off uid overrides, propagates the underlying tool's exit code via os.Exit, and detects TTY/interactive mode from os.Stdin so non-interactive scripted use no longer trips over docker's input-device-is-not-a-tty error.
2026-04-29 23:29:30 -04:00
Jose Diaz-Gonzalez
d75228f165 fix: storage:list reads from attachments, deprecate storage-list trigger
storage:list was calling the storage-list plugn trigger which read -v lines from docker-options. After the install-time migration drains those lines into the attachment store, that source is empty for every migrated app and for any app that only ever used storage:create + storage:mount. The fix moves CommandList to call a new in-process ListAppMountEntries helper that reads attachments directly, surfaces the entry name in JSON output via a new entry_name field, and falls back to the entry name as the host token for k3s entries with no host path so the colon form remains well-formed. The storage-list plugn trigger is kept for back-compat with external callers but emits a deprecation warning and now reads from the same attachment-driven source.
2026-04-29 22:51:50 -04:00
Jose Diaz-Gonzalez
3b3bc3dd39 fix: scope deploy output redirect to git-hook only
The previous condition used a bash regex `git-*` that matched git-receive-pack and git-upload-pack, interposing a tee chain on the binary git wire protocol and producing `fatal: protocol error: bad line length character: !` on every push. Restrict the redirect to the pre-receive hook, where tee passthrough is safe because git-receive-pack forwards hook output via the protocol sideband.
2026-04-29 22:48:49 -04:00
Jose Diaz-Gonzalez
6a5d568944 fix: remove the per-app property folder on app delete and rename
Switches the storage plugin's post-delete and post-app-rename-setup triggers from rewriting the attachment list as empty to removing the per-app property folder outright via PropertyDestroy. This matches the convention other plugins use on app deletion and avoids leaving an empty mounts file behind for an app that no longer exists.
2026-04-29 22:39:12 -04:00
Jose Diaz-Gonzalez
89afd09087 fix: storage plugin install setup and post-delete permissions
apps:destroy was failing in CI because the post-delete trigger called PropertyListWrite, which tried to mkdir /var/lib/dokku/config/storage/<app> as the dokku user but the parent directory had been created by the install trigger as root. The install trigger now calls PropertySetup("storage") so the per-plugin config root has the correct ownership, and post-delete / post-app-clone / post-app-rename short-circuit when the app has no attachments to begin with so they can't fail on a never-touched property tree. The entry registry and migration flag directories also moved out of config/storage (where they would have collided with the property-store path config/storage/<appName>) into a dedicated data/storage-registry tree.
2026-04-29 22:36:00 -04:00
Jose Diaz-Gonzalez
b601a626f5 docs: storage entries and migration guide for #6814
Updates persistent-storage.md to lead with the named storage entry workflow while keeping the legacy colon-form documentation intact, adds a Persistent storage section to the k3s scheduler doc, documents the storage-app-mounts, storage-create, storage-destroy, and storage-status triggers in plugin-triggers, and adds an entry to the 0.38.0 migration guide explaining the install-time migration of legacy mounts and the new DNS-1123 name validation. Bats coverage in tests/unit/storage.bats now exercises storage:create / list-entries / destroy, name validation rejections, multi-entry attachment, the destroy-while-mounted error, and the ensure-directory deprecation warning.
2026-04-29 14:54:15 -04:00
Jose Diaz-Gonzalez
1ca961251d feat: add storage:set, storage:exec, storage:wait, storage:report --global
storage:set is the in-place editor for an existing entry; size grows are passed through to a helm upgrade and Kubernetes-incompatible swaps (access-mode, storage-class) are rejected up front. storage:exec spawns a throwaway container that mounts the entry: docker run on docker-local entries, kubectl run with a Pod-spec override on k3s, falling back to bash then sh when no command is supplied. storage:wait blocks until a k3s entry's PVC reports Bound via the storage-status trigger, with a docker-local fast path that just checks the host directory. storage:report --global enumerates every registered entry and the apps that mount it, in text or JSON form.
2026-04-29 14:51:49 -04:00
Jose Diaz-Gonzalez
cfb7da8ec0 feat: scheduler-k3s renders pvc-backed volumes from storage attachments
Adds a per-entry storage helm chart that owns the PVC and (when host_path is set) the PV, and three triggers for the storage plugin to drive: storage-create installs/upgrades the chart with storage-class existence validation, storage-destroy uninstalls it, storage-status reports the PVC phase. App deployment and cron-job charts now consume storage-app-mounts and reference each PVC by name; the // todo: implement volumes blocks are gone. ProcessVolume gained sub_path, read_only, and persistent_claim fields and the deployment/cron-job templates render them.
2026-04-29 14:49:15 -04:00
Jose Diaz-Gonzalez
e1b6bdb1d4 feat: storage attachments, docker-args triggers, install-time migration
storage:mount and storage:unmount now accept the named-entry form (--container-dir, --phase, --process-type, --volume-subpath, --volume-readonly, --volume-chown), persisting attachments via the property list. The legacy host:container colon form is preserved for back-compat. Storage now emits its own docker-args-deploy and docker-args-run triggers so docker-local apps continue to receive bind mounts even after their data moves out of docker-options. The install trigger walks every app once per upgrade and converts legacy -v lines into legacy-<hash> entries plus attachments, draining the originals from docker-options last so a partial run leaves the old behavior intact. Lifecycle triggers post-delete, post-app-clone-setup, and post-app-rename-setup keep the attachment store in sync with app state.
2026-04-29 14:43:51 -04:00
Jose Diaz-Gonzalez
8a46d89181 feat: add storage:create, storage:destroy, storage:info, storage:list-entries
Wires the new entry-management commands on top of the Entry type. storage:create accepts both docker-local entries (with idempotent host-directory creation) and k3s entries (which delegate PVC provisioning to a forthcoming scheduler-side storage-create trigger). storage:destroy refuses to remove an entry that any app still mounts. storage:ensure-directory now emits a deprecation warning. storage:mount and storage:unmount keep the existing colon-form behavior so this commit is non-breaking; the named-entry mount form follows in a later commit.
2026-04-29 14:39:59 -04:00
Jose Diaz-Gonzalez
4e87d1f447 feat: add storage entry and attachment types
Introduces the Entry and Attachment types that the storage plugin will use as the source of truth for named storage volumes, replacing the colon-delimited mount strings stored under docker-options. Entries persist as JSON under config/storage/entries and validate against scheduler-specific rules; attachments persist via the property list and capture how an app uses an entry. The legacy migration name synthesizer is also added so existing colon-form mounts can converge on a deterministic legacy- entry name. Existing storage commands are unchanged in this commit.
2026-04-29 14:36:47 -04:00
Jose Diaz-Gonzalez
aa72794711 feat: redirect output in every case as appropriate 2026-04-29 13:48:50 -04:00
Jose Diaz-Gonzalez
7d00e2c422 feat: implement builds:output
This still needs tightening to ensure we don't trigger this for normal git plugin commands - as well as anything that triggers a deploy - but works in a pinch.
2026-04-29 13:48:50 -04:00
Jose Diaz-Gonzalez
99855ae9f8 fix: correct issue with cancel 2026-04-29 13:48:50 -04:00
Jose Diaz-Gonzalez
0c08aefc54 feat: implement build tracking
The DOKKU_PID now never gets overwritten except in the case that DOKKU is executed by the sudo user. If the command ends up executing a deploy, then the pid of the `dokku` owned process - which may have been executed via sudo - will be written to the file lock, allowing future commands to interact with the original process.

Additionally, the new builds plugin can be used to handle killing a build.
2026-04-29 13:48:50 -04:00
Jose Diaz-Gonzalez
4257c17eab Merge pull request #8533 from dokku/8531-split-out-imagepullsecrets-and-config-env-into-separate-helm-charts
Split env config and image pull secret into separate helm releases
2026-04-29 13:48:08 -04:00
Jose Diaz-Gonzalez
3a6ae559c4 Merge pull request #8530 from dokku/8010-docker-options-cleaning-up-arguments
Split multi-flag input in docker-options
2026-04-29 13:16:37 -04:00
Jose Diaz-Gonzalez
507df612e8 fix: tidy go.sum for plugins importing docker-options 2026-04-29 13:16:18 -04:00
Jose Diaz-Gonzalez
55d7487d66 fix: split multi-flag input in docker-options
Multi-flag inputs (e.g. `--build-arg X=Y --link a --link b`) used to be stored as a single line, which bypassed the per-line filter that drops `--link` and similar flags for dockerfile-based builders. Each `--flag [value]` group is now stored as its own entry, and a `--process` typed after the app name is lifted into the subcommand flag instead of being stored as a docker option.
2026-04-29 13:15:51 -04:00
Jose Diaz-Gonzalez
7ba453e588 fix: thread secret annotations and labels through new helm charts
The new config and pull secret helm releases need to honor user-set annotations and labels for `--resource-type secret` so existing scheduler-k3s annotation tests keep passing. The dedicated charts now render `.Values.global.annotations` and `.Values.global.labels` onto their Secret manifest, and the deploy trigger plumbs `SecretAnnotations` and `SecretLabels` from the global annotation/label config. The rollback regression bats test now uses `dokku ps:rebuild` for its second deploy because git push of an unchanged ref is rejected by the dokku remote.
2026-04-29 12:18:06 -04:00
Jose Diaz-Gonzalez
ef9bdc0379 fix: split env config and image pull secret into separate helm releases
Bundling these Secrets in the app helm chart caused two bugs in the scheduler-k3s plugin: a chart rollback could delete Secrets that older ReplicaSets still referenced by exact timestamped name (`env-{app}.{ts}` and `ims-{app}.{ts}`), hard-crashing pods until manual intervention; and the strategic-merge `patchMergeKey` on `imagePullSecrets` let stale entries leak into the live Deployment until the list pointed at many nonexistent Secrets. Each Secret now lives in its own helm release with a stable name (`config-{app}` and `pull-secret-{app}`), installed before the app chart on every deploy. The deployment trigger also prunes any leaked `imagePullSecrets` entries from the live Deployment so the next deploy lands on a clean list, and the rename and destroy paths uninstall the new releases (and the previously-leaked TLS release on rename) under the old app name.
2026-04-29 12:18:03 -04:00
Jose Diaz-Gonzalez
f06048a266 Merge pull request #8535 from dokku/dependabot/go_modules/plugins/common/github.com/onsi/gomega-1.40.0
chore(deps): bump github.com/onsi/gomega from 1.39.1 to 1.40.0 in /plugins/common
2026-04-29 12:17:08 -04:00
Jose Diaz-Gonzalez
579481e76b chore: bump go modules 2026-04-29 12:16:58 -04:00
dependabot[bot]
2f1268172b chore(deps): bump github.com/onsi/gomega in /plugins/common
Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.39.1 to 1.40.0.
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/gomega/compare/v1.39.1...v1.40.0)

---
updated-dependencies:
- dependency-name: github.com/onsi/gomega
  dependency-version: 1.40.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-29 12:16:18 -04:00
Jose Diaz-Gonzalez
abb7faa503 Merge pull request #8527 from dokku/8500-allow-format-json-with-global-on-report-subcommands
Accept --global on :report subcommands
2026-04-29 12:14:54 -04:00
Jose Diaz-Gonzalez
1a45fef839 Merge pull request #8523 from dokku/3826-extending-resource-management-to-include-build-containers
Support resource limits on the build container
2026-04-29 10:45:16 -04:00
Jose Diaz-Gonzalez
0f78f81d71 test: drop cron:set in cron:report --global test
The set step relied on scheduler-cron-write accepting `--global` as the appName, which the scheduler-k3s plugin trigger does not.
2026-04-29 10:31:02 -04:00
Jose Diaz-Gonzalez
b28e4e552b test: align git:report --global assertion with rendered key 2026-04-29 10:31:01 -04:00
Jose Diaz-Gonzalez
8282981361 feat: accept --global on :report subcommands
Every `:report` subcommand now recognizes `--global` as a scope selector that limits the report to globally-configured properties, including in JSON form via `--global --format json`. Previously this combination was rejected because `--global` was treated as an info flag, conflicting with `--format`. The shared `common.ParseReportArgs` helper now returns a `ReportArgs` struct exposing the parsed scope; each Go and bash report selects a global-only flag map when scope is global, and skips per-app verification.
2026-04-29 10:30:59 -04:00
Jose Diaz-Gonzalez
ec70e10c5d Merge pull request #8528 from dokku/6998-dokku-ps-retire-or-cron-job-trying-to-retire-running-app
Skip retiring images still in use by app containers
2026-04-29 10:28:18 -04:00
Jose Diaz-Gonzalez
63958b99ef Merge pull request #8537 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/traefik/traefik/v2-2.11.44
chore(deps): bump github.com/traefik/traefik/v2 from 2.11.43 to 2.11.44 in /plugins/scheduler-k3s
2026-04-29 10:26:16 -04:00
dependabot[bot]
3267cb2ac8 chore(deps): bump github.com/traefik/traefik/v2
Bumps [github.com/traefik/traefik/v2](https://github.com/traefik/traefik) from 2.11.43 to 2.11.44.
- [Release notes](https://github.com/traefik/traefik/releases)
- [Changelog](https://github.com/traefik/traefik/blob/v2.11.44/CHANGELOG.md)
- [Commits](https://github.com/traefik/traefik/compare/v2.11.43...v2.11.44)

---
updated-dependencies:
- dependency-name: github.com/traefik/traefik/v2
  dependency-version: 2.11.44
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-29 14:24:21 +00:00
Jose Diaz-Gonzalez
cf5807c157 Merge pull request #8529 from dokku/fix-netrc-bug
chore: bump dokku/netrc to v0.11.0
2026-04-29 09:02:22 -04:00
Jose Diaz-Gonzalez
73238b7c97 Merge pull request #8524 from dokku/7827-pre-validate-the-nginx-conf-prior-to-starting-a-deploy
Pre-validate custom nginx.conf.sigil during core-post-extract
2026-04-29 08:47:56 -04:00
Jose Diaz-Gonzalez
ab804c678a test: assert dead-images grep result instead of count
The previous assertion piped grep -c through `|| echo 0`, which printed an extra `0` when the file existed without matches because grep -c emits the count of `0` and exits 1, triggering the fallback.
2026-04-29 08:19:54 -04:00
Jose Diaz-Gonzalez
40b8b25ad4 Merge pull request #8525 from dokku/8242-cron-run-and-dokku-run-fail-on-cnb-pack-images-since-0-37-fix
Add launcher entrypoint for CNB images on dokku run and cron:run
2026-04-29 08:15:24 -04:00
Jose Diaz-Gonzalez
7791a26e98 test: pass plugin and dokku root paths to plugn invocations 2026-04-29 08:11:47 -04:00
Jose Diaz-Gonzalez
f4a1559edc chore: bump dokku/netrc to v0.11.0
The `git:auth` test in `tests/unit/git_3.bats` verifies the written entry with `netrc get --netrc-file ${DOKKU_ROOT}/.netrc github.com`, but the `--netrc-file` flag was added in netrc v0.11.0 and CI was still pinned to v0.10.3, so the assertion ran against root's `~/.netrc` and exited 1.
2026-04-29 06:09:07 -04:00
Jose Diaz-Gonzalez
3a7d74cdaa fix: ensure leading space when injecting --entrypoint launcher
The trigger output started with `--entrypoint` and relied on the caller
to provide a trailing space. `scheduler-deploy-process-container` does
that, but `scheduler-run` does not when `DOKKU_TRACE` is unset, so the
flag concatenated onto the previous arg as `--env=KEY--entrypoint`,
leaving `launcher` as the image positional argument and causing
`docker container create` to fail with `Unable to find image 'launcher:latest'`.
Match the leading-space convention used by the other docker-args triggers
(`config/docker-args-run`, `builder-herokuish/docker-args-run`).
2026-04-29 05:48:43 -04:00
Jose Diaz-Gonzalez
effa9d37cf fix: add launcher entrypoint for CNB images on dokku run and cron:run
The scheduler-run script classified CNB-based images as `herokuish` because
`is_image_herokuish_based` returns true for them, which caused the
`docker-args-process-run` trigger for builder-pack to skip injecting
`--entrypoint launcher`. Without that flag the container fell back to the
image entrypoint (`/cnb/process/web`) and dropped the user-supplied
arguments. Mirror the deploy-side detection so CNB images set
`IMAGE_SOURCE_TYPE=pack`, allowing the launcher entrypoint to be added.
2026-04-29 05:39:56 -04:00
Jose Diaz-Gonzalez
d88e8f137f fix: skip retiring images still in use by app containers
When ps:rebuild runs against an image-based deploy via git:from-image, the resulting image often shares the same SHA as the previous deployment, so retiring the old container's image would target the live image of the new container. The retirement is now skipped when another running container of the same app still references the image, and the cron retire loop self-heals previously stuck entries the next time it encounters them.
2026-04-29 05:36:04 -04:00
Jose Diaz-Gonzalez
ec7841a07b fix: inject placeholder listener for pre-validation upstream blocks
When pre-validating a custom nginx.conf.sigil before the build phase, no app listeners exist yet on first deploys. Templates that emit `proxy_pass http://app-port` while gating the matching upstream block on `DOKKU_APP_WEB_LISTENERS` render an undefined upstream, causing `nginx -t` to fail with "host not found in upstream". Pre-validation now passes a `127.0.0.1:5000` placeholder for `DOKKU_APP_WEB_LISTENERS` so the upstream block emits a static server entry and the template can be validated for syntax without depending on live listeners.
2026-04-29 05:12:05 -04:00
Jose Diaz-Gonzalez
63b809f64c feat: pre-validate custom nginx.conf.sigil during core-post-extract
Renders the user-supplied nginx.conf.sigil via sigil into a tmp file and runs `nginx -t` against a wrapped copy as soon as the template is extracted from the source tree, so syntactically invalid templates abort the deploy before the build phase runs. Skipped when `proxy-type` is not `nginx`, when `disable-custom-config=true`, or when no custom template was extracted. Closes #7827.
2026-04-29 05:01:25 -04:00
Jose Diaz-Gonzalez
1812cfbdeb test: export PLUGIN_PATH when invoking plugn trigger in subshells 2026-04-29 05:00:53 -04:00
Jose Diaz-Gonzalez
9b6c32f39c Merge pull request #8516 from dokku/2441-process-scoped-docker-options
Scope docker-options to specific procfile processes
2026-04-29 04:45:23 -04:00
Jose Diaz-Gonzalez
132f724841 feat: support resource limits on the build container
Adds a `docker-args-process-build` trigger to the resource plugin so
limits set via `dokku resource:limit --process-type build APP` are
applied during the build phase. Only `build.limit.*` properties are
read - defaults do not inherit, since builds typically need more memory
than runtime and a leaked tiny default would cause confusing OOM
failures. Reservations are never applied at build time. Allowed flags
are filtered per builder: herokuish gets cpu, memory, memory-swap, and
nvidia-gpu; dockerfile gets memory and memory-swap; pack, nixpacks,
railpack, lambda, and null emit nothing because their underlying CLIs
do not accept docker run resource flags. The dockerfile builder
whitelists the new memory flags and corrects pre-existing typos where
`--ssh` mapped to `--platform` and `--ulimit` mapped to `--tag`.
2026-04-29 03:42:10 -04:00
Jose Diaz-Gonzalez
9a795fcf91 test: cover migration via go unit test
The bats test for migration idempotency invoked the install binary directly via sudo, which kept hitting fresh missing env vars on each iteration (DOKKU_LIB_ROOT, then PLUGIN_PATH, etc). The dokku launcher script exports a chain of vars that the install path reads via common.MustGetEnv, and mirroring that chain in a bats test is fragile. Migration is pure file IO plus a property marker - perfect for a Go unit test that isolates itself with t.TempDir and t.Setenv. The new test covers parsing comments and blank lines, the marker-based no-op on re-run, and the rule that a manually re-created legacy file is left untouched after the marker is set.
2026-04-29 03:14:17 -04:00
Jose Diaz-Gonzalez
d1213c14a8 test: relax default-scope assertions and pass env to install
The ps plugin auto-adds --restart=on-failure:10 to the default deploy scope on app create, so docker-options:list --phase deploy is never empty for a freshly-created app. Switch the default-scope assertions from exact-match to contains/not-contains so the auto-injected restart line stops causing false failures. The migration test invoked the install binary directly via sudo, but DOKKU_LIB_ROOT is normally exported by the dokku launcher script and isn't set in that subprocess; pass it (and DOKKU_ROOT) explicitly.
2026-04-29 02:34:30 -04:00
Jose Diaz-Gonzalez
d51726b7cb Merge pull request #8522 from dokku/fix-keda-scaling
Only emit keda fallback when a non-cpu/memory trigger exists
2026-04-29 02:27:03 -04:00
Jose Diaz-Gonzalez
177eac4ef1 Merge pull request #8517 from dokku/6833-send-sigterm-immediately-to-old-containers-when-deploying-via-docker-local
Send SIGTERM to old containers immediately on deploy
2026-04-29 01:50:35 -04:00
Jose Diaz-Gonzalez
f728fc8cd7 fix: only emit keda fallback when a non-cpu/memory trigger exists
Keda 2.17+ rejects ScaledObjects whose spec.fallback is set unless at least one trigger is not a cpu or memory scaler, so unconditionally emitting fallback broke deploys for apps autoscaled on cpu or memory alone. The chart now skips the fallback block when every configured trigger is cpu or memory and keeps the existing behavior otherwise.
2026-04-29 01:10:34 -04:00
Jose Diaz-Gonzalez
8a6c853ccd Merge pull request #8515 from dokku/fix-vector-data-dir
Fix vector mount directory config
2026-04-29 00:36:40 -04:00
Jose Diaz-Gonzalez
97b86707e7 fix: docker-options:list flag parsing and ci test fixes
The :list subcommand had `SetInterspersed(false)` which forced flags to come before positional arguments; in practice users invoke it as `docker-options:list <app> --process X --phase Y`. Drop the non-interspersed setting so flags can appear after the app name. Two existing buildpacks/dockerfile tests appended directly to the legacy `DOCKER_OPTIONS_DEPLOY` file - that path is no longer the source of truth, so switch them to `docker-options:add`. The new migration test invoked `dokku plugin:trigger install` which fans out to every plugin and trips on unrelated permission errors; call the docker-options install binary directly instead. Tighten the report and JSON assertions to match the actual output format (`.` becomes a space in the display key, and JSON values may concatenate options).
2026-04-29 00:35:26 -04:00
Jose Diaz-Gonzalez
c424cb06c2 Merge pull request #8520 from dokku/dependabot/pip/docs/_build/packaging-26.2
chore(deps): bump packaging from 26.1 to 26.2 in /docs/_build
2026-04-29 00:28:22 -04:00
dependabot[bot]
32c997e4a7 chore(deps): bump packaging from 26.1 to 26.2 in /docs/_build
Bumps [packaging](https://github.com/pypa/packaging) from 26.1 to 26.2.
- [Release notes](https://github.com/pypa/packaging/releases)
- [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pypa/packaging/compare/26.1...26.2)

---
updated-dependencies:
- dependency-name: packaging
  dependency-version: '26.2'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-28 13:54:14 +00:00
Jose Diaz-Gonzalez
1161dda05e feat: send SIGTERM to old containers immediately on deploy
The docker-local scheduler now sends `SIGTERM` to old containers immediately after a successful deploy via `docker container kill --signal=SIGTERM`, rather than waiting `wait-to-retire` seconds before signaling. This matches Heroku's graceful-shutdown contract and lets applications begin draining in-flight work as soon as proxy traffic switches. The existing `wait-to-retire` grace period and `stop-timeout-seconds` hard-stop continue to apply unchanged as the authoritative cleanup path.
2026-04-27 18:18:39 -04:00
Jose Diaz-Gonzalez
9c8d5f54fb feat: scope docker-options to specific procfile processes
Adds a `--process` flag (repeatable) to docker-options:add/remove/clear/list and the new docker-options:list subcommand for querying a single process+phase pair. Process scoping is supported only for the deploy phase since build runs once per app and run covers ad-hoc commands and cron tasks where no Procfile process type is available. Storage moves from `$DOKKU_ROOT/$APP/DOCKER_OPTIONS_*` files to property lists under `/var/lib/dokku/config/docker-options/$APP/{processType}.{phase}`, with `_default_` as the sentinel for app-wide options. The install trigger migrates pre-existing DOCKER_OPTIONS_* files into property lists once and renames them to `.migrated`; a global marker makes re-runs strictly no-op. The legacy docker-args-{build,deploy,run} bash triggers are reimplemented in Go alongside a new docker-args-process-deploy trigger that surfaces per-process options to the scheduler. The :report command exposes one dynamic flag per configured `process.deploy` pair (e.g. `--docker-options-deploy.web`) and supports `--format json`. There is no `--global` flag; omitting `--process` keeps the historical default behaviour, since `--global` elsewhere in dokku means "across all apps". Closes #2441.
2026-04-27 18:12:52 -04:00
Jose Diaz-Gonzalez
c0f23528af fix: just use an emptyDir
Let vector decide how to handle the directory.
2026-04-27 17:53:23 -04:00
Jose Diaz-Gonzalez
f19227dcd9 Merge pull request #8514 from dokku/migrate-docker-options-to-go
Migrate docker-options subcommands to go
2026-04-27 17:29:22 -04:00
Jose Diaz-Gonzalez
9767f996c6 Merge pull request #8509 from dokku/7309-nginx-default-site-038
Ship default catch-all site on fresh apt install
2026-04-27 17:11:57 -04:00
Jose Diaz-Gonzalez
acf841606c Merge pull request #8510 from dokku/dependabot/pip/docs/_build/packaging-26.2
chore(deps): bump packaging from 26.1 to 26.2 in /docs/_build
2026-04-27 16:09:24 -04:00
Jose Diaz-Gonzalez
8e7d158ac2 chore: revert transforms changes 2026-04-27 16:06:45 -04:00
Jose Diaz-Gonzalez
5dcefe7ffa fix: use extraVolumeMount just for the vector state 2026-04-27 16:06:07 -04:00
Jose Diaz-Gonzalez
87dd39e0b3 refactor: collect docker-options file helpers in functions.go
Moves `copyPhaseFile` and `removePhaseFile` next to the other phase-file helpers so the package keeps a single home for filesystem plumbing.
2026-04-27 15:58:40 -04:00
Jose Diaz-Gonzalez
b397cf1bd7 test: pass deploy phase to docker-options:add in udp test
The single-udp network test was calling `docker-options:add $TEST_APP -p 1194:1194` without a phase argument. The bash subcommand silently no-op'd because `-p` is not a recognized phase, so the test happened to pass even though it was not actually setting the option. The go port surfaces the validation error correctly, so the test now needs the proper `deploy` phase to keep working.
2026-04-27 15:58:35 -04:00
Jose Diaz-Gonzalez
eaaf0e41c2 fix: clear auto-detected port maps when re-enabling vhost
Re-enabling vhost on an app that was previously deployed with no global VHOST left the auto-assigned random high port behind in the ports plugin's `map-detected` property, so nginx kept listening on that port and the new catch-all default vhost rejected requests for the app's own domain on port 80.
2026-04-27 15:43:33 -04:00
Jose Diaz-Gonzalez
af6267f3b5 fix: restore default domains and reset proxy ports on vhost enable
Re-enabling vhost (via `proxy:enable`, `domains:enable`, or `domains:add` with no global VHOST) was leaving the app pinned to the random high port and the empty VHOST file from the previous disabled state, so the new catch-all vhost intercepted requests for the app's domain. The `domains-enable` trigger now restores default vhosts via `domains_enable`, and `pre-enable-vhost` clears any stored proxy ports so they can be recomputed to 80/443. Also fixes the netrc lookup in the `git:auth` test to read dokku's netrc file directly.
2026-04-27 14:43:20 -04:00
Jose Diaz-Gonzalez
b2ea5406fe fix: remove sites-enabled default instead of renaming
Renaming `/etc/nginx/sites-enabled/default` to `.dokku-disabled` left a broken symlink that nginx's `include /etc/nginx/sites-enabled/*;` glob still picked up, breaking config validation. Files inside `sites-enabled/` are now removed; the real config in `sites-available/default` is still preserved via rename.
2026-04-27 14:43:20 -04:00
Jose Diaz-Gonzalez
d7c88ae298 feat: ship default catch-all site on fresh apt install
Fresh apt installs now drop a catch-all server block at `/etc/nginx/conf.d/00-default-vhost.conf` that uses `ssl_reject_handshake on` and `return 444` to drop requests with unknown Host headers. Conflicting upstream nginx default vhosts are renamed to `*.dokku-disabled` rather than deleted, preserving any local edits. The new `dokku/install_default_site` debconf flag opts out of the install. Upgrades leave existing nginx config untouched.
2026-04-27 14:43:20 -04:00
Jose Diaz-Gonzalez
a4f26a356a feat: add nginx:reload command
Reloads the nginx server config after validating it with `nginx -t`. Useful for picking up changes to globally managed nginx configs without restarting the running process.
2026-04-27 14:43:20 -04:00
Jose Diaz-Gonzalez
099c358a1e fix: set the defaultVolumeMounts instead of using extraVolumeMounts
Without this, the daemonset will inject customConfig.data_dir as a default mount, which will collide with extraVolumeMounts.
2026-04-27 14:27:05 -04:00
Jose Diaz-Gonzalez
e4a8cfc74f Merge pull request #8402 from dokku/upgrade-keda
Upgrade keda to 2.19.0 and keda-add-ons-http to 0.12.2
2026-04-27 14:12:37 -04:00
Jose Diaz-Gonzalez
4eb42f1b82 refactor: migrate docker-options subcommands to go
Ports the user-facing CLI subcommands and lifecycle triggers from bash to go, mirroring the layout used by the ports plugin. The on-disk format (`DOCKER_OPTIONS_BUILD/DEPLOY/RUN` files), the `docker-args-build/deploy/run` triggers, and every exported helper consumed by other plugins are unchanged. Reserves the `--process` and `--global` flags on add, remove, and clear so usage today exits with a not-yet-implemented error and the surface is locked in ahead of the process-scoping work tracked in #2441.
2026-04-27 14:11:37 -04:00
dependabot[bot]
d356ee6847 chore(deps): bump packaging from 26.1 to 26.2 in /docs/_build
Bumps [packaging](https://github.com/pypa/packaging) from 26.1 to 26.2.
- [Release notes](https://github.com/pypa/packaging/releases)
- [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pypa/packaging/compare/26.1...26.2)

---
updated-dependencies:
- dependency-name: packaging
  dependency-version: '26.2'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-27 17:15:21 +00:00
Jose Diaz-Gonzalez
da13367ca8 feat: add version-aware helm chart upgrade callbacks
Some helm chart upgrades require side-effects that a plain `helm upgrade` cannot perform, such as deleting deployments whose immutable selectors changed. Charts may now register pre and post upgrade hooks against a target version; applicable hooks fire in ascending semver order, each bracketed around an upgrade to its version, with a final upgrade to the chart's configured version when needed. The new `keda-add-ons-http` 0.12.2 hook deletes the chart-managed deployments before the upgrade so the new selectors take effect cleanly.
2026-04-27 07:57:38 -04:00
Jose Diaz-Gonzalez
db1308a2ab feat: upgrade keda to 2.19.0 and keda-add-ons-http to 0.12.2
While there are breaking changes in the addon, none of these impact how Dokku exposes the addon.
2026-04-27 07:32:38 -04:00
Jose Diaz-Gonzalez
b92310c4c8 Merge pull request #8508 from dokku/8230-renaming-app-clears-the-set-domain
Preserve all domains when renaming an app
2026-04-27 07:19:48 -04:00
Jose Diaz-Gonzalez
b17eaedbec Merge pull request #8507 from dokku/fix-8497-orphaned-containers-on-scale-down
Retire orphaned containers when scaling down
2026-04-27 07:19:36 -04:00
Jose Diaz-Gonzalez
bc603d7b9c test: drain dead-containers before scale-up assertion
The intermediate container count check raced with the existing
zero-downtime retire of the previous container, so docker ps still
saw the renamed-but-pending container until wait-to-retire elapsed.
2026-04-27 03:29:06 -04:00
Jose Diaz-Gonzalez
4927ca092d fix: retire orphaned containers when scaling down
When scaling a process type to a smaller count, the indices above the
new count had their `CONTAINER.<proctype>.<idx>` state files deleted but
the underlying Docker containers were never registered for retirement,
so they remained running indefinitely. The cleanup block now reads each
orphaned state file and registers its container id with the existing
`scheduler-register-retired` trigger before the file is removed.
2026-04-27 03:23:15 -04:00
Jose Diaz-Gonzalez
e54fcc4035 Merge pull request #6716 from dokku/1558-move-env
Move app and global ENV files to consolidated config path
2026-04-27 02:50:24 -04:00
Jose Diaz-Gonzalez
c2a07c3f1c fix: preserve all domains when renaming an app
The `post-app-rename-setup` trigger redirected `sed` output to the new
app's VHOST file inside a loop over global vhosts, so each iteration
clobbered the previous one and only the last global subdomain was
rewritten. When no global vhost was set, the loop never ran and the
new app's VHOST file was never written, leaving the renamed app with
no domains.

Copy the old app's VHOST file once as a baseline, then apply `sed -i`
in place for each global vhost so substitutions accumulate. Guard
against a missing global VHOST file and skip blank lines.
2026-04-27 01:47:50 -04:00
Jose Diaz-Gonzalez
8847fcb6b0 Merge pull request #8505 from dokku/8504-git-auth-status
Add git:auth-status to check netrc match
2026-04-27 01:25:46 -04:00
Jose Diaz-Gonzalez
d1554461ab docs: move migration note to 0.38.x doc 2026-04-27 01:07:39 -04:00
Jose Diaz-Gonzalez
d24ab6ffdf fix: set DOKKU_LIB_ROOT in Go coverage test environment 2026-04-27 01:06:32 -04:00
Jose Diaz-Gonzalez
aa45f748b1 fix: create DOKKU_ROOT app dir in Go tests and set global ENV permissions
- config_test.go: create app dir at DOKKU_ROOT for VerifyAppName and
  ensure global config parent directory exists
- migrateGlobalEnv: set dokku:dokku ownership on global ENV file after
  writing so deploy processes running as dokku can read it
2026-04-27 01:06:32 -04:00
Jose Diaz-Gonzalez
c3db713c27 fix: ensure app ENV directory exists at DOKKU_LIB_ROOT/config/{app}
The post-create trigger only created the property directory at
DOKKU_LIB_ROOT/config/config/{app}/, but getAppFile() writes the
ENV file to DOKKU_LIB_ROOT/config/{app}/ENV. Add setupAppConfigDir
to create and permission the ENV directory in both post-create and
install triggers, and clean it up on post-delete.
2026-04-27 01:06:32 -04:00
Jose Diaz-Gonzalez
17c549ee63 fix: run global env migration before listing apps and set DOKKU_LIB_ROOT in tests
- Move migrateGlobalEnv() before UnfilteredDokkuApps() so the global
  config directory is created even on fresh installs with no apps
- Add DOKKU_LIB_ROOT to Go test env vars in tests.mk
2026-04-27 01:06:32 -04:00
Jose Diaz-Gonzalez
d846324fd5 fix: correct global env path, migration join, and test app dirs
- Use DOKKU_LIB_ROOT instead of DOKKU_ROOT in getGlobalFile() to match
  the intended new config path layout
- Add missing comma in filepath.Join for old app ENV migration path
- Revert common_test.go app dirs to DOKKU_ROOT since app detection
  still uses AppRoot()
2026-04-27 01:06:32 -04:00
Jose Diaz-Gonzalez
bc4d3a76b9 Update docs/appendices/0.37-migration-guide.md
Co-authored-by: othercorey <corey.taylor.fl@gmail.com>
2026-04-27 01:06:32 -04:00
Jose Diaz-Gonzalez
30e4123949 fix: migrate global env vars 2026-04-27 01:06:31 -04:00
Jose Diaz-Gonzalez
81e6cdf5a5 fix: ensure config properties for an app are setup prior to usage 2026-04-27 01:06:31 -04:00
Jose Diaz-Gonzalez
f2f6e0b473 refactor: move the env files to the new path on upgrade
Refs #1558
2026-04-27 01:06:29 -04:00
Jose Diaz-Gonzalez
38c6b180af fix: reference env from config dir 2026-04-27 01:05:41 -04:00
Jose Diaz-Gonzalez
b8accfd463 docs: remove references to ENV file 2026-04-27 01:05:41 -04:00
Jose Diaz-Gonzalez
365e300eb6 Merge pull request #8506 from dokku/8499-add-format-json-support-to-nginx-report-and-git-report
Add --format json to git:report and nginx:report
2026-04-27 01:04:52 -04:00
Jose Diaz-Gonzalez
8ea9dd28ff Merge pull request #8259 from dokku/4498-post-create-env-support
Add post-create support for env key in app.json
2026-04-27 00:12:16 -04:00
Jose Diaz-Gonzalez
769d029b0d fix: verify piped git:auth password via netrc get 2026-04-27 00:08:05 -04:00
Jose Diaz-Gonzalez
66c4b3b30e feat: add --format json to git:report and nginx:report
Mirrors the JSON output convention already used by scheduler:report, builder:report, network:report, and traefik:report. Both plugins now accept `--format json` to emit a single-line JSON object whose keys are the property names with the plugin prefix stripped. Combining `--format` with an info flag is rejected with an error message that matches the Go-based report helper.

Closes #8499
2026-04-26 23:30:22 -04:00
Jose Diaz-Gonzalez
65bdbefbea feat: add git:auth-status to check netrc match
Adds `git:auth-status HOST [USERNAME] [PASSWORD]` which exits 0 when the
configured `.netrc` entry matches the requested state and 1 otherwise,
allowing external tooling to detect whether `git:auth` would change
anything without reading `$DOKKU_ROOT/.netrc` directly. Both `git:auth`
and `git:auth-status` now also accept the password via `STDIN`.
2026-04-26 23:10:30 -04:00
Jose Diaz-Gonzalez
3ba51725be fix(tests): adapt app.json fixtures and tini test for env processing
Pre-set LOCAL_DOMAIN in the tini test so mastodon's required env var
resolves, and replace unsupported `generator: "echo 5"` with `value: "5"`
in the nodejs-express and dockerfile fixtures so WEB_CONCURRENCY no
longer aborts deploys via the new app.json env processor.
2026-04-26 22:43:32 -04:00
Jose Diaz-Gonzalez
34c336c668 feat: add post-create support for env key in app.json
Closes #4498
2026-04-26 22:43:32 -04:00
Jose Diaz-Gonzalez
ad00918891 Merge pull request #8490 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/kubernetes-1.36.0
chore(deps): bump k8s.io/kubernetes from 1.35.4 to 1.36.0 in /plugins/scheduler-k3s
2026-04-26 22:41:08 -04:00
dependabot[bot]
ef51f1f942 chore(deps): bump k8s.io/kubernetes in /plugins/scheduler-k3s
Bumps [k8s.io/kubernetes](https://github.com/kubernetes/kubernetes) from 1.35.4 to 1.36.0.
- [Release notes](https://github.com/kubernetes/kubernetes/releases)
- [Commits](https://github.com/kubernetes/kubernetes/compare/v1.35.4...v1.36.0)

---
updated-dependencies:
- dependency-name: k8s.io/kubernetes
  dependency-version: 1.36.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-26 12:15:40 -04:00
Jose Diaz-Gonzalez
68dd1b83a2 Merge pull request #8495 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/apimachinery-0.36.0
chore(deps): bump k8s.io/apimachinery from 0.35.4 to 0.36.0 in /plugins/scheduler-k3s
2026-04-26 12:14:25 -04:00
dependabot[bot]
76f3c3ec12 chore(deps): bump k8s.io/apimachinery in /plugins/scheduler-k3s
Bumps [k8s.io/apimachinery](https://github.com/kubernetes/apimachinery) from 0.35.4 to 0.36.0.
- [Commits](https://github.com/kubernetes/apimachinery/compare/v0.35.4...v0.36.0)

---
updated-dependencies:
- dependency-name: k8s.io/apimachinery
  dependency-version: 0.36.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-26 11:18:46 -04:00
Jose Diaz-Gonzalez
b8e5c3251c Merge pull request #8494 from dokku/dependabot/docker/plugins/openresty-vhosts/dokku/openresty-docker-proxy-0.10.0
chore(deps): bump dokku/openresty-docker-proxy from 0.9.3 to 0.10.0 in /plugins/openresty-vhosts
2026-04-26 11:15:52 -04:00
Jose Diaz-Gonzalez
de0e743880 Merge pull request #8502 from dokku/upgrade-to-go126
Bump go version to 1.26.2
2026-04-26 11:15:32 -04:00
Jose Diaz-Gonzalez
cef1e7aff5 chore: bump go version to 1.26.2 and run go mod tidy 2026-04-26 09:57:35 -04:00
Jose Diaz-Gonzalez
052b342c65 Merge pull request #8503 from dokku/chore/bump-dependencies
Bump dependency versions and add daily updater workflow
2026-04-26 09:57:22 -04:00
Jose Diaz-Gonzalez
f5cbc51fec fix(tests): drop DOKKU_PROXY_PORT from config:show and config:export expectations now that it lives as a property rather than a config var 2026-04-26 08:53:27 -04:00
Jose Diaz-Gonzalez
ef430e815b chore: use Dokku Bot identity for dependency update PRs
Switches the dependency-updates workflow to use HOMEBREW_GITHUB_API_TOKEN
(the same PAT used to bump the homebrew formula on release) and sets
the committer/author to Dokku Bot <no-reply@dokku.com>.
2026-04-26 08:06:47 -04:00
Jose Diaz-Gonzalez
ed2fbf3d44 chore: bump dependency versions and add daily updater workflow
Bumps every entry in contrib/dependencies.json to its latest upstream
release. Adds a scheduled GitHub Actions workflow that checks each
dependency once a day and opens one PR per outdated entry.
2026-04-26 08:00:12 -04:00
Jose Diaz-Gonzalez
207a32e6ae Merge pull request #8403 from dokku/upgrade-ingress-nginx
Upgrade ingress-nginx chart from 4.10.0 to 4.14.4
2026-04-26 04:52:28 -04:00
Jose Diaz-Gonzalez
973f6ffb2c chore: upgrade to 4.15.1 2026-04-26 04:52:05 -04:00
Jose Diaz-Gonzalez
bc3b166ce7 Merge pull request #8404 from dokku/upgrade-vector
feat: upgrade vector chart from 0.42.0 to 0.52.0
2026-04-26 04:50:24 -04:00
Jose Diaz-Gonzalez
4af68e75c5 chore: upgrade the vector helm chart to 0.52.0 2026-04-26 04:46:05 -04:00
Jose Diaz-Gonzalez
807ddf29a7 fix: update helm chart values for k3s scheduler
- Mount `/vector-data-dir` from host (`/var/lib/vector` via `hostPath`, `DirectoryOrCreate`) so `kubernetes_logs` checkpoints survive pod restarts; resolves conflict with the chart's read-only `/var/lib` default volume
- Enable Vector API on `:8686` and wire HTTP `/health` liveness and readiness probes; add `internal_metrics` source and `prometheus_exporter` sink on `:9090` so the `prom-exporter` service port is actually backed by an exporter
- Set explicit `targetPort` on the `prom-exporter` port to avoid inference mismatches
- Remove the `.message = .message` no-op
- Add `node-role.kubernetes.io/control-plane` toleration alongside the legacy `master` key so the DaemonSet schedules on control-plane nodes regardless of cluster age
2026-04-26 04:45:15 -04:00
Jose Diaz-Gonzalez
1158db380a Merge pull request #8493 from dokku/6760-build-empty-nginx-config-when-there-are-no-web-processes
Generate 502 config for apps without web listeners
2026-04-26 04:08:17 -04:00
Jose Diaz-Gonzalez
0a6eb14dd1 Merge pull request #8157 from dokku/7102-buildpacks-app-json
Add support for specifying buildpacks via app.json
2026-04-26 04:07:14 -04:00
Jose Diaz-Gonzalez
f30da59b84 Merge pull request #8498 from dokku/migrate-env-vars-to-properties
Migrate environment variables to plugin properties
2026-04-26 04:05:59 -04:00
Dokku Bot
9324ccf5b9 Release 0.37.10
# History

## 0.37.10

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.37.10/bootstrap.sh
sudo DOKKU_TAG=v0.37.10 bash bootstrap.sh
```

### Tests

- #8491: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 285 to 287 in /tests/apps/php
- #8478: @josegonzalez chore: label test app dependency updates as type: tests

### Dependencies

- #8486: @dependabot[bot] chore(deps): bump click from 8.3.2 to 8.3.3 in /docs/_build
- #8492: @dependabot[bot] chore(deps): bump github.com/fluxcd/pkg/kustomize from 1.29.0 to 1.31.0 in /plugins/scheduler-k3s
- #8489: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.11.42 to 2.11.43 in /plugins/scheduler-k3s
- #8488: @dependabot[bot] chore(deps): bump timberio/vector from 0.54.0-debian to 0.55.0-debian in /plugins/logs
- #8487: @dependabot[bot] chore(deps): bump traefik from v3.6.13 to v3.6.14 in /plugins/traefik-vhosts
- #8483: @dependabot[bot] chore(deps): update markdown requirement from <3.11,>=3.2.1 to >=3.10.2,<3.11 in /docs/_build
- #8485: @dependabot[bot] chore(deps): bump k8s.io/kubectl from 0.35.2 to 0.35.4 in /plugins/scheduler-k3s
- #8484: @dependabot[bot] chore(deps): bump k8s.io/client-go from 0.35.2 to 0.35.4 in /plugins/scheduler-k3s
- #8482: @dependabot[bot] chore(deps): bump ruby from 4.0.2 to 4.0.3 in /tests/apps/dockerfile-entrypoint
- #8481: @dependabot[bot] chore(deps): bump psycopg2-binary from 2.9.11 to 2.9.12 in /tests/apps/dockerfile-release
- #8479: @dependabot[bot] chore(deps): bump github.com/go-openapi/jsonpointer from 0.23.0 to 0.23.1 in /plugins/scheduler-k3s
- #8480: @dependabot[bot] chore(deps): bump k8s.io/kubernetes from 1.35.3 to 1.35.4 in /plugins/scheduler-k3s
2026-04-26 04:07:58 +00:00
Jose Diaz-Gonzalez
c7afc0523d fix: maintain backward compatibility for proxy:set command
proxy:set <app> <proxy-type> continues to work as before by detecting
when the first argument is not a known property name and treating it
as the type value. Also preserves the port mapping detection error
for inputs containing colons.
2026-04-25 18:07:10 -04:00
Jose Diaz-Gonzalez
915172c0c5 fix: move proxy-port properties to proxy plugin and fix CI failures
- Move proxy-port and proxy-ssl-port properties from ports plugin to
  proxy plugin where they conceptually belong
- Generalize proxy:set to handle any property (matching ps:set pattern)
  instead of only handling the type property
- Fix apps:set --global flag parsing (pflag treats --global as a flag,
  not an argument — must be defined explicitly like ps:set does)
- Add missing property-functions source to scheduler-docker-local
  shell scripts (scheduler-enter, scheduler-run, scheduler-deploy,
  check-deploy, bin/scheduler-deploy-process-container)
- Update nginx-vhosts property references from ports to proxy plugin
- Update tests to use proxy:set for proxy-port properties
2026-04-25 17:19:42 -04:00
Jose Diaz-Gonzalez
24f460f5d3 fix: address CI failures from env var migration
- Add apps:set subcommand for managing apps properties (mirrors
  ps:set, scheduler:set, builder:set pattern)
- Update nginx-vhosts functions/pre-disable-vhost/pre-enable-vhost
  to read proxy port from properties instead of config vars
- Fix test commands to use correct property-setting approaches:
  prop binary for ports properties, apps:set for apps properties
2026-04-25 16:33:34 -04:00
Jose Diaz-Gonzalez
1308e21947 feat: migrate environment variables to plugin properties
Standardize how environment variables are migrated to properties during
install triggers and migrate all remaining DOKKU_* config vars to their
appropriate plugin properties.

Adds a reusable MigrateConfigToProperties() function in the common
package with Transform callback and ListProperty support, plus a
migrate-config-to-property subcommand for the prop binary so shell
plugins can use the same code path.

Migrated variables and their new property owners:
- DOKKU_APP_PROXY_TYPE/DOKKU_PROXY_TYPE → proxy type
- DOKKU_DISABLE_PROXY → proxy disabled
- DOKKU_PROXY_PORT → ports proxy-port
- DOKKU_PROXY_SSL_PORT → ports proxy-ssl-port
- DOKKU_APP_RESTORE → ps restore
- DOKKU_SKIP_DEPLOY → ps skip-deploy
- DOKKU_START_CMD → ps start-cmd
- DOKKU_DOCKERFILE_START_CMD → ps dockerfile-start-cmd
- DOKKU_DISABLE_APP_AUTOCREATION → apps disable-autocreation
- DOKKU_APP_SHELL → scheduler shell
- DOKKU_SKIP_CLEANUP → builder skip-cleanup
- DOKKU_CHECKS_DISABLED → checks disabled
- DOKKU_CHECKS_SKIPPED → checks skipped
- DOKKU_CHECKS_WAIT → checks wait
- DOKKU_CHECKS_TIMEOUT → checks timeout
- DOKKU_CHECKS_ATTEMPTS → checks attempts
- DOKKU_DEFAULT_CHECKS_WAIT → checks default-wait
- DOKKU_SKIP_ALL_CHECKS → checks disabled (legacy)
- DOKKU_SKIP_DEFAULT_CHECKS → checks skipped (legacy)

Also refactors existing bespoke migration loops in scheduler, ports, ps,
builder, and nginx-vhosts plugins to use the standardized utility.

Removes DOKKU_PARALLEL_ARGUMENTS from documentation (unused in core).
Deprecates fn-migrate-config-to-property bash function.

closes #1558
2026-04-25 05:11:07 -04:00
apple
89e359ae7d 更新 letsencrypt
Some checks failed
CodeQL / Analyze (go) (push) Has been cancelled
2026-04-25 14:14:39 +08:00
apple
96812e7ed4 Merge branch 'master' into cn
* master:
  chore(deps): bump github.com/fluxcd/pkg/kustomize
  chore(deps-dev): bump heroku/heroku-buildpack-php in /tests/apps/php
  chore(deps): bump github.com/traefik/traefik/v2
  chore(deps): bump timberio/vector in /plugins/logs
  chore(deps): bump traefik in /plugins/traefik-vhosts
  chore(deps): bump click from 8.3.2 to 8.3.3 in /docs/_build
  chore(deps): bump k8s.io/kubectl in /plugins/scheduler-k3s
  chore(deps): bump k8s.io/client-go in /plugins/scheduler-k3s
  chore(deps): update markdown requirement in /docs/_build
  chore(deps): bump ruby in /tests/apps/dockerfile-entrypoint
  chore(deps): bump psycopg2-binary in /tests/apps/dockerfile-release
  chore(deps): bump k8s.io/kubernetes in /plugins/scheduler-k3s
  chore(deps): bump github.com/go-openapi/jsonpointer
  chore: label test app dependency updates as type: tests
2026-04-25 14:13:20 +08:00
Jose Diaz-Gonzalez
2745e46054 fix(tests): expect 502 for cloned app without deploy
The apps:clone --skip-deploy test expected 404 for the cloned app's
domain. With the new empty nginx config, undeployed apps now correctly
return 502 Bad Gateway instead of falling through to nginx's default.
2026-04-25 00:55:55 -04:00
dependabot[bot]
f3e29c7c94 chore(deps): bump dokku/openresty-docker-proxy
Bumps dokku/openresty-docker-proxy from 0.9.3 to 0.10.0.

---
updated-dependencies:
- dependency-name: dokku/openresty-docker-proxy
  dependency-version: 0.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-24 13:53:53 +00:00
Jose Diaz-Gonzalez
ddf470282e fix(tests): update config and nginx tests for post-create side effects
The config:show and config:export tests now include DOKKU_PROXY_PORT
in expected output since ports-configure runs at app creation time.

Add sleep before HTTP assertion in nginx-vhosts_13 test to allow
nginx async reload to complete.
2026-04-24 05:02:49 -04:00
Jose Diaz-Gonzalez
dcce09f19f fix(nginx): skip post-create config when nginx is stopped
When nginx is stopped (e.g. during traefik/caddy tests), the
post-create trigger should not attempt to build and reload the
nginx config as the service is not running.
2026-04-24 04:14:49 -04:00
Jose Diaz-Gonzalez
fc7ddf34ba fix(nginx): make post-create executable and guard empty port maps
The post-create trigger was not executable so plugn skipped it.
Also skip generating the 502 config when PROXY_PORT_MAP is empty
(e.g. after ports:clear) to avoid a sigil template index error.
2026-04-24 03:57:22 -04:00
Jose Diaz-Gonzalez
7529d8cb08 refactor(nginx): deduplicate sigil params in nginx_build_config
Merge the deployed and empty-listeners branches into a single flow
that shares the SIGIL_PARAMS array, temp dir setup, sigil rendering,
and nginx reload. Branch only for deployed-specific logic: image
verification, custom template lookup, per-process listeners, and HSTS.
2026-04-24 03:04:04 -04:00
Jose Diaz-Gonzalez
20f2100d46 docs: add 0.38.0 migration guide with nginx.conf.sigil update notes
Custom nginx.conf.sigil templates that reference DOKKU_APP_WEB_LISTENERS
may now receive an empty value when rendered for apps without running web
processes. The migration guide documents how to handle this with a
conditional in the template.
2026-04-24 02:54:22 -04:00
Jose Diaz-Gonzalez
5bf82d2585 docs: add note about when the new feature lands 2026-04-24 02:40:27 -04:00
Jose Diaz-Gonzalez
2993fa800c feat(nginx): generate 502 config for apps without web listeners
When an app has no web listeners (not yet deployed, no web process type,
or web processes not running), generate a minimal nginx config that
returns 502 Bad Gateway instead of having no config at all. This ensures
domains resolve, monitoring tools detect non-200 status codes, and SSL
certificate provisioning tools like letsencrypt can function.
2026-04-24 02:10:30 -04:00
Jose Diaz-Gonzalez
71ec612fbd Merge pull request #8486 from dokku/dependabot/pip/docs/_build/click-8.3.3
chore(deps): bump click from 8.3.2 to 8.3.3 in /docs/_build
2026-04-24 00:13:21 -04:00
Jose Diaz-Gonzalez
914be7276f Merge pull request #8492 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/fluxcd/pkg/kustomize-1.31.0
chore(deps): bump github.com/fluxcd/pkg/kustomize from 1.29.0 to 1.31.0 in /plugins/scheduler-k3s
2026-04-23 14:37:05 -04:00
dependabot[bot]
ae5cbe1e98 chore(deps): bump github.com/fluxcd/pkg/kustomize
Bumps [github.com/fluxcd/pkg/kustomize](https://github.com/fluxcd/pkg) from 1.29.0 to 1.31.0.
- [Commits](https://github.com/fluxcd/pkg/compare/kustomize/v1.29.0...kustomize/v1.31.0)

---
updated-dependencies:
- dependency-name: github.com/fluxcd/pkg/kustomize
  dependency-version: 1.31.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-23 13:54:54 +00:00
Jose Diaz-Gonzalez
ce45b8fca3 Merge pull request #8491 from dokku/dependabot/composer/tests/apps/php/heroku/heroku-buildpack-php-287
chore(deps-dev): bump heroku/heroku-buildpack-php from 285 to 287 in /tests/apps/php
2026-04-23 04:46:40 -04:00
Jose Diaz-Gonzalez
8cebe9270a Merge pull request #8489 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/traefik/traefik/v2-2.11.43
chore(deps): bump github.com/traefik/traefik/v2 from 2.11.42 to 2.11.43 in /plugins/scheduler-k3s
2026-04-23 04:46:16 -04:00
Jose Diaz-Gonzalez
6ad2e13f32 Merge pull request #8488 from dokku/dependabot/docker/plugins/logs/timberio/vector-0.55.0-debian
chore(deps): bump timberio/vector from 0.54.0-debian to 0.55.0-debian in /plugins/logs
2026-04-23 04:45:58 -04:00
Jose Diaz-Gonzalez
8721db17c2 Merge pull request #8487 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-v3.6.14
chore(deps): bump traefik from v3.6.13 to v3.6.14 in /plugins/traefik-vhosts
2026-04-23 04:45:26 -04:00
dependabot[bot]
9087d8d5d5 chore(deps-dev): bump heroku/heroku-buildpack-php in /tests/apps/php
Bumps [heroku/heroku-buildpack-php](https://github.com/heroku/heroku-buildpack-php) from 285 to 287.
- [Release notes](https://github.com/heroku/heroku-buildpack-php/releases)
- [Changelog](https://github.com/heroku/heroku-buildpack-php/blob/main/CHANGELOG.md)
- [Commits](https://github.com/heroku/heroku-buildpack-php/compare/v285...v287)

---
updated-dependencies:
- dependency-name: heroku/heroku-buildpack-php
  dependency-version: '287'
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-23 05:12:06 +00:00
dependabot[bot]
3e417a15df chore(deps): bump github.com/traefik/traefik/v2
Bumps [github.com/traefik/traefik/v2](https://github.com/traefik/traefik) from 2.11.42 to 2.11.43.
- [Release notes](https://github.com/traefik/traefik/releases)
- [Changelog](https://github.com/traefik/traefik/blob/v2.11.43/CHANGELOG.md)
- [Commits](https://github.com/traefik/traefik/compare/v2.11.42...v2.11.43)

---
updated-dependencies:
- dependency-name: github.com/traefik/traefik/v2
  dependency-version: 2.11.43
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-23 05:11:15 +00:00
dependabot[bot]
66373a4ce8 chore(deps): bump timberio/vector in /plugins/logs
Bumps timberio/vector from 0.54.0-debian to 0.55.0-debian.

---
updated-dependencies:
- dependency-name: timberio/vector
  dependency-version: 0.55.0-debian
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-23 05:10:42 +00:00
dependabot[bot]
c3a5e59045 chore(deps): bump traefik in /plugins/traefik-vhosts
Bumps traefik from v3.6.13 to v3.6.14.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: v3.6.14
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-23 05:10:40 +00:00
dependabot[bot]
1024d65d8c chore(deps): bump click from 8.3.2 to 8.3.3 in /docs/_build
Bumps [click](https://github.com/pallets/click) from 8.3.2 to 8.3.3.
- [Release notes](https://github.com/pallets/click/releases)
- [Changelog](https://github.com/pallets/click/blob/8.3.3/CHANGES.rst)
- [Commits](https://github.com/pallets/click/compare/8.3.2...8.3.3)

---
updated-dependencies:
- dependency-name: click
  dependency-version: 8.3.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-23 05:10:17 +00:00
Jose Diaz-Gonzalez
80d2ed5aa3 Merge pull request #8478 from dokku/8477-omit-irrelevant-dep-bump-changelog-entries
chore: label test app dependency updates as type: tests
2026-04-23 01:09:21 -04:00
Jose Diaz-Gonzalez
f13501ae3e Merge pull request #8483 from dokku/dependabot/pip/docs/_build/markdown-gte-3.10.2-and-lt-3.11
chore(deps): update markdown requirement from <3.11,>=3.2.1 to >=3.10.2,<3.11 in /docs/_build
2026-04-22 13:56:52 -04:00
Jose Diaz-Gonzalez
621a9a218d Merge pull request #8485 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/kubectl-0.35.4
chore(deps): bump k8s.io/kubectl from 0.35.2 to 0.35.4 in /plugins/scheduler-k3s
2026-04-22 13:56:35 -04:00
dependabot[bot]
d487b595d4 chore(deps): bump k8s.io/kubectl in /plugins/scheduler-k3s
Bumps [k8s.io/kubectl](https://github.com/kubernetes/kubectl) from 0.35.2 to 0.35.4.
- [Commits](https://github.com/kubernetes/kubectl/compare/v0.35.2...v0.35.4)

---
updated-dependencies:
- dependency-name: k8s.io/kubectl
  dependency-version: 0.35.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-22 16:15:35 +00:00
Jose Diaz-Gonzalez
338bceb20e Merge pull request #8484 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/client-go-0.35.4
chore(deps): bump k8s.io/client-go from 0.35.2 to 0.35.4 in /plugins/scheduler-k3s
2026-04-22 12:13:36 -04:00
Jose Diaz-Gonzalez
107b5f5f0a Merge pull request #8482 from dokku/dependabot/docker/tests/apps/dockerfile-entrypoint/ruby-4.0.3
chore(deps): bump ruby from 4.0.2 to 4.0.3 in /tests/apps/dockerfile-entrypoint
2026-04-22 12:13:24 -04:00
dependabot[bot]
fe3d5c25dd chore(deps): bump k8s.io/client-go in /plugins/scheduler-k3s
Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.35.2 to 0.35.4.
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kubernetes/client-go/compare/v0.35.2...v0.35.4)

---
updated-dependencies:
- dependency-name: k8s.io/client-go
  dependency-version: 0.35.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-22 13:54:32 +00:00
dependabot[bot]
351ca493d3 chore(deps): update markdown requirement in /docs/_build
Updates the requirements on [markdown](https://github.com/Python-Markdown/markdown) to permit the latest version.
- [Release notes](https://github.com/Python-Markdown/markdown/releases)
- [Changelog](https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md)
- [Commits](https://github.com/Python-Markdown/markdown/compare/3.2.1...3.10.2)

---
updated-dependencies:
- dependency-name: markdown
  dependency-version: 3.10.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-22 13:53:32 +00:00
dependabot[bot]
424ecb96dc chore(deps): bump ruby in /tests/apps/dockerfile-entrypoint
Bumps ruby from 4.0.2 to 4.0.3.

---
updated-dependencies:
- dependency-name: ruby
  dependency-version: 4.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-22 13:53:09 +00:00
Jose Diaz-Gonzalez
5f99b683ee Merge pull request #8481 from dokku/dependabot/pip/tests/apps/dockerfile-release/psycopg2-binary-2.9.12
chore(deps): bump psycopg2-binary from 2.9.11 to 2.9.12 in /tests/apps/dockerfile-release
2026-04-21 23:16:19 -04:00
Jose Diaz-Gonzalez
387bbf4c8a Merge pull request #8479 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/go-openapi/jsonpointer-0.23.1
chore(deps): bump github.com/go-openapi/jsonpointer from 0.23.0 to 0.23.1 in /plugins/scheduler-k3s
2026-04-21 23:16:10 -04:00
Jose Diaz-Gonzalez
0caab03276 Merge pull request #8480 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/kubernetes-1.35.4
chore(deps): bump k8s.io/kubernetes from 1.35.3 to 1.35.4 in /plugins/scheduler-k3s
2026-04-21 23:16:04 -04:00
dependabot[bot]
9dbaf34f99 chore(deps): bump psycopg2-binary in /tests/apps/dockerfile-release
Bumps [psycopg2-binary](https://github.com/psycopg/psycopg2) from 2.9.11 to 2.9.12.
- [Changelog](https://github.com/psycopg/psycopg2/blob/master/NEWS)
- [Commits](https://github.com/psycopg/psycopg2/compare/2.9.11...2.9.12)

---
updated-dependencies:
- dependency-name: psycopg2-binary
  dependency-version: 2.9.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-21 13:54:44 +00:00
dependabot[bot]
0ee28bf4c7 chore(deps): bump k8s.io/kubernetes in /plugins/scheduler-k3s
Bumps [k8s.io/kubernetes](https://github.com/kubernetes/kubernetes) from 1.35.3 to 1.35.4.
- [Release notes](https://github.com/kubernetes/kubernetes/releases)
- [Commits](https://github.com/kubernetes/kubernetes/compare/v1.35.3...v1.35.4)

---
updated-dependencies:
- dependency-name: k8s.io/kubernetes
  dependency-version: 1.35.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-20 16:18:29 +00:00
dependabot[bot]
d91ed9f683 chore(deps): bump github.com/go-openapi/jsonpointer
Bumps [github.com/go-openapi/jsonpointer](https://github.com/go-openapi/jsonpointer) from 0.23.0 to 0.23.1.
- [Release notes](https://github.com/go-openapi/jsonpointer/releases)
- [Commits](https://github.com/go-openapi/jsonpointer/compare/v0.23.0...v0.23.1)

---
updated-dependencies:
- dependency-name: github.com/go-openapi/jsonpointer
  dependency-version: 0.23.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-20 16:18:19 +00:00
apple
72de4581be Merge branch 'master' into cn
Some checks failed
CodeQL / Analyze (go) (push) Failing after 1m9s
* master: (35 commits)
  Release 0.37.9
  chore(deps): bump github.com/go-acme/lego/v4 in /plugins/scheduler-k3s
  chore(deps): bump github.com/moby/spdystream in /plugins/scheduler-k3s
  chore(deps): bump github.com/go-openapi/jsonpointer
  chore(deps): bump k8s.io/api in /plugins/scheduler-k3s
  Release 0.37.8
  chore(deps): bump k8s.io/apimachinery in /plugins/scheduler-k3s
  chore(deps): bump k8s.io/kubernetes in /plugins/scheduler-k3s
  chore(deps): bump packaging from 26.0 to 26.1 in /docs/_build
  chore(deps): bump github.com/fluxcd/pkg/kustomize
  chore(deps): bump zipp from 3.23.0 to 3.23.1 in /docs/_build
  fix(deps): pin controller-runtime to v0.22.4 for keda compatibility
  chore(deps): bump github.com/cert-manager/cert-manager
  chore: bump dependencies in tests/apps/php
  chore: upgrade traefik from v2.11.41 to v2.11.42
  chore: bump go modules
  chore(deps): bump mvdan.cc/sh/v3 from 3.13.0 to 3.13.1 in /plugins/cron
  chore: bump dependencies in tests/apps/multi
  chore: bump go modules
  chore: bump go modules
  ...
2026-04-20 13:59:23 +08:00
Jose Diaz-Gonzalez
197dc69056 chore: label test app dependency updates as type: tests
Move dependabot entries for /tests/apps/ directories from the
"type: dependencies" label to "type: tests" so they appear under
the Tests section in the changelog instead of Dependencies.
2026-04-19 19:02:59 -04:00
Jose Diaz-Gonzalez
08596c9648 fix: skip app.json buildpacks for image-based deploys
When deploying via git:from-image, the source image may contain an
app.json with buildpacks entries that are not relevant. Check for
the source-image property and skip app.json buildpacks when set.
2026-04-18 20:29:05 -04:00
Jose Diaz-Gonzalez
b0b11bcf26 fix: remove buildpacks from dockerfile test app and add tests for app.json buildpacks
The buildpacks entry in tests/apps/dockerfile/app.json caused
the post-extract trigger to write a .buildpacks file during
Dockerfile-based deploys, breaking builder detection. Remove
the entry and add Go unit tests for getBuildpacks/validBuildpackURL,
a bats integration test for deploying with app.json buildpacks,
and documentation for the new feature.
2026-04-18 05:43:44 -04:00
Jose Diaz-Gonzalez
44dbbe6a34 fix: return buildpacks specified by the buildpacks plugin 2026-04-18 04:15:53 -04:00
Jose Diaz-Gonzalez
5a787af3ae feat: add support for specifying buildpacks via app.json
The order of detection is:

- buildpacks:set
- app.json
- .buildpacks
- auto-detected from codebase

Closes #7102
2026-04-18 04:15:51 -04:00
Dokku Bot
996d882310 Release 0.37.9
# History

## 0.37.9

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.37.9/bootstrap.sh
sudo DOKKU_TAG=v0.37.9 bash bootstrap.sh
```

### Dependencies

- #8473: @dependabot[bot] chore(deps): bump k8s.io/api from 0.35.2 to 0.35.4 in /plugins/scheduler-k3s
- #8474: @dependabot[bot] chore(deps): bump github.com/go-openapi/jsonpointer from 0.22.5 to 0.23.0 in /plugins/scheduler-k3s
- #8476: @dependabot[bot] chore(deps): bump github.com/go-acme/lego/v4 from 4.25.2 to 4.34.0 in /plugins/scheduler-k3s
- #8475: @dependabot[bot] chore(deps): bump github.com/moby/spdystream from 0.5.0 to 0.5.1 in /plugins/scheduler-k3s
2026-04-18 07:40:42 +00:00
Jose Diaz-Gonzalez
b686a8f8a4 Merge pull request #8473 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/api-0.35.4
chore(deps): bump k8s.io/api from 0.35.2 to 0.35.4 in /plugins/scheduler-k3s
2026-04-18 01:59:51 -04:00
Jose Diaz-Gonzalez
6806b1c17b Merge pull request #8474 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/go-openapi/jsonpointer-0.23.0
chore(deps): bump github.com/go-openapi/jsonpointer from 0.22.5 to 0.23.0 in /plugins/scheduler-k3s
2026-04-18 01:59:40 -04:00
Jose Diaz-Gonzalez
cacafbc181 Merge pull request #8476 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/go-acme/lego/v4-4.34.0
chore(deps): bump github.com/go-acme/lego/v4 from 4.25.2 to 4.34.0 in /plugins/scheduler-k3s
2026-04-18 01:59:15 -04:00
Jose Diaz-Gonzalez
71db1e24ec Merge pull request #8475 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/moby/spdystream-0.5.1
chore(deps): bump github.com/moby/spdystream from 0.5.0 to 0.5.1 in /plugins/scheduler-k3s
2026-04-16 17:48:03 -04:00
dependabot[bot]
2acfdbd7d4 chore(deps): bump github.com/go-acme/lego/v4 in /plugins/scheduler-k3s
Bumps [github.com/go-acme/lego/v4](https://github.com/go-acme/lego) from 4.25.2 to 4.34.0.
- [Release notes](https://github.com/go-acme/lego/releases)
- [Changelog](https://github.com/go-acme/lego/blob/master/CHANGELOG.md)
- [Commits](https://github.com/go-acme/lego/compare/v4.25.2...v4.34.0)

---
updated-dependencies:
- dependency-name: github.com/go-acme/lego/v4
  dependency-version: 4.34.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-16 21:31:12 +00:00
dependabot[bot]
fd6c2c5f62 chore(deps): bump github.com/moby/spdystream in /plugins/scheduler-k3s
Bumps [github.com/moby/spdystream](https://github.com/moby/spdystream) from 0.5.0 to 0.5.1.
- [Release notes](https://github.com/moby/spdystream/releases)
- [Commits](https://github.com/moby/spdystream/compare/v0.5.0...v0.5.1)

---
updated-dependencies:
- dependency-name: github.com/moby/spdystream
  dependency-version: 0.5.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-16 20:50:59 +00:00
dependabot[bot]
d1aeb04797 chore(deps): bump github.com/go-openapi/jsonpointer
Bumps [github.com/go-openapi/jsonpointer](https://github.com/go-openapi/jsonpointer) from 0.22.5 to 0.23.0.
- [Release notes](https://github.com/go-openapi/jsonpointer/releases)
- [Commits](https://github.com/go-openapi/jsonpointer/compare/v0.22.5...v0.23.0)

---
updated-dependencies:
- dependency-name: github.com/go-openapi/jsonpointer
  dependency-version: 0.23.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-16 13:54:30 +00:00
dependabot[bot]
5923689e32 chore(deps): bump k8s.io/api in /plugins/scheduler-k3s
Bumps [k8s.io/api](https://github.com/kubernetes/api) from 0.35.2 to 0.35.4.
- [Commits](https://github.com/kubernetes/api/compare/v0.35.2...v0.35.4)

---
updated-dependencies:
- dependency-name: k8s.io/api
  dependency-version: 0.35.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-16 13:54:26 +00:00
Dokku Bot
a4cf06bd15 Release 0.37.8
# History

## 0.37.8

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.37.8/bootstrap.sh
sudo DOKKU_TAG=v0.37.8 bash bootstrap.sh
```

### Bug Fixes

- #8451: @mykolasolodukha Fix client prepending `--app` for non-app commands

### New Features

- #8443: @chemicalkosek Add application/graphql-response+json to nginx gzip_types

### Dependencies

- #8470: @dependabot[bot] chore(deps): bump packaging from 26.0 to 26.1 in /docs/_build
- #8471: @dependabot[bot] chore(deps): bump k8s.io/kubernetes from 1.35.0 to 1.35.3 in /plugins/scheduler-k3s
- #8472: @dependabot[bot] chore(deps): bump k8s.io/apimachinery from 0.35.2 to 0.35.3 in /plugins/scheduler-k3s
- #8413: @dependabot[bot] chore(deps): bump github.com/fluxcd/pkg/kustomize from 1.24.0 to 1.28.0 in /plugins/scheduler-k3s
- #8425: @dependabot[bot] chore(deps): bump github.com/cert-manager/cert-manager from 1.19.3 to 1.20.0 in /plugins/scheduler-k3s
- #8469: @dependabot[bot] chore(deps): bump zipp from 3.23.0 to 3.23.1 in /docs/_build
- #8450: @dependabot[bot] chore(deps): bump mvdan.cc/sh/v3 from 3.13.0 to 3.13.1 in /plugins/cron
- #8465: @dependabot[bot] chore(deps): bump github.com/joho/godotenv from 1.2.0 to 1.5.1 in /plugins/config
- #8463: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.49.0 to 0.50.0 in /plugins/common
- #8449: @dependabot[bot] chore(deps): bump click from 8.3.1 to 8.3.2 in /docs/_build
- #8464: @dependabot[bot] chore(deps): bump helm.sh/helm/v3 from 3.20.1 to 3.20.2 in /plugins/scheduler-k3s
- #8458: @dependabot[bot] chore(deps): bump traefik from v3.6.12 to v3.6.13 in /plugins/traefik-vhosts
- #8457: @dependabot[bot] chore(deps): bump golang from 1.26.1 to 1.26.2 in /tests/apps/zombies-dockerfile-no-tini
- #8456: @dependabot[bot] chore(deps): bump golang from 1.26.1 to 1.26.2 in /tests/apps/go-fail-postdeploy
- #8455: @dependabot[bot] chore(deps): bump golang from 1.26.1 to 1.26.2 in /tests/apps/gogrpc
- #8454: @dependabot[bot] chore(deps): bump golang from 1.26.1 to 1.26.2 in /tests/apps/zombies-dockerfile-tini
- #8453: @dependabot[bot] chore(deps): bump golang from 1.26.1 to 1.26.2 in /tests/apps/go-fail-predeploy
- #8452: @dependabot[bot] chore(deps): bump rack-session from 2.1.1 to 2.1.2 in /tests/apps/ruby
- #8459: @dependabot[bot] chore(deps): bump django from 5.2.12 to 5.2.13 in /tests/apps/dockerfile-release
- #8444: @dependabot[bot] chore(deps): bump rack from 3.2.5 to 3.2.6 in /tests/apps/ruby
- #8445: @dependabot[bot] chore(deps): bump github.com/go-jose/go-jose/v4 from 4.1.3 to 4.1.4 in /plugins/scheduler-k3s
- #8447: @dependabot[bot] chore(deps): bump werkzeug from 3.1.7 to 3.1.8 in /tests/apps/python-flask
- #8440: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.21 to 10.21.2 in /docs/_build
- #8441: @dependabot[bot] chore(deps): bump pygments from 2.19.2 to 2.20.0 in /docs/_build
- #8442: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.79.3 to 1.80.0 in /tests/apps/gogrpc
- #8410: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.48.0 to 0.49.0 in /plugins/common
- #8422: @dependabot[bot] chore(deps): bump github.com/fatih/color from 1.18.0 to 1.19.0 in /plugins/common
- #8434: @dependabot[bot] chore(deps): bump gunicorn from 25.2.0 to 25.3.0 in /tests/apps/python-flask
- #8439: @dependabot[bot] chore(deps): bump brace-expansion from 1.1.12 to 1.1.13 in /tests/apps/multi
- #8438: @dependabot[bot] chore(deps): bump path-to-regexp from 8.2.0 to 8.4.0 in /tests/apps/checks-root
- #8437: @dependabot[bot] chore(deps): bump gunicorn from 25.2.0 to 25.3.0 in /tests/apps/dockerfile-release
- #8436: @dependabot[bot] chore(deps): bump traefik from v3.6.11 to v3.6.12 in /plugins/traefik-vhosts
- #8435: @dependabot[bot] chore(deps): bump gunicorn from 25.2.0 to 25.3.0 in /tests/apps/multi
- #8427: @dependabot[bot] chore(deps): bump werkzeug from 3.1.6 to 3.1.7 in /tests/apps/python-flask
- #8428: @dependabot[bot] chore(deps): bump gunicorn from 25.1.0 to 25.2.0 in /tests/apps/multi
- #8429: @dependabot[bot] chore(deps): bump gunicorn from 25.1.0 to 25.2.0 in /tests/apps/python-flask
- #8430: @dependabot[bot] chore(deps): bump djangorestframework from 3.17.0 to 3.17.1 in /tests/apps/dockerfile-release
- #8431: @dependabot[bot] chore(deps): bump gunicorn from 25.1.0 to 25.2.0 in /tests/apps/dockerfile-release
- #8432: @dependabot[bot] chore(deps): bump picomatch from 2.3.1 to 2.3.2 in /tests/apps/multi
- #8423: @dependabot[bot] chore(deps): bump traefik from v3.6.10 to v3.6.11 in /plugins/traefik-vhosts
- #8420: @dependabot[bot] chore(deps): bump mkdocs-material from 9.7.5 to 9.7.6 in /docs/_build
- #8421: @dependabot[bot] chore(deps): bump importlib-metadata from 8.8.0 to 9.0.0 in /docs/_build
- #8424: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.11.40 to 2.11.41 in /plugins/scheduler-k3s
- #8411: @dependabot[bot] chore(deps): bump lucaslorentz/caddy-docker-proxy from 2.11 to 2.12 in /plugins/caddy-vhosts
- #8412: @dependabot[bot] chore(deps): bump helm.sh/helm/v3 from 3.20.0 to 3.20.1 in /plugins/scheduler-k3s
- #8419: @dependabot[bot] chore(deps): bump djangorestframework from 3.16.1 to 3.17.0 in /tests/apps/dockerfile-release
- #8418: @dependabot[bot] chore(deps): bump importlib-metadata from 8.7.1 to 8.8.0 in /docs/_build
- #8417: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.77.0-dev to 1.79.3 in /plugins/scheduler-k3s
- #8416: @dependabot[bot] chore(deps): bump ruby from 4.0.1 to 4.0.2 in /tests/apps/dockerfile-entrypoint
- #8415: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.79.2 to 1.79.3 in /tests/apps/gogrpc
- #8409: @dependabot[bot] chore(deps): bump github.com/go-openapi/jsonpointer from 0.22.4 to 0.22.5 in /plugins/scheduler-k3s
- #8408: @dependabot[bot] chore(deps): bump github.com/go-resty/resty/v2 from 2.17.1 to 2.17.2 in /plugins/scheduler-k3s
- #8407: @dependabot[bot] chore(deps): bump mkdocs-material from 9.7.4 to 9.7.5 in /docs/_build
- #8406: @dependabot[bot] chore(deps): bump timberio/vector from 0.53.0-debian to 0.54.0-debian in /plugins/logs

### Other

- #8468: @josegonzalez chore: bump dependencies in tests/apps/php
- #8467: @josegonzalez chore: upgrade traefik from v2.11.41 to v2.11.42
- #8466: @josegonzalez chore: bump dependencies in tests/apps/multi
2026-04-16 04:12:27 +00:00
Jose Diaz-Gonzalez
f2933b864c Merge pull request #8470 from dokku/dependabot/pip/docs/_build/packaging-26.1
chore(deps): bump packaging from 26.0 to 26.1 in /docs/_build
2026-04-15 17:44:25 -04:00
Jose Diaz-Gonzalez
17656052f9 Merge pull request #8471 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/kubernetes-1.35.3
chore(deps): bump k8s.io/kubernetes from 1.35.0 to 1.35.3 in /plugins/scheduler-k3s
2026-04-15 17:42:37 -04:00
Jose Diaz-Gonzalez
b3853cfa3c Merge pull request #8472 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/apimachinery-0.35.3
chore(deps): bump k8s.io/apimachinery from 0.35.2 to 0.35.3 in /plugins/scheduler-k3s
2026-04-15 17:42:26 -04:00
dependabot[bot]
f6e2ecca1a chore(deps): bump k8s.io/apimachinery in /plugins/scheduler-k3s
Bumps [k8s.io/apimachinery](https://github.com/kubernetes/apimachinery) from 0.35.2 to 0.35.3.
- [Commits](https://github.com/kubernetes/apimachinery/compare/v0.35.2...v0.35.3)

---
updated-dependencies:
- dependency-name: k8s.io/apimachinery
  dependency-version: 0.35.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-15 13:54:54 +00:00
dependabot[bot]
2e605b6e0f chore(deps): bump k8s.io/kubernetes in /plugins/scheduler-k3s
Bumps [k8s.io/kubernetes](https://github.com/kubernetes/kubernetes) from 1.35.0 to 1.35.3.
- [Release notes](https://github.com/kubernetes/kubernetes/releases)
- [Commits](https://github.com/kubernetes/kubernetes/compare/v1.35.0...v1.35.3)

---
updated-dependencies:
- dependency-name: k8s.io/kubernetes
  dependency-version: 1.35.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-15 13:54:45 +00:00
dependabot[bot]
62da542f20 chore(deps): bump packaging from 26.0 to 26.1 in /docs/_build
Bumps [packaging](https://github.com/pypa/packaging) from 26.0 to 26.1.
- [Release notes](https://github.com/pypa/packaging/releases)
- [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pypa/packaging/compare/26.0...26.1)

---
updated-dependencies:
- dependency-name: packaging
  dependency-version: '26.1'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-15 13:53:35 +00:00
Jose Diaz-Gonzalez
53dfce384e Merge pull request #8413 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/fluxcd/pkg/kustomize-1.28.0
chore(deps): bump github.com/fluxcd/pkg/kustomize from 1.24.0 to 1.28.0 in /plugins/scheduler-k3s
2026-04-14 12:34:19 -04:00
dependabot[bot]
ded1a88f48 chore(deps): bump github.com/fluxcd/pkg/kustomize
Bumps [github.com/fluxcd/pkg/kustomize](https://github.com/fluxcd/pkg) from 1.24.0 to 1.28.0.
- [Commits](https://github.com/fluxcd/pkg/compare/apis/meta/v1.24.0...kustomize/v1.28.0)

---
updated-dependencies:
- dependency-name: github.com/fluxcd/pkg/kustomize
  dependency-version: 1.28.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-14 14:42:44 +00:00
Jose Diaz-Gonzalez
6fc840a1df Merge pull request #8425 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/cert-manager/cert-manager-1.20.0
chore(deps): bump github.com/cert-manager/cert-manager from 1.19.3 to 1.20.0 in /plugins/scheduler-k3s
2026-04-14 10:41:30 -04:00
Jose Diaz-Gonzalez
a8b30502d0 Merge pull request #8468 from dokku/dependencies/tests/apps/php
chore: bump dependencies in tests/apps/php
2026-04-14 10:41:11 -04:00
Jose Diaz-Gonzalez
2d3ce9b0b2 Merge pull request #8469 from dokku/dependabot/pip/docs/_build/zipp-3.23.1
chore(deps): bump zipp from 3.23.0 to 3.23.1 in /docs/_build
2026-04-14 10:40:51 -04:00
dependabot[bot]
207ffedc47 chore(deps): bump zipp from 3.23.0 to 3.23.1 in /docs/_build
Bumps [zipp](https://github.com/jaraco/zipp) from 3.23.0 to 3.23.1.
- [Release notes](https://github.com/jaraco/zipp/releases)
- [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/zipp/compare/v3.23.0...v3.23.1)

---
updated-dependencies:
- dependency-name: zipp
  dependency-version: 3.23.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-14 13:53:41 +00:00
Jose Diaz-Gonzalez
2d6ba95888 fix(deps): pin controller-runtime to v0.22.4 for keda compatibility
KEDA v2.18.3 webhook code is incompatible with controller-runtime
v0.23.x which was pulled in by the cert-manager v1.20.0 upgrade.
2026-04-14 05:04:11 -04:00
dependabot[bot]
59d20f4b59 chore(deps): bump github.com/cert-manager/cert-manager
Bumps [github.com/cert-manager/cert-manager](https://github.com/cert-manager/cert-manager) from 1.19.3 to 1.20.0.
- [Release notes](https://github.com/cert-manager/cert-manager/releases)
- [Changelog](https://github.com/cert-manager/cert-manager/blob/master/RELEASE.md)
- [Commits](https://github.com/cert-manager/cert-manager/compare/v1.19.3...v1.20.0)

---
updated-dependencies:
- dependency-name: github.com/cert-manager/cert-manager
  dependency-version: 1.20.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-14 04:49:17 -04:00
Jose Diaz-Gonzalez
d191c1d6e9 chore: bump dependencies in tests/apps/php 2026-04-14 04:41:48 -04:00
Jose Diaz-Gonzalez
e1f592496c Merge pull request #8467 from dokku/dependencies/plugins/scheduler-k3s/go.mod
chore: upgrade traefik from v2.11.41 to v2.11.42
2026-04-14 04:30:49 -04:00
Jose Diaz-Gonzalez
80e687e159 chore: upgrade traefik from v2.11.41 to v2.11.42 2026-04-14 04:29:54 -04:00
Jose Diaz-Gonzalez
abeeeccf9f Merge pull request #8450 from dokku/dependabot/go_modules/plugins/cron/mvdan.cc/sh/v3-3.13.1
chore(deps): bump mvdan.cc/sh/v3 from 3.13.0 to 3.13.1 in /plugins/cron
2026-04-14 04:24:43 -04:00
Jose Diaz-Gonzalez
8f26660f9b Merge pull request #8466 from dokku/update-multi-packages
chore: bump dependencies in tests/apps/multi
2026-04-14 04:23:19 -04:00
Jose Diaz-Gonzalez
daaf6a11b6 chore: bump go modules 2026-04-14 03:16:56 -04:00
dependabot[bot]
daef410a23 chore(deps): bump mvdan.cc/sh/v3 from 3.13.0 to 3.13.1 in /plugins/cron
Bumps [mvdan.cc/sh/v3](https://github.com/mvdan/sh) from 3.13.0 to 3.13.1.
- [Release notes](https://github.com/mvdan/sh/releases)
- [Changelog](https://github.com/mvdan/sh/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mvdan/sh/compare/v3.13.0...v3.13.1)

---
updated-dependencies:
- dependency-name: mvdan.cc/sh/v3
  dependency-version: 3.13.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-14 03:16:44 -04:00
Jose Diaz-Gonzalez
9b92c59a47 Merge pull request #8465 from dokku/dependabot/go_modules/plugins/config/github.com/joho/godotenv-1.5.1
chore(deps): bump github.com/joho/godotenv from 1.2.0 to 1.5.1 in /plugins/config
2026-04-14 03:16:07 -04:00
Jose Diaz-Gonzalez
be14329b9a chore: bump dependencies in tests/apps/multi
While not in the build path, we should try and avoid unsupported dependencies where possible.
2026-04-14 03:14:11 -04:00
Jose Diaz-Gonzalez
e04f285c00 Merge pull request #8463 from dokku/dependabot/go_modules/plugins/common/golang.org/x/crypto-0.50.0
chore(deps): bump golang.org/x/crypto from 0.49.0 to 0.50.0 in /plugins/common
2026-04-14 02:12:29 -04:00
Jose Diaz-Gonzalez
bbcac75b73 Merge pull request #8451 from mykolasolodukha/fix/client-network-commands-app-prepend
Fix client prepending `--app` for non-app commands
2026-04-14 01:35:08 -04:00
Jose Diaz-Gonzalez
fbce6c8ec9 chore: bump go modules 2026-04-14 01:33:08 -04:00
Jose Diaz-Gonzalez
f7161cde90 chore: bump go modules 2026-04-14 01:30:35 -04:00
dependabot[bot]
66e38b1ec4 chore(deps): bump golang.org/x/crypto in /plugins/common
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.49.0 to 0.50.0.
- [Commits](https://github.com/golang/crypto/compare/v0.49.0...v0.50.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.50.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-14 01:29:09 -04:00
dependabot[bot]
81d42b2873 chore(deps): bump github.com/joho/godotenv in /plugins/config
Bumps [github.com/joho/godotenv](https://github.com/joho/godotenv) from 1.2.0 to 1.5.1.
- [Release notes](https://github.com/joho/godotenv/releases)
- [Commits](https://github.com/joho/godotenv/compare/v1.2.0...v1.5.1)

---
updated-dependencies:
- dependency-name: github.com/joho/godotenv
  dependency-version: 1.5.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-13 15:02:43 +00:00
Jose Diaz-Gonzalez
83659b3e21 Merge pull request #8449 from dokku/dependabot/pip/docs/_build/click-8.3.2
chore(deps): bump click from 8.3.1 to 8.3.2 in /docs/_build
2026-04-11 01:30:53 -04:00
Jose Diaz-Gonzalez
fc0eedc853 Merge pull request #8464 from dokku/dependabot/go_modules/plugins/scheduler-k3s/helm.sh/helm/v3-3.20.2
chore(deps): bump helm.sh/helm/v3 from 3.20.1 to 3.20.2 in /plugins/scheduler-k3s
2026-04-10 21:36:49 -04:00
dependabot[bot]
b7f29b4ce4 chore(deps): bump helm.sh/helm/v3 in /plugins/scheduler-k3s
Bumps [helm.sh/helm/v3](https://github.com/helm/helm) from 3.20.1 to 3.20.2.
- [Release notes](https://github.com/helm/helm/releases)
- [Commits](https://github.com/helm/helm/compare/v3.20.1...v3.20.2)

---
updated-dependencies:
- dependency-name: helm.sh/helm/v3
  dependency-version: 3.20.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-10 18:22:56 +00:00
Jose Diaz-Gonzalez
35ded52402 Merge pull request #8458 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-v3.6.13
chore(deps): bump traefik from v3.6.12 to v3.6.13 in /plugins/traefik-vhosts
2026-04-08 17:51:58 -04:00
Jose Diaz-Gonzalez
b7c921ce32 Merge pull request #8457 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-no-tini/golang-1.26.2
chore(deps): bump golang from 1.26.1 to 1.26.2 in /tests/apps/zombies-dockerfile-no-tini
2026-04-08 17:51:43 -04:00
Jose Diaz-Gonzalez
75642a9fe1 Merge pull request #8456 from dokku/dependabot/docker/tests/apps/go-fail-postdeploy/golang-1.26.2
chore(deps): bump golang from 1.26.1 to 1.26.2 in /tests/apps/go-fail-postdeploy
2026-04-08 17:51:32 -04:00
Jose Diaz-Gonzalez
f2770f6301 Merge pull request #8455 from dokku/dependabot/docker/tests/apps/gogrpc/golang-1.26.2
chore(deps): bump golang from 1.26.1 to 1.26.2 in /tests/apps/gogrpc
2026-04-08 17:49:33 -04:00
Jose Diaz-Gonzalez
6feabe15b9 Merge pull request #8454 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-tini/golang-1.26.2
chore(deps): bump golang from 1.26.1 to 1.26.2 in /tests/apps/zombies-dockerfile-tini
2026-04-08 17:49:08 -04:00
Jose Diaz-Gonzalez
af03d9eb08 Merge pull request #8453 from dokku/dependabot/docker/tests/apps/go-fail-predeploy/golang-1.26.2
chore(deps): bump golang from 1.26.1 to 1.26.2 in /tests/apps/go-fail-predeploy
2026-04-08 17:48:47 -04:00
Jose Diaz-Gonzalez
96ef28539e Merge pull request #8452 from dokku/dependabot/bundler/tests/apps/ruby/rack-session-2.1.2
chore(deps): bump rack-session from 2.1.1 to 2.1.2 in /tests/apps/ruby
2026-04-08 17:48:37 -04:00
Jose Diaz-Gonzalez
66cf13786a Merge pull request #8459 from dokku/dependabot/pip/tests/apps/dockerfile-release/django-5.2.13
chore(deps): bump django from 5.2.12 to 5.2.13 in /tests/apps/dockerfile-release
2026-04-08 17:48:09 -04:00
dependabot[bot]
c0644644f4 chore(deps): bump django in /tests/apps/dockerfile-release
Bumps [django](https://github.com/django/django) from 5.2.12 to 5.2.13.
- [Commits](https://github.com/django/django/compare/5.2.12...5.2.13)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 5.2.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-08 13:56:09 +00:00
dependabot[bot]
eaaafcd605 chore(deps): bump traefik in /plugins/traefik-vhosts
Bumps traefik from v3.6.12 to v3.6.13.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: v3.6.13
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-08 13:55:07 +00:00
dependabot[bot]
8a0443dc37 chore(deps): bump golang in /tests/apps/zombies-dockerfile-no-tini
Bumps golang from 1.26.1 to 1.26.2.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-08 13:53:30 +00:00
dependabot[bot]
f4c224f464 chore(deps): bump golang in /tests/apps/go-fail-postdeploy
Bumps golang from 1.26.1 to 1.26.2.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-08 13:53:26 +00:00
dependabot[bot]
88c25ef9fd chore(deps): bump golang from 1.26.1 to 1.26.2 in /tests/apps/gogrpc
Bumps golang from 1.26.1 to 1.26.2.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-08 13:53:24 +00:00
dependabot[bot]
1735efc9ea chore(deps): bump golang in /tests/apps/zombies-dockerfile-tini
Bumps golang from 1.26.1 to 1.26.2.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-08 13:53:17 +00:00
dependabot[bot]
a8e4323693 chore(deps): bump golang in /tests/apps/go-fail-predeploy
Bumps golang from 1.26.1 to 1.26.2.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-08 13:53:10 +00:00
dependabot[bot]
bc9140a2fe chore(deps): bump rack-session from 2.1.1 to 2.1.2 in /tests/apps/ruby
Bumps [rack-session](https://github.com/rack/rack-session) from 2.1.1 to 2.1.2.
- [Release notes](https://github.com/rack/rack-session/releases)
- [Changelog](https://github.com/rack/rack-session/blob/main/releases.md)
- [Commits](https://github.com/rack/rack-session/compare/v2.1.1...v2.1.2)

---
updated-dependencies:
- dependency-name: rack-session
  dependency-version: 2.1.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-08 03:50:58 +00:00
apple
bf4bd0e3ea Merge branch 'master' into cn
* master: (68 commits)
  chore(deps): bump werkzeug in /tests/apps/python-flask
  chore(deps): bump github.com/go-jose/go-jose/v4
  chore(deps): bump rack from 3.2.5 to 3.2.6 in /tests/apps/ruby
  chore(deps): bump pymdown-extensions in /docs/_build
  Add application/graphql-response+json to nginx gzip_types
  chore(deps): bump google.golang.org/grpc in /tests/apps/gogrpc
  chore(deps): bump pygments from 2.19.2 to 2.20.0 in /docs/_build
  chore(deps): bump golang.org/x/crypto in /plugins/common
  chore: bump go modules
  chore(deps): bump github.com/fatih/color in /plugins/common
  chore(deps): bump brace-expansion in /tests/apps/multi
  chore(deps): bump gunicorn in /tests/apps/python-flask
  chore(deps): bump path-to-regexp in /tests/apps/checks-root
  chore(deps): bump gunicorn in /tests/apps/dockerfile-release
  chore(deps): bump traefik in /plugins/traefik-vhosts
  chore(deps): bump gunicorn from 25.2.0 to 25.3.0 in /tests/apps/multi
  chore(deps): bump werkzeug in /tests/apps/python-flask
  chore(deps): bump picomatch from 2.3.1 to 2.3.2 in /tests/apps/multi
  chore(deps): bump gunicorn in /tests/apps/dockerfile-release
  chore(deps): bump djangorestframework in /tests/apps/dockerfile-release
  ...
2026-04-08 10:14:03 +08:00
Mykola Solodukha
50e383f061 ✏️ Fix random_name → fn-random-name in apps:create retry loop
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 22:09:06 +03:00
Mykola Solodukha
b548eb00ca 🐛 Add missing global commands to client --app exclusion whitelist
Add `domains:clear-global`, `logs:vector-*`, and `scheduler-k3s`
cluster, profile, and system commands that take resource names
instead of app names as their first argument.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 22:08:52 +03:00
Mykola Solodukha
42af3c4a6e 🐛 Prevent client from prepending --app for network commands
The dokku client auto-detects the app name from the git remote
and prepends `--app <name>` to all SSH commands not explicitly
excluded. Network commands like `network:create` take a network
name (not an app name) as their first argument, so the injected
app name was being used as the network name instead.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 21:01:11 +03:00
dependabot[bot]
f251007d0d chore(deps): bump click from 8.3.1 to 8.3.2 in /docs/_build
Bumps [click](https://github.com/pallets/click) from 8.3.1 to 8.3.2.
- [Release notes](https://github.com/pallets/click/releases)
- [Changelog](https://github.com/pallets/click/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/click/compare/8.3.1...8.3.2)

---
updated-dependencies:
- dependency-name: click
  dependency-version: 8.3.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-06 13:53:32 +00:00
Jose Diaz-Gonzalez
3140b680da Merge pull request #8444 from dokku/dependabot/bundler/tests/apps/ruby/rack-3.2.6
Some checks failed
CI / check-commit (push) Successful in -1s
CodeQL / Analyze (go) (push) Failing after 1m2s
docs / deploy (push) Failing after 15m9s
lint / hadolint (push) Successful in 39s
lint / markdown-lint (push) Successful in 11m6s
lint / packer (push) Failing after 59s
lint / shellcheck (push) Successful in 38s
lint / shfmt (push) Successful in 6m37s
lint / yamllint (push) Failing after 2s
CI / build (push) Failing after 15m46s
CI / build-image.linux/amd64 (push) Has been skipped
CI / build-image.linux/arm64 (push) Has been skipped
CI / unit.${{ matrix.index }} (push) Has been skipped
CI / docker (push) Has been skipped
CI / go.0 (push) Has been skipped
CI / go.1 (push) Has been skipped
CI / go.2 (push) Has been skipped
CI / go.3 (push) Has been skipped
CI / publish-test-results (push) Has been skipped
chore(deps): bump rack from 3.2.5 to 3.2.6 in /tests/apps/ruby
2026-04-04 06:01:15 -04:00
Jose Diaz-Gonzalez
08ffda6344 Merge pull request #8445 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/go-jose/go-jose/v4-4.1.4
chore(deps): bump github.com/go-jose/go-jose/v4 from 4.1.3 to 4.1.4 in /plugins/scheduler-k3s
2026-04-04 05:59:32 -04:00
Jose Diaz-Gonzalez
d29863ac92 Merge pull request #8447 from dokku/dependabot/pip/tests/apps/python-flask/werkzeug-3.1.8
chore(deps): bump werkzeug from 3.1.7 to 3.1.8 in /tests/apps/python-flask
2026-04-04 05:59:22 -04:00
dependabot[bot]
c576e1cd4b chore(deps): bump werkzeug in /tests/apps/python-flask
Bumps [werkzeug](https://github.com/pallets/werkzeug) from 3.1.7 to 3.1.8.
- [Release notes](https://github.com/pallets/werkzeug/releases)
- [Changelog](https://github.com/pallets/werkzeug/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/werkzeug/compare/3.1.7...3.1.8)

---
updated-dependencies:
- dependency-name: werkzeug
  dependency-version: 3.1.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-03 13:52:26 +00:00
dependabot[bot]
ae70303845 chore(deps): bump github.com/go-jose/go-jose/v4
Bumps [github.com/go-jose/go-jose/v4](https://github.com/go-jose/go-jose) from 4.1.3 to 4.1.4.
- [Release notes](https://github.com/go-jose/go-jose/releases)
- [Commits](https://github.com/go-jose/go-jose/compare/v4.1.3...v4.1.4)

---
updated-dependencies:
- dependency-name: github.com/go-jose/go-jose/v4
  dependency-version: 4.1.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-03 04:15:55 +00:00
dependabot[bot]
8a2b907d3b chore(deps): bump rack from 3.2.5 to 3.2.6 in /tests/apps/ruby
Bumps [rack](https://github.com/rack/rack) from 3.2.5 to 3.2.6.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v3.2.5...v3.2.6)

---
updated-dependencies:
- dependency-name: rack
  dependency-version: 3.2.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-02 19:00:59 +00:00
Jose Diaz-Gonzalez
bf8c89023f Merge pull request #8440 from dokku/dependabot/pip/docs/_build/pymdown-extensions-10.21.2
chore(deps): bump pymdown-extensions from 10.21 to 10.21.2 in /docs/_build
2026-04-02 06:03:14 -04:00
dependabot[bot]
fd40138053 chore(deps): bump pymdown-extensions in /docs/_build
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.21 to 10.21.2.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.21...10.21.2)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-version: 10.21.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-02 09:57:07 +00:00
Jose Diaz-Gonzalez
e0b7548605 Merge pull request #8441 from dokku/dependabot/pip/docs/_build/pygments-2.20.0
chore(deps): bump pygments from 2.19.2 to 2.20.0 in /docs/_build
2026-04-02 05:55:51 -04:00
Jose Diaz-Gonzalez
4dbaeef458 Merge pull request #8442 from dokku/dependabot/go_modules/tests/apps/gogrpc/google.golang.org/grpc-1.80.0
chore(deps): bump google.golang.org/grpc from 1.79.3 to 1.80.0 in /tests/apps/gogrpc
2026-04-02 05:55:43 -04:00
Jose Diaz-Gonzalez
2cbf09ef08 Merge pull request #8443 from chemicalkosek/patch-1
Add application/graphql-response+json to nginx gzip_types
2026-04-02 05:51:06 -04:00
chemicalkosek
a0fb569151 Add application/graphql-response+json to nginx gzip_types
GraphQL servers like Yoga v5 and Apollo Server 4 use the application/graphql-response+json content type per the GraphQL-over-HTTP spec (IANA registered). Without this in gzip_types, nginx silently skips compression for all GraphQL responses, sending megabytes of uncompressed JSON over the wire.
2026-04-02 11:27:47 +02:00
dependabot[bot]
63f339fe0e chore(deps): bump google.golang.org/grpc in /tests/apps/gogrpc
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.79.3 to 1.80.0.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.79.3...v1.80.0)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.80.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-01 17:32:07 +00:00
dependabot[bot]
c341cd62e0 chore(deps): bump pygments from 2.19.2 to 2.20.0 in /docs/_build
Bumps [pygments](https://github.com/pygments/pygments) from 2.19.2 to 2.20.0.
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)
- [Commits](https://github.com/pygments/pygments/compare/2.19.2...2.20.0)

---
updated-dependencies:
- dependency-name: pygments
  dependency-version: 2.20.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-30 15:09:17 +00:00
Jose Diaz-Gonzalez
a695cf63ea Merge pull request #8410 from dokku/dependabot/go_modules/plugins/common/golang.org/x/crypto-0.49.0
chore(deps): bump golang.org/x/crypto from 0.48.0 to 0.49.0 in /plugins/common
2026-03-29 04:23:06 -04:00
dependabot[bot]
99021b3ba9 chore(deps): bump golang.org/x/crypto in /plugins/common
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.48.0 to 0.49.0.
- [Commits](https://github.com/golang/crypto/compare/v0.48.0...v0.49.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.49.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-29 03:20:16 -04:00
Jose Diaz-Gonzalez
ace2e33d95 Merge pull request #8422 from dokku/dependabot/go_modules/plugins/common/github.com/fatih/color-1.19.0
chore(deps): bump github.com/fatih/color from 1.18.0 to 1.19.0 in /plugins/common
2026-03-29 03:18:02 -04:00
Jose Diaz-Gonzalez
cdac6675e1 chore: bump go modules 2026-03-29 02:43:06 -04:00
dependabot[bot]
b17756f9da chore(deps): bump github.com/fatih/color in /plugins/common
Bumps [github.com/fatih/color](https://github.com/fatih/color) from 1.18.0 to 1.19.0.
- [Release notes](https://github.com/fatih/color/releases)
- [Commits](https://github.com/fatih/color/compare/v1.18.0...v1.19.0)

---
updated-dependencies:
- dependency-name: github.com/fatih/color
  dependency-version: 1.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-29 02:35:55 -04:00
Jose Diaz-Gonzalez
4e6560c57c Merge pull request #8434 from dokku/dependabot/pip/tests/apps/python-flask/gunicorn-25.3.0
chore(deps): bump gunicorn from 25.2.0 to 25.3.0 in /tests/apps/python-flask
2026-03-29 02:29:13 -04:00
Jose Diaz-Gonzalez
dbe65409dc Merge pull request #8439 from dokku/dependabot/npm_and_yarn/tests/apps/multi/brace-expansion-1.1.13
chore(deps): bump brace-expansion from 1.1.12 to 1.1.13 in /tests/apps/multi
2026-03-29 02:28:59 -04:00
dependabot[bot]
4dee5d5582 chore(deps): bump brace-expansion in /tests/apps/multi
Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.12 to 1.1.13.
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](https://github.com/juliangruber/brace-expansion/compare/v1.1.12...v1.1.13)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 1.1.13
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-29 05:21:54 +00:00
dependabot[bot]
6fecd1f0ea chore(deps): bump gunicorn in /tests/apps/python-flask
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 25.2.0 to 25.3.0.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/25.2.0...25.3.0)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-version: 25.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-29 04:53:24 +00:00
Jose Diaz-Gonzalez
c35a17f648 Merge pull request #8438 from dokku/dependabot/npm_and_yarn/tests/apps/checks-root/path-to-regexp-8.4.0
chore(deps): bump path-to-regexp from 8.2.0 to 8.4.0 in /tests/apps/checks-root
2026-03-29 00:52:28 -04:00
Jose Diaz-Gonzalez
6536ad4c41 Merge pull request #8437 from dokku/dependabot/pip/tests/apps/dockerfile-release/gunicorn-25.3.0
chore(deps): bump gunicorn from 25.2.0 to 25.3.0 in /tests/apps/dockerfile-release
2026-03-29 00:52:21 -04:00
Jose Diaz-Gonzalez
defd041976 Merge pull request #8436 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-v3.6.12
chore(deps): bump traefik from v3.6.11 to v3.6.12 in /plugins/traefik-vhosts
2026-03-29 00:52:14 -04:00
Jose Diaz-Gonzalez
8d4cf7eadb Merge pull request #8435 from dokku/dependabot/pip/tests/apps/multi/gunicorn-25.3.0
chore(deps): bump gunicorn from 25.2.0 to 25.3.0 in /tests/apps/multi
2026-03-29 00:52:06 -04:00
Jose Diaz-Gonzalez
2f4d8f7014 Merge pull request #8427 from dokku/dependabot/pip/tests/apps/python-flask/werkzeug-3.1.7
chore(deps): bump werkzeug from 3.1.6 to 3.1.7 in /tests/apps/python-flask
2026-03-29 00:51:33 -04:00
dependabot[bot]
1a6034ebca chore(deps): bump path-to-regexp in /tests/apps/checks-root
Bumps [path-to-regexp](https://github.com/pillarjs/path-to-regexp) from 8.2.0 to 8.4.0.
- [Release notes](https://github.com/pillarjs/path-to-regexp/releases)
- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/master/History.md)
- [Commits](https://github.com/pillarjs/path-to-regexp/compare/v8.2.0...v8.4.0)

---
updated-dependencies:
- dependency-name: path-to-regexp
  dependency-version: 8.4.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-28 08:50:01 +00:00
dependabot[bot]
a5b806661e chore(deps): bump gunicorn in /tests/apps/dockerfile-release
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 25.2.0 to 25.3.0.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/25.2.0...25.3.0)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-version: 25.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-27 13:54:41 +00:00
dependabot[bot]
fce2e9c818 chore(deps): bump traefik in /plugins/traefik-vhosts
Bumps traefik from v3.6.11 to v3.6.12.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: v3.6.12
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-27 13:53:52 +00:00
dependabot[bot]
62b7e5f06a chore(deps): bump gunicorn from 25.2.0 to 25.3.0 in /tests/apps/multi
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 25.2.0 to 25.3.0.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/25.2.0...25.3.0)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-version: 25.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-27 13:52:33 +00:00
dependabot[bot]
c85691cbda chore(deps): bump werkzeug in /tests/apps/python-flask
Bumps [werkzeug](https://github.com/pallets/werkzeug) from 3.1.6 to 3.1.7.
- [Release notes](https://github.com/pallets/werkzeug/releases)
- [Changelog](https://github.com/pallets/werkzeug/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/werkzeug/compare/3.1.6...3.1.7)

---
updated-dependencies:
- dependency-name: werkzeug
  dependency-version: 3.1.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-25 23:24:16 +00:00
Jose Diaz-Gonzalez
7a943f4678 Merge pull request #8428 from dokku/dependabot/pip/tests/apps/multi/gunicorn-25.2.0
chore(deps): bump gunicorn from 25.1.0 to 25.2.0 in /tests/apps/multi
2026-03-25 19:23:04 -04:00
Jose Diaz-Gonzalez
e055893f7b Merge pull request #8429 from dokku/dependabot/pip/tests/apps/python-flask/gunicorn-25.2.0
chore(deps): bump gunicorn from 25.1.0 to 25.2.0 in /tests/apps/python-flask
2026-03-25 19:22:58 -04:00
Jose Diaz-Gonzalez
2f1d64e826 Merge pull request #8430 from dokku/dependabot/pip/tests/apps/dockerfile-release/djangorestframework-3.17.1
chore(deps): bump djangorestframework from 3.17.0 to 3.17.1 in /tests/apps/dockerfile-release
2026-03-25 19:22:51 -04:00
Jose Diaz-Gonzalez
3739c86570 Merge pull request #8431 from dokku/dependabot/pip/tests/apps/dockerfile-release/gunicorn-25.2.0
chore(deps): bump gunicorn from 25.1.0 to 25.2.0 in /tests/apps/dockerfile-release
2026-03-25 19:21:21 -04:00
Jose Diaz-Gonzalez
5f74d306c4 Merge pull request #8432 from dokku/dependabot/npm_and_yarn/tests/apps/multi/picomatch-2.3.2
chore(deps): bump picomatch from 2.3.1 to 2.3.2 in /tests/apps/multi
2026-03-25 19:20:47 -04:00
dependabot[bot]
0d3c22f651 chore(deps): bump picomatch from 2.3.1 to 2.3.2 in /tests/apps/multi
Bumps [picomatch](https://github.com/micromatch/picomatch) from 2.3.1 to 2.3.2.
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2)

---
updated-dependencies:
- dependency-name: picomatch
  dependency-version: 2.3.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-25 21:53:44 +00:00
dependabot[bot]
3eb7e1dad8 chore(deps): bump gunicorn in /tests/apps/dockerfile-release
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 25.1.0 to 25.2.0.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/25.1.0...25.2.0)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-version: 25.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-25 13:54:53 +00:00
dependabot[bot]
8418c413f8 chore(deps): bump djangorestframework in /tests/apps/dockerfile-release
Bumps [djangorestframework](https://github.com/encode/django-rest-framework) from 3.17.0 to 3.17.1.
- [Release notes](https://github.com/encode/django-rest-framework/releases)
- [Commits](https://github.com/encode/django-rest-framework/compare/3.17.0...3.17.1)

---
updated-dependencies:
- dependency-name: djangorestframework
  dependency-version: 3.17.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-25 13:54:39 +00:00
dependabot[bot]
0f31cb62ef chore(deps): bump gunicorn in /tests/apps/python-flask
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 25.1.0 to 25.2.0.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/25.1.0...25.2.0)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-version: 25.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-25 13:52:39 +00:00
dependabot[bot]
dbfc2d8002 chore(deps): bump gunicorn from 25.1.0 to 25.2.0 in /tests/apps/multi
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 25.1.0 to 25.2.0.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/25.1.0...25.2.0)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-version: 25.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-25 13:52:31 +00:00
Jose Diaz-Gonzalez
3caca8595b Merge pull request #8423 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-v3.6.11
chore(deps): bump traefik from v3.6.10 to v3.6.11 in /plugins/traefik-vhosts
2026-03-20 13:35:31 -04:00
Jose Diaz-Gonzalez
ef5ab01478 Merge pull request #8420 from dokku/dependabot/pip/docs/_build/mkdocs-material-9.7.6
chore(deps): bump mkdocs-material from 9.7.5 to 9.7.6 in /docs/_build
2026-03-20 13:06:25 -04:00
Jose Diaz-Gonzalez
3e81693093 Merge pull request #8421 from dokku/dependabot/pip/docs/_build/importlib-metadata-9.0.0
chore(deps): bump importlib-metadata from 8.8.0 to 9.0.0 in /docs/_build
2026-03-20 13:06:19 -04:00
Jose Diaz-Gonzalez
0822dc5558 Merge pull request #8424 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/traefik/traefik/v2-2.11.41
chore(deps): bump github.com/traefik/traefik/v2 from 2.11.40 to 2.11.41 in /plugins/scheduler-k3s
2026-03-20 13:05:56 -04:00
dependabot[bot]
d46dc2ab22 chore(deps): bump github.com/traefik/traefik/v2
Bumps [github.com/traefik/traefik/v2](https://github.com/traefik/traefik) from 2.11.40 to 2.11.41.
- [Release notes](https://github.com/traefik/traefik/releases)
- [Changelog](https://github.com/traefik/traefik/blob/v2.11.41/CHANGELOG.md)
- [Commits](https://github.com/traefik/traefik/compare/v2.11.40...v2.11.41)

---
updated-dependencies:
- dependency-name: github.com/traefik/traefik/v2
  dependency-version: 2.11.41
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-20 13:54:47 +00:00
dependabot[bot]
f6137bcd3c chore(deps): bump traefik in /plugins/traefik-vhosts
Bumps traefik from v3.6.10 to v3.6.11.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: v3.6.11
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-20 13:53:51 +00:00
dependabot[bot]
b39576812b chore(deps): bump importlib-metadata from 8.8.0 to 9.0.0 in /docs/_build
Bumps [importlib-metadata](https://github.com/python/importlib_metadata) from 8.8.0 to 9.0.0.
- [Release notes](https://github.com/python/importlib_metadata/releases)
- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)
- [Commits](https://github.com/python/importlib_metadata/compare/v8.8.0...v9.0.0)

---
updated-dependencies:
- dependency-name: importlib-metadata
  dependency-version: 9.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-20 13:53:23 +00:00
dependabot[bot]
9246a92e75 chore(deps): bump mkdocs-material from 9.7.5 to 9.7.6 in /docs/_build
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.7.5 to 9.7.6.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.7.5...9.7.6)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-version: 9.7.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-20 13:53:19 +00:00
Jose Diaz-Gonzalez
7b050cf3b1 Merge pull request #8411 from dokku/dependabot/docker/plugins/caddy-vhosts/lucaslorentz/caddy-docker-proxy-2.12
chore(deps): bump lucaslorentz/caddy-docker-proxy from 2.11 to 2.12 in /plugins/caddy-vhosts
2026-03-19 19:11:44 -04:00
Jose Diaz-Gonzalez
b34e497bae Merge pull request #8412 from dokku/dependabot/go_modules/plugins/scheduler-k3s/helm.sh/helm/v3-3.20.1
chore(deps): bump helm.sh/helm/v3 from 3.20.0 to 3.20.1 in /plugins/scheduler-k3s
2026-03-19 19:11:32 -04:00
Jose Diaz-Gonzalez
527c097b98 Merge pull request #8419 from dokku/dependabot/pip/tests/apps/dockerfile-release/djangorestframework-3.17.0
chore(deps): bump djangorestframework from 3.16.1 to 3.17.0 in /tests/apps/dockerfile-release
2026-03-19 19:11:14 -04:00
Jose Diaz-Gonzalez
3e9d35c1ca Merge pull request #8418 from dokku/dependabot/pip/docs/_build/importlib-metadata-8.8.0
chore(deps): bump importlib-metadata from 8.7.1 to 8.8.0 in /docs/_build
2026-03-19 19:11:08 -04:00
Jose Diaz-Gonzalez
5aec273077 Merge pull request #8417 from dokku/dependabot/go_modules/plugins/scheduler-k3s/google.golang.org/grpc-1.79.3
chore(deps): bump google.golang.org/grpc from 1.77.0-dev to 1.79.3 in /plugins/scheduler-k3s
2026-03-19 19:11:01 -04:00
Jose Diaz-Gonzalez
e4511642b4 Merge pull request #8416 from dokku/dependabot/docker/tests/apps/dockerfile-entrypoint/ruby-4.0.2
chore(deps): bump ruby from 4.0.1 to 4.0.2 in /tests/apps/dockerfile-entrypoint
2026-03-19 19:10:53 -04:00
Jose Diaz-Gonzalez
22d41e9f1a Merge pull request #8415 from dokku/dependabot/go_modules/tests/apps/gogrpc/google.golang.org/grpc-1.79.3
chore(deps): bump google.golang.org/grpc from 1.79.2 to 1.79.3 in /tests/apps/gogrpc
2026-03-19 19:10:44 -04:00
dependabot[bot]
34b3e9b3c2 chore(deps): bump djangorestframework in /tests/apps/dockerfile-release
Bumps [djangorestframework](https://github.com/encode/django-rest-framework) from 3.16.1 to 3.17.0.
- [Release notes](https://github.com/encode/django-rest-framework/releases)
- [Commits](https://github.com/encode/django-rest-framework/compare/3.16.1...3.17.0)

---
updated-dependencies:
- dependency-name: djangorestframework
  dependency-version: 3.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-19 13:54:45 +00:00
dependabot[bot]
e1afeeb054 chore(deps): bump importlib-metadata from 8.7.1 to 8.8.0 in /docs/_build
Bumps [importlib-metadata](https://github.com/python/importlib_metadata) from 8.7.1 to 8.8.0.
- [Release notes](https://github.com/python/importlib_metadata/releases)
- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)
- [Commits](https://github.com/python/importlib_metadata/compare/v8.7.1...v8.8.0)

---
updated-dependencies:
- dependency-name: importlib-metadata
  dependency-version: 8.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-19 13:53:28 +00:00
dependabot[bot]
9333c9263c chore(deps): bump google.golang.org/grpc in /plugins/scheduler-k3s
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.77.0-dev to 1.79.3.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.77.0-dev...v1.79.3)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.79.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-19 02:25:33 +00:00
dependabot[bot]
7b62023d0f chore(deps): bump ruby in /tests/apps/dockerfile-entrypoint
Bumps ruby from 4.0.1 to 4.0.2.

---
updated-dependencies:
- dependency-name: ruby
  dependency-version: 4.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-18 13:53:08 +00:00
dependabot[bot]
c60b0e81d1 chore(deps): bump google.golang.org/grpc in /tests/apps/gogrpc
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.79.2 to 1.79.3.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.79.2...v1.79.3)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.79.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-18 13:52:35 +00:00
dependabot[bot]
49aa7a6424 chore(deps): bump helm.sh/helm/v3 in /plugins/scheduler-k3s
Bumps [helm.sh/helm/v3](https://github.com/helm/helm) from 3.20.0 to 3.20.1.
- [Release notes](https://github.com/helm/helm/releases)
- [Commits](https://github.com/helm/helm/compare/v3.20.0...v3.20.1)

---
updated-dependencies:
- dependency-name: helm.sh/helm/v3
  dependency-version: 3.20.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-12 13:54:33 +00:00
dependabot[bot]
bc51cece4a chore(deps): bump lucaslorentz/caddy-docker-proxy
Bumps lucaslorentz/caddy-docker-proxy from 2.11 to 2.12.

---
updated-dependencies:
- dependency-name: lucaslorentz/caddy-docker-proxy
  dependency-version: '2.12'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-12 13:53:53 +00:00
Jose Diaz-Gonzalez
c46b471938 Merge pull request #8409 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/go-openapi/jsonpointer-0.22.5
chore(deps): bump github.com/go-openapi/jsonpointer from 0.22.4 to 0.22.5 in /plugins/scheduler-k3s
2026-03-11 17:24:32 -04:00
dependabot[bot]
4162c62e56 chore(deps): bump github.com/go-openapi/jsonpointer
Bumps [github.com/go-openapi/jsonpointer](https://github.com/go-openapi/jsonpointer) from 0.22.4 to 0.22.5.
- [Release notes](https://github.com/go-openapi/jsonpointer/releases)
- [Commits](https://github.com/go-openapi/jsonpointer/compare/v0.22.4...v0.22.5)

---
updated-dependencies:
- dependency-name: github.com/go-openapi/jsonpointer
  dependency-version: 0.22.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-11 21:24:05 +00:00
Jose Diaz-Gonzalez
8fe62d6b64 Merge pull request #8408 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/go-resty/resty/v2-2.17.2
chore(deps): bump github.com/go-resty/resty/v2 from 2.17.1 to 2.17.2 in /plugins/scheduler-k3s
2026-03-11 17:23:05 -04:00
Jose Diaz-Gonzalez
1778ef973e Merge pull request #8407 from dokku/dependabot/pip/docs/_build/mkdocs-material-9.7.5
chore(deps): bump mkdocs-material from 9.7.4 to 9.7.5 in /docs/_build
2026-03-11 17:22:56 -04:00
Jose Diaz-Gonzalez
57a27f9c98 Merge pull request #8406 from dokku/dependabot/docker/plugins/logs/timberio/vector-0.54.0-debian
chore(deps): bump timberio/vector from 0.53.0-debian to 0.54.0-debian in /plugins/logs
2026-03-11 17:22:49 -04:00
dependabot[bot]
812ef8e92e chore(deps): bump github.com/go-resty/resty/v2 in /plugins/scheduler-k3s
Bumps [github.com/go-resty/resty/v2](https://github.com/go-resty/resty) from 2.17.1 to 2.17.2.
- [Release notes](https://github.com/go-resty/resty/releases)
- [Commits](https://github.com/go-resty/resty/compare/v2.17.1...v2.17.2)

---
updated-dependencies:
- dependency-name: github.com/go-resty/resty/v2
  dependency-version: 2.17.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-11 13:55:23 +00:00
dependabot[bot]
ed77f1193f chore(deps): bump mkdocs-material from 9.7.4 to 9.7.5 in /docs/_build
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.7.4 to 9.7.5.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.7.4...9.7.5)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-version: 9.7.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-11 13:55:02 +00:00
dependabot[bot]
c5a49bfae5 chore(deps): bump timberio/vector in /plugins/logs
Bumps timberio/vector from 0.53.0-debian to 0.54.0-debian.

---
updated-dependencies:
- dependency-name: timberio/vector
  dependency-version: 0.54.0-debian
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-11 13:54:52 +00:00
Dokku Bot
661268f149 Release 0.37.7
# History

## 0.37.7

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.37.7/bootstrap.sh
sudo DOKKU_TAG=v0.37.7 bash bootstrap.sh
```

### Bug Fixes

- #8379: @josegonzalez Call correct function for limiting letsencrypt to certain domains

### New Features

- #8405: @josegonzalez Add Debian 13 versions of docker plugin packages
- #8261: @josegonzalez Configure Traefik readiness healthchecks based on app.json config
- #8378: @farmdawgnation Support custom entrypoint for api and dashboard

### Dependencies

- #8395: @dependabot[bot] chore(deps): bump mvdan.cc/sh/v3 from 3.12.0 to 3.13.0 in /plugins/cron
- #8401: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.11.38 to 2.11.40 in /plugins/scheduler-k3s
- #8400: @dependabot[bot] chore(deps): bump github.com/melbahja/goph from 1.4.0 to 1.5.0 in /plugins/common
- #8394: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.47.0 to 0.48.0 in /plugins/common
- #8396: @dependabot[bot] chore(deps): bump golang.org/x/sync from 0.19.0 to 0.20.0 in /plugins/common
- #8399: @dependabot[bot] chore(deps): bump golang.org/x/sync from 0.19.0 to 0.20.0 in /plugins/scheduler-k3s
- #8398: @dependabot[bot] chore(deps): bump traefik from 3.6.9 to v3.6.10 in /plugins/traefik-vhosts
- #8397: @dependabot[bot] chore(deps): bump golang.org/x/sync from 0.19.0 to 0.20.0 in /plugins/scheduler-docker-local
- #8314: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.39.0 to 1.39.1 in /plugins/common
- #8380: @dependabot[bot] chore(deps): bump lucaslorentz/caddy-docker-proxy from 2.10 to 2.11 in /plugins/caddy-vhosts
- #8381: @dependabot[bot] chore(deps): bump k8s.io/kubectl from 0.35.0 to 0.35.2 in /plugins/scheduler-k3s
- #8382: @dependabot[bot] chore(deps): bump docker/login-action from 3 to 4
- #8383: @dependabot[bot] chore(deps): bump docker/setup-qemu-action from 3 to 4
- #8384: @dependabot[bot] chore(deps): bump mkdocs-material from 9.7.3 to 9.7.4 in /docs/_build
- #8385: @dependabot[bot] chore(deps): bump django from 5.2.11 to 5.2.12 in /tests/apps/dockerfile-release
- #8387: @dependabot[bot] chore(deps): bump docker/setup-buildx-action from 3 to 4
- #8388: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.79.1 to 1.79.2 in /tests/apps/gogrpc
- #8389: @dependabot[bot] chore(deps): bump golang from 1.26.0 to 1.26.1 in /tests/apps/go-fail-postdeploy
- #8390: @dependabot[bot] chore(deps): bump golang from 1.26.0 to 1.26.1 in /tests/apps/gogrpc
- #8391: @dependabot[bot] chore(deps): bump golang from 1.26.0 to 1.26.1 in /tests/apps/go-fail-predeploy
- #8392: @dependabot[bot] chore(deps): bump golang from 1.26.0 to 1.26.1 in /tests/apps/zombies-dockerfile-tini
- #8393: @dependabot[bot] chore(deps): bump golang from 1.26.0 to 1.26.1 in /tests/apps/zombies-dockerfile-no-tini
- #8354: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.78.0 to 1.79.1 in /tests/apps/gogrpc
- #8340: @dependabot[bot] chore(deps): bump python from 3.14.2-alpine to 3.14.3-alpine in /docs/_build
- #8353: @dependabot[bot] chore(deps): bump gunicorn from 25.0.2 to 25.1.0 in /tests/apps/multi
- #8357: @dependabot[bot] chore(deps): bump qs from 6.14.1 to 6.14.2 in /tests/apps/checks-root
- #8361: @dependabot[bot] chore(deps): bump flask from 3.1.2 to 3.1.3 in /tests/apps/multi
- #8360: @dependabot[bot] chore(deps): bump rack from 3.2.4 to 3.2.5 in /tests/apps/ruby
- #8332: @dependabot[bot] chore(deps-dev): bump org.apache.maven.plugins:maven-dependency-plugin from 3.9.0 to 3.10.0 in /tests/apps/java
- #8336: @dependabot[bot] chore(deps): bump python from 3.14.2-bookworm to 3.14.3-bookworm in /tests/apps/dockerfile-release
- #8355: @dependabot[bot] chore(deps): bump gunicorn from 25.0.2 to 25.1.0 in /tests/apps/python-flask
- #8356: @dependabot[bot] chore(deps): bump gunicorn from 25.0.2 to 25.1.0 in /tests/apps/dockerfile-release
- #8358: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.20.1 to 10.21 in /docs/_build
- #8371: @dependabot[bot] chore(deps): bump byjg/easy-haproxy from 5.0.0 to 6.0.1 in /plugins/haproxy-vhosts
- #8362: @dependabot[bot] chore(deps): bump flask from 3.1.2 to 3.1.3 in /tests/apps/python-flask
- #8374: @dependabot[bot] chore(deps): bump actions/download-artifact from 7 to 8
- #8375: @dependabot[bot] chore(deps): bump actions/upload-artifact from 6 to 7
- #8376: @dependabot[bot] chore(deps): bump phusion/baseimage from noble-1.0.2 to noble-1.0.3
- #8377: @dependabot[bot] chore(deps): bump whitenoise from 6.11.0 to 6.12.0 in /tests/apps/dockerfile-release
- #8365: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.11.36 to 2.11.37 in /plugins/scheduler-k3s
- #8367: @dependabot[bot] chore(deps): bump werkzeug from 3.1.5 to 3.1.6 in /tests/apps/python-flask
- #8368: @dependabot[bot] chore(deps): bump dj-database-url from 3.1.0 to 3.1.2 in /tests/apps/dockerfile-release
- #8372: @dependabot[bot] chore(deps): bump mkdocs-material from 9.7.1 to 9.7.3 in /docs/_build
- #8373: @dependabot[bot] chore(deps): bump traefik from 3.6.7 to 3.6.9 in /plugins/traefik-vhosts
- #8351: @dependabot[bot] chore(deps): bump golang from 1.25.6 to 1.26.0 in /tests/apps/zombies-dockerfile-tini
- #8350: @dependabot[bot] chore(deps): bump golang from 1.25.6 to 1.26.0 in /tests/apps/zombies-dockerfile-no-tini
- #8349: @dependabot[bot] chore(deps): bump golang from 1.25.6 to 1.26.0 in /tests/apps/go-fail-postdeploy
- #8348: @dependabot[bot] chore(deps): bump golang from 1.25.6 to 1.26.0 in /tests/apps/gogrpc
- #8347: @dependabot[bot] chore(deps): bump golang from 1.25.6 to 1.26.0 in /tests/apps/go-fail-predeploy
- #8344: @dependabot[bot] chore(deps): bump sigs.k8s.io/kustomize/api from 0.21.0 to 0.21.1 in /plugins/scheduler-k3s
- #8329: @dependabot[bot] chore(deps): bump gunicorn from 25.0.1 to 25.0.2 in /tests/apps/multi
- #8330: @dependabot[bot] chore(deps): bump gunicorn from 25.0.1 to 25.0.2 in /tests/apps/python-flask
- #8331: @dependabot[bot] chore(deps): bump gunicorn from 25.0.1 to 25.0.2 in /tests/apps/dockerfile-release
- #8320: @dependabot[bot] chore(deps): bump django from 5.2.10 to 5.2.11 in /tests/apps/dockerfile-release
- #8321: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.11.35 to 2.11.36 in /plugins/scheduler-k3s
- #8319: @dependabot[bot] chore(deps): bump gunicorn from 24.1.1 to 25.0.1 in /tests/apps/dockerfile-release
- #8318: @dependabot[bot] chore(deps): bump github.com/cert-manager/cert-manager from 1.19.2 to 1.19.3 in /plugins/scheduler-k3s
- #8317: @dependabot[bot] chore(deps): bump gunicorn from 24.1.1 to 25.0.1 in /tests/apps/multi
- #8316: @dependabot[bot] chore(deps): bump gunicorn from 24.1.1 to 25.0.1 in /tests/apps/python-flask
2026-03-11 00:38:03 +00:00
Jose Diaz-Gonzalez
a675d5dfe8 Merge pull request #8405 from dokku/8278-native-packages
Add Debian 13 versions of docker plugin packages
2026-03-10 20:36:21 -04:00
Jose Diaz-Gonzalez
933adabad6 Merge pull request #8261 from dokku/6834-traefik-healthcheck-labels
Configure Traefik readiness healthchecks based on app.json config
2026-03-10 20:35:50 -04:00
Jose Diaz-Gonzalez
9c2eb09c66 fix: remove extra newline 2026-03-10 20:35:41 -04:00
Jose Diaz-Gonzalez
e1dd3abb10 feat: add Debian 13 versions of docker plugin packages
Closes #8278
2026-03-10 19:31:27 -04:00
Jose Diaz-Gonzalez
8cad6c3179 feat: configure Traefik readiness healthchecks based on app.json config
Closes #6834
2026-03-10 19:17:20 -04:00
Jose Diaz-Gonzalez
2b0f96dc1a feat: upgrade vector chart from 0.42.0 to 0.50.0 2026-03-10 15:38:33 -04:00
Jose Diaz-Gonzalez
8240096dda feat: upgrade ingress-nginx chart from 4.10.0 to 4.14.4 2026-03-10 15:37:49 -04:00
Jose Diaz-Gonzalez
b4c598ed17 Merge pull request #8395 from dokku/dependabot/go_modules/plugins/cron/mvdan.cc/sh/v3-3.13.0
chore(deps): bump mvdan.cc/sh/v3 from 3.12.0 to 3.13.0 in /plugins/cron
2026-03-10 15:28:13 -04:00
Jose Diaz-Gonzalez
38db6949bf chore: bump go modules 2026-03-10 14:04:48 -04:00
dependabot[bot]
b71dea72bd chore(deps): bump mvdan.cc/sh/v3 from 3.12.0 to 3.13.0 in /plugins/cron
Bumps [mvdan.cc/sh/v3](https://github.com/mvdan/sh) from 3.12.0 to 3.13.0.
- [Release notes](https://github.com/mvdan/sh/releases)
- [Changelog](https://github.com/mvdan/sh/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mvdan/sh/compare/v3.12.0...v3.13.0)

---
updated-dependencies:
- dependency-name: mvdan.cc/sh/v3
  dependency-version: 3.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-10 14:04:36 -04:00
Jose Diaz-Gonzalez
491af9961d Merge pull request #8401 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/traefik/traefik/v2-2.11.40
chore(deps): bump github.com/traefik/traefik/v2 from 2.11.38 to 2.11.40 in /plugins/scheduler-k3s
2026-03-10 13:59:09 -04:00
dependabot[bot]
5332368a3d chore(deps): bump github.com/traefik/traefik/v2
Bumps [github.com/traefik/traefik/v2](https://github.com/traefik/traefik) from 2.11.38 to 2.11.40.
- [Release notes](https://github.com/traefik/traefik/releases)
- [Changelog](https://github.com/traefik/traefik/blob/master/CHANGELOG.md)
- [Commits](https://github.com/traefik/traefik/compare/v2.11.38...v2.11.40)

---
updated-dependencies:
- dependency-name: github.com/traefik/traefik/v2
  dependency-version: 2.11.40
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-10 16:47:44 +00:00
Jose Diaz-Gonzalez
38545f96be Merge pull request #8400 from dokku/dependabot/go_modules/plugins/common/github.com/melbahja/goph-1.5.0
chore(deps): bump github.com/melbahja/goph from 1.4.0 to 1.5.0 in /plugins/common
2026-03-10 12:45:36 -04:00
dependabot[bot]
6931a6b430 chore(deps): bump github.com/melbahja/goph in /plugins/common
Bumps [github.com/melbahja/goph](https://github.com/melbahja/goph) from 1.4.0 to 1.5.0.
- [Commits](https://github.com/melbahja/goph/compare/v1.4.0...v1.5.0)

---
updated-dependencies:
- dependency-name: github.com/melbahja/goph
  dependency-version: 1.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-10 10:41:54 -04:00
Jose Diaz-Gonzalez
5e1cea4883 Merge pull request #8394 from dokku/dependabot/go_modules/plugins/common/golang.org/x/crypto-0.48.0
chore(deps): bump golang.org/x/crypto from 0.47.0 to 0.48.0 in /plugins/common
2026-03-10 10:40:16 -04:00
Jose Diaz-Gonzalez
554a041bcd chore: bump go modules 2026-03-10 09:21:08 -04:00
dependabot[bot]
5944ad30ad chore(deps): bump golang.org/x/crypto in /plugins/common
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.47.0 to 0.48.0.
- [Commits](https://github.com/golang/crypto/compare/v0.47.0...v0.48.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.48.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-10 09:20:45 -04:00
Jose Diaz-Gonzalez
9a01d5337f Merge pull request #8396 from dokku/dependabot/go_modules/plugins/common/golang.org/x/sync-0.20.0
chore(deps): bump golang.org/x/sync from 0.19.0 to 0.20.0 in /plugins/common
2026-03-10 09:19:46 -04:00
Jose Diaz-Gonzalez
5886e8190f chore: bump go modules 2026-03-10 08:13:16 -04:00
dependabot[bot]
bc4f62b972 chore(deps): bump golang.org/x/sync in /plugins/common
Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.19.0 to 0.20.0.
- [Commits](https://github.com/golang/sync/compare/v0.19.0...v0.20.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sync
  dependency-version: 0.20.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-10 08:13:16 -04:00
Jose Diaz-Gonzalez
1fec3b4ab8 Merge pull request #8399 from dokku/dependabot/go_modules/plugins/scheduler-k3s/golang.org/x/sync-0.20.0
chore(deps): bump golang.org/x/sync from 0.19.0 to 0.20.0 in /plugins/scheduler-k3s
2026-03-09 13:36:15 -04:00
Jose Diaz-Gonzalez
80442c9109 Merge pull request #8398 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-v3.6.10
chore(deps): bump traefik from 3.6.9 to v3.6.10 in /plugins/traefik-vhosts
2026-03-09 13:36:09 -04:00
Jose Diaz-Gonzalez
52804c9461 Merge pull request #8397 from dokku/dependabot/go_modules/plugins/scheduler-docker-local/golang.org/x/sync-0.20.0
chore(deps): bump golang.org/x/sync from 0.19.0 to 0.20.0 in /plugins/scheduler-docker-local
2026-03-09 13:36:00 -04:00
dependabot[bot]
63690741d2 chore(deps): bump golang.org/x/sync in /plugins/scheduler-k3s
Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.19.0 to 0.20.0.
- [Commits](https://github.com/golang/sync/compare/v0.19.0...v0.20.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sync
  dependency-version: 0.20.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-09 14:48:54 +00:00
dependabot[bot]
7877cebb27 chore(deps): bump traefik in /plugins/traefik-vhosts
Bumps traefik from 3.6.9 to v3.6.10.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: v3.6.10
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-09 14:48:31 +00:00
dependabot[bot]
d9ac94bc13 chore(deps): bump golang.org/x/sync in /plugins/scheduler-docker-local
Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.19.0 to 0.20.0.
- [Commits](https://github.com/golang/sync/compare/v0.19.0...v0.20.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sync
  dependency-version: 0.20.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-09 14:47:46 +00:00
Jose Diaz-Gonzalez
0abb1568e1 Merge pull request #8314 from dokku/dependabot/go_modules/plugins/common/github.com/onsi/gomega-1.39.1
chore(deps): bump github.com/onsi/gomega from 1.39.0 to 1.39.1 in /plugins/common
2026-03-07 13:30:09 -05:00
Jose Diaz-Gonzalez
ca0adc1c55 Merge pull request #8378 from farmdawgnation/msf/traefik-dashboard-entrypoint
feat(traefik): support custom entrypoint for api and dashboard
2026-03-07 13:02:11 -05:00
Jose Diaz-Gonzalez
ed5b2e38f6 chore: bump go modules 2026-03-07 11:32:48 -05:00
Jose Diaz-Gonzalez
c33cfa4e5d Merge pull request #8380 from dokku/dependabot/docker/plugins/caddy-vhosts/lucaslorentz/caddy-docker-proxy-2.11
chore(deps): bump lucaslorentz/caddy-docker-proxy from 2.10 to 2.11 in /plugins/caddy-vhosts
2026-03-07 11:22:44 -05:00
Jose Diaz-Gonzalez
95b02e50dd Merge pull request #8381 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/kubectl-0.35.2
chore(deps): bump k8s.io/kubectl from 0.35.0 to 0.35.2 in /plugins/scheduler-k3s
2026-03-07 11:22:21 -05:00
Jose Diaz-Gonzalez
7a53dc0b89 Merge pull request #8382 from dokku/dependabot/github_actions/docker/login-action-4
chore(deps): bump docker/login-action from 3 to 4
2026-03-07 11:21:52 -05:00
Jose Diaz-Gonzalez
576a75f7e1 Merge pull request #8383 from dokku/dependabot/github_actions/docker/setup-qemu-action-4
chore(deps): bump docker/setup-qemu-action from 3 to 4
2026-03-07 11:21:43 -05:00
Jose Diaz-Gonzalez
97850d0431 Merge pull request #8384 from dokku/dependabot/pip/docs/_build/mkdocs-material-9.7.4
chore(deps): bump mkdocs-material from 9.7.3 to 9.7.4 in /docs/_build
2026-03-07 11:21:28 -05:00
Jose Diaz-Gonzalez
d04edb6129 Merge pull request #8385 from dokku/dependabot/pip/tests/apps/dockerfile-release/django-5.2.12
chore(deps): bump django from 5.2.11 to 5.2.12 in /tests/apps/dockerfile-release
2026-03-07 11:21:13 -05:00
Jose Diaz-Gonzalez
cf03de9f06 Merge pull request #8387 from dokku/dependabot/github_actions/docker/setup-buildx-action-4
chore(deps): bump docker/setup-buildx-action from 3 to 4
2026-03-07 11:20:59 -05:00
Jose Diaz-Gonzalez
08ff20a1a8 Merge pull request #8388 from dokku/dependabot/go_modules/tests/apps/gogrpc/google.golang.org/grpc-1.79.2
chore(deps): bump google.golang.org/grpc from 1.79.1 to 1.79.2 in /tests/apps/gogrpc
2026-03-07 11:20:53 -05:00
Jose Diaz-Gonzalez
308f944f68 Merge pull request #8389 from dokku/dependabot/docker/tests/apps/go-fail-postdeploy/golang-1.26.1
chore(deps): bump golang from 1.26.0 to 1.26.1 in /tests/apps/go-fail-postdeploy
2026-03-07 11:20:14 -05:00
Jose Diaz-Gonzalez
ab138c300b Merge pull request #8390 from dokku/dependabot/docker/tests/apps/gogrpc/golang-1.26.1
chore(deps): bump golang from 1.26.0 to 1.26.1 in /tests/apps/gogrpc
2026-03-07 11:20:06 -05:00
Jose Diaz-Gonzalez
678d1d1291 Merge pull request #8391 from dokku/dependabot/docker/tests/apps/go-fail-predeploy/golang-1.26.1
chore(deps): bump golang from 1.26.0 to 1.26.1 in /tests/apps/go-fail-predeploy
2026-03-07 11:19:58 -05:00
Jose Diaz-Gonzalez
57640d73e5 Merge pull request #8392 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-tini/golang-1.26.1
chore(deps): bump golang from 1.26.0 to 1.26.1 in /tests/apps/zombies-dockerfile-tini
2026-03-07 11:19:50 -05:00
Jose Diaz-Gonzalez
0fe192daf4 Merge pull request #8393 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-no-tini/golang-1.26.1
chore(deps): bump golang from 1.26.0 to 1.26.1 in /tests/apps/zombies-dockerfile-no-tini
2026-03-07 11:18:19 -05:00
dependabot[bot]
f08b54a62a chore(deps): bump golang in /tests/apps/zombies-dockerfile-no-tini
Bumps golang from 1.26.0 to 1.26.1.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-06 13:52:54 +00:00
dependabot[bot]
9e64b1410a chore(deps): bump golang in /tests/apps/zombies-dockerfile-tini
Bumps golang from 1.26.0 to 1.26.1.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-06 13:52:50 +00:00
dependabot[bot]
dcc68fce97 chore(deps): bump golang in /tests/apps/go-fail-predeploy
Bumps golang from 1.26.0 to 1.26.1.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-06 13:52:47 +00:00
dependabot[bot]
e006ef8e94 chore(deps): bump golang from 1.26.0 to 1.26.1 in /tests/apps/gogrpc
Bumps golang from 1.26.0 to 1.26.1.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-06 13:52:43 +00:00
dependabot[bot]
e98bcf96cd chore(deps): bump golang in /tests/apps/go-fail-postdeploy
Bumps golang from 1.26.0 to 1.26.1.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-06 13:52:41 +00:00
dependabot[bot]
0708255811 chore(deps): bump google.golang.org/grpc in /tests/apps/gogrpc
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.79.1 to 1.79.2.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.79.1...v1.79.2)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.79.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-06 13:52:20 +00:00
dependabot[bot]
5247a24172 chore(deps): bump docker/setup-buildx-action from 3 to 4
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3 to 4.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-05 13:53:17 +00:00
dependabot[bot]
ffb582efda chore(deps): bump django in /tests/apps/dockerfile-release
Bumps [django](https://github.com/django/django) from 5.2.11 to 5.2.12.
- [Commits](https://github.com/django/django/compare/5.2.11...5.2.12)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 5.2.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-04 13:55:02 +00:00
dependabot[bot]
fb1b434991 chore(deps): bump mkdocs-material from 9.7.3 to 9.7.4 in /docs/_build
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.7.3 to 9.7.4.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.7.3...9.7.4)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-version: 9.7.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-04 13:53:30 +00:00
dependabot[bot]
3743d90b5c chore(deps): bump docker/setup-qemu-action from 3 to 4
Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 3 to 4.
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](https://github.com/docker/setup-qemu-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: docker/setup-qemu-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-04 13:53:06 +00:00
dependabot[bot]
6d86544e56 chore(deps): bump docker/login-action from 3 to 4
Bumps [docker/login-action](https://github.com/docker/login-action) from 3 to 4.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-04 13:52:59 +00:00
dependabot[bot]
6bed287140 chore(deps): bump k8s.io/kubectl in /plugins/scheduler-k3s
Bumps [k8s.io/kubectl](https://github.com/kubernetes/kubectl) from 0.35.0 to 0.35.2.
- [Commits](https://github.com/kubernetes/kubectl/compare/v0.35.0...v0.35.2)

---
updated-dependencies:
- dependency-name: k8s.io/kubectl
  dependency-version: 0.35.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-02 14:43:46 +00:00
dependabot[bot]
2bd0114e28 chore(deps): bump lucaslorentz/caddy-docker-proxy
Bumps lucaslorentz/caddy-docker-proxy from 2.10 to 2.11.

---
updated-dependencies:
- dependency-name: lucaslorentz/caddy-docker-proxy
  dependency-version: '2.11'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-02 14:43:10 +00:00
apple
28f76dd30c Merge branch 'master' into cn
* master: (427 commits)
  chore(deps): bump gunicorn from 25.0.2 to 25.1.0 in /tests/apps/multi
  chore(deps): bump flask from 3.1.2 to 3.1.3 in /tests/apps/multi
  chore(deps): bump python in /docs/_build
  chore(deps): bump google.golang.org/grpc in /tests/apps/gogrpc
  chore(deps): bump qs from 6.14.1 to 6.14.2 in /tests/apps/checks-root
  chore(deps): bump rack from 3.2.4 to 3.2.5 in /tests/apps/ruby
  fix: call correct function for limiting letsencrypt to certain domains
  chore(deps): bump gunicorn in /tests/apps/python-flask
  chore(deps): bump whitenoise in /tests/apps/dockerfile-release
  chore(deps): bump phusion/baseimage from noble-1.0.2 to noble-1.0.3
  chore(deps): bump actions/upload-artifact from 6 to 7
  chore(deps): bump actions/download-artifact from 7 to 8
  chore(deps): bump github.com/traefik/traefik/v2
  chore(deps): bump gunicorn in /tests/apps/dockerfile-release
  chore(deps): bump flask from 3.1.2 to 3.1.3 in /tests/apps/python-flask
  chore(deps): bump traefik from 3.6.7 to 3.6.9 in /plugins/traefik-vhosts
  chore(deps): bump mkdocs-material from 9.7.1 to 9.7.3 in /docs/_build
  chore(deps): bump byjg/easy-haproxy in /plugins/haproxy-vhosts
  chore(deps): bump dj-database-url in /tests/apps/dockerfile-release
  chore(deps): bump werkzeug in /tests/apps/python-flask
  ...

# Conflicts:
#	common.mk
#	contrib/dependencies.json
2026-03-02 16:41:58 +08:00
Jose Diaz-Gonzalez
1b08b8c0e6 Merge pull request #8354 from dokku/dependabot/go_modules/tests/apps/gogrpc/google.golang.org/grpc-1.79.1
chore(deps): bump google.golang.org/grpc from 1.78.0 to 1.79.1 in /tests/apps/gogrpc
2026-03-01 06:19:44 -05:00
Jose Diaz-Gonzalez
64f90e231b Merge pull request #8340 from dokku/dependabot/docker/docs/_build/python-3.14.3-alpine
chore(deps): bump python from 3.14.2-alpine to 3.14.3-alpine in /docs/_build
2026-03-01 06:19:28 -05:00
Jose Diaz-Gonzalez
a60ef2106b Merge pull request #8353 from dokku/dependabot/pip/tests/apps/multi/gunicorn-25.1.0
chore(deps): bump gunicorn from 25.0.2 to 25.1.0 in /tests/apps/multi
2026-03-01 04:53:21 -05:00
dependabot[bot]
7be2754ab2 chore(deps): bump gunicorn from 25.0.2 to 25.1.0 in /tests/apps/multi
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 25.0.2 to 25.1.0.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/25.0.2...25.1.0)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-version: 25.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-01 09:48:56 +00:00
Jose Diaz-Gonzalez
42100e5bba Merge pull request #8357 from dokku/dependabot/npm_and_yarn/tests/apps/checks-root/qs-6.14.2
chore(deps): bump qs from 6.14.1 to 6.14.2 in /tests/apps/checks-root
2026-03-01 04:48:02 -05:00
Jose Diaz-Gonzalez
4448b1f9b4 Merge pull request #8361 from dokku/dependabot/pip/tests/apps/multi/flask-3.1.3
chore(deps): bump flask from 3.1.2 to 3.1.3 in /tests/apps/multi
2026-03-01 04:47:42 -05:00
Jose Diaz-Gonzalez
cb0833aa38 Merge pull request #8360 from dokku/dependabot/bundler/tests/apps/ruby/rack-3.2.5
chore(deps): bump rack from 3.2.4 to 3.2.5 in /tests/apps/ruby
2026-03-01 03:44:14 -05:00
dependabot[bot]
7c9fab1c63 chore(deps): bump github.com/onsi/gomega in /plugins/common
Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.39.0 to 1.39.1.
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/gomega/compare/v1.39.0...v1.39.1)

---
updated-dependencies:
- dependency-name: github.com/onsi/gomega
  dependency-version: 1.39.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-01 07:12:46 +00:00
dependabot[bot]
58a56e7da3 chore(deps): bump flask from 3.1.2 to 3.1.3 in /tests/apps/multi
Bumps [flask](https://github.com/pallets/flask) from 3.1.2 to 3.1.3.
- [Release notes](https://github.com/pallets/flask/releases)
- [Changelog](https://github.com/pallets/flask/blob/3.1.3/CHANGES.rst)
- [Commits](https://github.com/pallets/flask/compare/3.1.2...3.1.3)

---
updated-dependencies:
- dependency-name: flask
  dependency-version: 3.1.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-01 07:12:23 +00:00
dependabot[bot]
b99e9647e1 chore(deps): bump python in /docs/_build
Bumps python from 3.14.2-alpine to 3.14.3-alpine.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.14.3-alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-01 07:12:17 +00:00
dependabot[bot]
f20ea22812 chore(deps): bump google.golang.org/grpc in /tests/apps/gogrpc
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.78.0 to 1.79.1.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.78.0...v1.79.1)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.79.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-01 07:12:08 +00:00
dependabot[bot]
d90172cabc chore(deps): bump qs from 6.14.1 to 6.14.2 in /tests/apps/checks-root
Bumps [qs](https://github.com/ljharb/qs) from 6.14.1 to 6.14.2.
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.14.1...v6.14.2)

---
updated-dependencies:
- dependency-name: qs
  dependency-version: 6.14.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-01 07:12:06 +00:00
Jose Diaz-Gonzalez
d54d4d3c9d Merge pull request #8332 from dokku/dependabot/maven/tests/apps/java/org.apache.maven.plugins-maven-dependency-plugin-3.10.0
chore(deps-dev): bump org.apache.maven.plugins:maven-dependency-plugin from 3.9.0 to 3.10.0 in /tests/apps/java
2026-03-01 02:11:57 -05:00
Jose Diaz-Gonzalez
bc631c9644 Merge pull request #8336 from dokku/dependabot/docker/tests/apps/dockerfile-release/python-3.14.3-bookworm
chore(deps): bump python from 3.14.2-bookworm to 3.14.3-bookworm in /tests/apps/dockerfile-release
2026-03-01 02:11:51 -05:00
Jose Diaz-Gonzalez
36aaf81839 Merge pull request #8355 from dokku/dependabot/pip/tests/apps/python-flask/gunicorn-25.1.0
chore(deps): bump gunicorn from 25.0.2 to 25.1.0 in /tests/apps/python-flask
2026-03-01 02:11:28 -05:00
Jose Diaz-Gonzalez
a5dadaa184 Merge pull request #8356 from dokku/dependabot/pip/tests/apps/dockerfile-release/gunicorn-25.1.0
chore(deps): bump gunicorn from 25.0.2 to 25.1.0 in /tests/apps/dockerfile-release
2026-03-01 02:11:22 -05:00
Jose Diaz-Gonzalez
0e8bf543ac Merge pull request #8358 from dokku/dependabot/pip/docs/_build/pymdown-extensions-10.21
chore(deps): bump pymdown-extensions from 10.20.1 to 10.21 in /docs/_build
2026-03-01 02:11:10 -05:00
dependabot[bot]
5648d05b7e chore(deps): bump rack from 3.2.4 to 3.2.5 in /tests/apps/ruby
Bumps [rack](https://github.com/rack/rack) from 3.2.4 to 3.2.5.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v3.2.4...v3.2.5)

---
updated-dependencies:
- dependency-name: rack
  dependency-version: 3.2.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-01 07:11:07 +00:00
Jose Diaz-Gonzalez
4fb976b3a3 Merge pull request #8379 from dokku/fix-allowed-domains-call
fix: call correct function for limiting letsencrypt to certain domains
2026-03-01 02:10:29 -05:00
Jose Diaz-Gonzalez
f2b367ec7a Merge pull request #8371 from dokku/dependabot/docker/plugins/haproxy-vhosts/byjg/easy-haproxy-6.0.1
chore(deps): bump byjg/easy-haproxy from 5.0.0 to 6.0.1 in /plugins/haproxy-vhosts
2026-03-01 00:08:09 -05:00
Jose Diaz-Gonzalez
dcf93a4610 fix: call correct function for limiting letsencrypt to certain domains 2026-03-01 00:07:47 -05:00
dependabot[bot]
bc9873c75d chore(deps): bump gunicorn in /tests/apps/python-flask
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 25.0.2 to 25.1.0.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/25.0.2...25.1.0)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-version: 25.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-01 05:02:41 +00:00
Jose Diaz-Gonzalez
ecc2b39c00 Merge pull request #8362 from dokku/dependabot/pip/tests/apps/python-flask/flask-3.1.3
chore(deps): bump flask from 3.1.2 to 3.1.3 in /tests/apps/python-flask
2026-03-01 00:01:44 -05:00
Jose Diaz-Gonzalez
cd55d85dbe Merge pull request #8374 from dokku/dependabot/github_actions/actions/download-artifact-8
chore(deps): bump actions/download-artifact from 7 to 8
2026-03-01 00:01:35 -05:00
Jose Diaz-Gonzalez
4b4af8ff99 Merge pull request #8375 from dokku/dependabot/github_actions/actions/upload-artifact-7
chore(deps): bump actions/upload-artifact from 6 to 7
2026-02-28 23:59:51 -05:00
Jose Diaz-Gonzalez
54162738f1 Merge pull request #8376 from dokku/dependabot/docker/phusion/baseimage-noble-1.0.3
chore(deps): bump phusion/baseimage from noble-1.0.2 to noble-1.0.3
2026-02-28 23:59:41 -05:00
Jose Diaz-Gonzalez
de52540815 Merge pull request #8377 from dokku/dependabot/pip/tests/apps/dockerfile-release/whitenoise-6.12.0
chore(deps): bump whitenoise from 6.11.0 to 6.12.0 in /tests/apps/dockerfile-release
2026-02-28 23:59:26 -05:00
Jose Diaz-Gonzalez
0feda6ecc2 Merge pull request #8365 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/traefik/traefik/v2-2.11.37
chore(deps): bump github.com/traefik/traefik/v2 from 2.11.36 to 2.11.37 in /plugins/scheduler-k3s
2026-02-28 18:55:23 -05:00
Matt Farmer
3cf02f9904 feat(traefik-vhosts): support custom entrypoint for API/dashboard
Add two new global-only properties to configure a dedicated Traefik entrypoint
for the API and dashboard, enabling network isolation on private interfaces.
Includes comprehensive test coverage for property management and compose config.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-02-28 18:07:07 -05:00
dependabot[bot]
383f70f981 chore(deps): bump whitenoise in /tests/apps/dockerfile-release
Bumps [whitenoise](https://github.com/evansd/whitenoise) from 6.11.0 to 6.12.0.
- [Changelog](https://github.com/evansd/whitenoise/blob/main/docs/changelog.rst)
- [Commits](https://github.com/evansd/whitenoise/compare/6.11.0...6.12.0)

---
updated-dependencies:
- dependency-name: whitenoise
  dependency-version: 6.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-27 13:54:30 +00:00
dependabot[bot]
59867f20ad chore(deps): bump phusion/baseimage from noble-1.0.2 to noble-1.0.3
Bumps phusion/baseimage from noble-1.0.2 to noble-1.0.3.

---
updated-dependencies:
- dependency-name: phusion/baseimage
  dependency-version: noble-1.0.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-27 13:52:51 +00:00
dependabot[bot]
704035b92d chore(deps): bump actions/upload-artifact from 6 to 7
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6 to 7.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-27 13:52:47 +00:00
dependabot[bot]
c65eec7027 chore(deps): bump actions/download-artifact from 7 to 8
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 7 to 8.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v7...v8)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-27 13:52:39 +00:00
dependabot[bot]
1651b8abf4 chore(deps): bump github.com/traefik/traefik/v2
Bumps [github.com/traefik/traefik/v2](https://github.com/traefik/traefik) from 2.11.36 to 2.11.37.
- [Release notes](https://github.com/traefik/traefik/releases)
- [Changelog](https://github.com/traefik/traefik/blob/master/CHANGELOG.md)
- [Commits](https://github.com/traefik/traefik/compare/v2.11.36...v2.11.37)

---
updated-dependencies:
- dependency-name: github.com/traefik/traefik/v2
  dependency-version: 2.11.37
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-25 04:36:50 +00:00
dependabot[bot]
2c102cc815 chore(deps): bump gunicorn in /tests/apps/dockerfile-release
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 25.0.2 to 25.1.0.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/25.0.2...25.1.0)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-version: 25.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-25 04:36:43 +00:00
dependabot[bot]
a70184c65d chore(deps): bump flask from 3.1.2 to 3.1.3 in /tests/apps/python-flask
Bumps [flask](https://github.com/pallets/flask) from 3.1.2 to 3.1.3.
- [Release notes](https://github.com/pallets/flask/releases)
- [Changelog](https://github.com/pallets/flask/blob/3.1.3/CHANGES.rst)
- [Commits](https://github.com/pallets/flask/compare/3.1.2...3.1.3)

---
updated-dependencies:
- dependency-name: flask
  dependency-version: 3.1.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-25 04:36:21 +00:00
Jose Diaz-Gonzalez
ffc724993a Merge pull request #8367 from dokku/dependabot/pip/tests/apps/python-flask/werkzeug-3.1.6
chore(deps): bump werkzeug from 3.1.5 to 3.1.6 in /tests/apps/python-flask
2026-02-24 23:35:17 -05:00
Jose Diaz-Gonzalez
dd69c08400 Merge pull request #8368 from dokku/dependabot/pip/tests/apps/dockerfile-release/dj-database-url-3.1.2
chore(deps): bump dj-database-url from 3.1.0 to 3.1.2 in /tests/apps/dockerfile-release
2026-02-24 23:35:10 -05:00
Jose Diaz-Gonzalez
bccd940ebf Merge pull request #8372 from dokku/dependabot/pip/docs/_build/mkdocs-material-9.7.3
chore(deps): bump mkdocs-material from 9.7.1 to 9.7.3 in /docs/_build
2026-02-24 21:38:57 -05:00
Jose Diaz-Gonzalez
31e9048425 Merge pull request #8373 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-3.6.9
chore(deps): bump traefik from 3.6.7 to 3.6.9 in /plugins/traefik-vhosts
2026-02-24 21:38:49 -05:00
dependabot[bot]
d9c70c55a8 chore(deps): bump traefik from 3.6.7 to 3.6.9 in /plugins/traefik-vhosts
Bumps traefik from 3.6.7 to 3.6.9.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: 3.6.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-24 13:54:58 +00:00
dependabot[bot]
02a0a47ffb chore(deps): bump mkdocs-material from 9.7.1 to 9.7.3 in /docs/_build
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.7.1 to 9.7.3.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.7.1...9.7.3)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-version: 9.7.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-24 13:54:27 +00:00
dependabot[bot]
0af185df3d chore(deps): bump byjg/easy-haproxy in /plugins/haproxy-vhosts
Bumps byjg/easy-haproxy from 5.0.0 to 6.0.1.

---
updated-dependencies:
- dependency-name: byjg/easy-haproxy
  dependency-version: 6.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-23 14:52:12 +00:00
dependabot[bot]
918cba4f1b chore(deps): bump dj-database-url in /tests/apps/dockerfile-release
Bumps [dj-database-url](https://github.com/jazzband/dj-database-url) from 3.1.0 to 3.1.2.
- [Release notes](https://github.com/jazzband/dj-database-url/releases)
- [Changelog](https://github.com/jazzband/dj-database-url/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jazzband/dj-database-url/compare/v3.1.0...v3.1.2)

---
updated-dependencies:
- dependency-name: dj-database-url
  dependency-version: 3.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-20 13:54:38 +00:00
dependabot[bot]
64886aae22 chore(deps): bump werkzeug in /tests/apps/python-flask
Bumps [werkzeug](https://github.com/pallets/werkzeug) from 3.1.5 to 3.1.6.
- [Release notes](https://github.com/pallets/werkzeug/releases)
- [Changelog](https://github.com/pallets/werkzeug/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/werkzeug/compare/3.1.5...3.1.6)

---
updated-dependencies:
- dependency-name: werkzeug
  dependency-version: 3.1.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-20 13:52:36 +00:00
Jose Diaz-Gonzalez
e734b87ead Merge pull request #8351 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-tini/golang-1.26.0
chore(deps): bump golang from 1.25.6 to 1.26.0 in /tests/apps/zombies-dockerfile-tini
2026-02-19 00:11:52 -05:00
Jose Diaz-Gonzalez
ee9335fb46 Merge pull request #8350 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-no-tini/golang-1.26.0
chore(deps): bump golang from 1.25.6 to 1.26.0 in /tests/apps/zombies-dockerfile-no-tini
2026-02-19 00:11:45 -05:00
Jose Diaz-Gonzalez
73c6282e6b Merge pull request #8349 from dokku/dependabot/docker/tests/apps/go-fail-postdeploy/golang-1.26.0
chore(deps): bump golang from 1.25.6 to 1.26.0 in /tests/apps/go-fail-postdeploy
2026-02-19 00:11:34 -05:00
Jose Diaz-Gonzalez
1897af90f9 Merge pull request #8348 from dokku/dependabot/docker/tests/apps/gogrpc/golang-1.26.0
chore(deps): bump golang from 1.25.6 to 1.26.0 in /tests/apps/gogrpc
2026-02-19 00:11:22 -05:00
Jose Diaz-Gonzalez
7eca88180b Merge pull request #8347 from dokku/dependabot/docker/tests/apps/go-fail-predeploy/golang-1.26.0
chore(deps): bump golang from 1.25.6 to 1.26.0 in /tests/apps/go-fail-predeploy
2026-02-19 00:11:16 -05:00
Jose Diaz-Gonzalez
1f7330649f Merge pull request #8344 from dokku/dependabot/go_modules/plugins/scheduler-k3s/sigs.k8s.io/kustomize/api-0.21.1
chore(deps): bump sigs.k8s.io/kustomize/api from 0.21.0 to 0.21.1 in /plugins/scheduler-k3s
2026-02-19 00:11:06 -05:00
dependabot[bot]
334b3186c1 chore(deps): bump pymdown-extensions in /docs/_build
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.20.1 to 10.21.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/commits/10.21)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-version: '10.21'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-16 14:52:58 +00:00
dependabot[bot]
a80822a9da chore(deps): bump golang in /tests/apps/zombies-dockerfile-tini
Bumps golang from 1.25.6 to 1.26.0.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-11 13:52:59 +00:00
dependabot[bot]
43842213a7 chore(deps): bump golang in /tests/apps/zombies-dockerfile-no-tini
Bumps golang from 1.25.6 to 1.26.0.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-11 13:52:55 +00:00
dependabot[bot]
ba162a6ffa chore(deps): bump golang in /tests/apps/go-fail-postdeploy
Bumps golang from 1.25.6 to 1.26.0.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-11 13:52:55 +00:00
dependabot[bot]
d534fc6f2c chore(deps): bump golang from 1.25.6 to 1.26.0 in /tests/apps/gogrpc
Bumps golang from 1.25.6 to 1.26.0.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-11 13:52:51 +00:00
dependabot[bot]
fba51a1906 chore(deps): bump golang in /tests/apps/go-fail-predeploy
Bumps golang from 1.25.6 to 1.26.0.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-11 13:52:50 +00:00
dependabot[bot]
2a1704ff6a chore(deps): bump sigs.k8s.io/kustomize/api in /plugins/scheduler-k3s
Bumps [sigs.k8s.io/kustomize/api](https://github.com/kubernetes-sigs/kustomize) from 0.21.0 to 0.21.1.
- [Release notes](https://github.com/kubernetes-sigs/kustomize/releases)
- [Commits](https://github.com/kubernetes-sigs/kustomize/compare/api/v0.21.0...api/v0.21.1)

---
updated-dependencies:
- dependency-name: sigs.k8s.io/kustomize/api
  dependency-version: 0.21.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-10 13:53:58 +00:00
dependabot[bot]
eb6777be4a chore(deps): bump python in /tests/apps/dockerfile-release
Bumps python from 3.14.2-bookworm to 3.14.3-bookworm.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.14.3-bookworm
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-09 15:34:11 +00:00
dependabot[bot]
77603ee82e chore(deps-dev): bump org.apache.maven.plugins:maven-dependency-plugin
Bumps [org.apache.maven.plugins:maven-dependency-plugin](https://github.com/apache/maven-dependency-plugin) from 3.9.0 to 3.10.0.
- [Release notes](https://github.com/apache/maven-dependency-plugin/releases)
- [Commits](https://github.com/apache/maven-dependency-plugin/compare/maven-dependency-plugin-3.9.0...maven-dependency-plugin-3.10.0)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-dependency-plugin
  dependency-version: 3.10.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-09 15:33:04 +00:00
Jose Diaz-Gonzalez
ed4b0c844a Merge pull request #8329 from dokku/dependabot/pip/tests/apps/multi/gunicorn-25.0.2
chore(deps): bump gunicorn from 25.0.1 to 25.0.2 in /tests/apps/multi
2026-02-06 16:18:03 -05:00
Jose Diaz-Gonzalez
29ec622dfe Merge pull request #8330 from dokku/dependabot/pip/tests/apps/python-flask/gunicorn-25.0.2
chore(deps): bump gunicorn from 25.0.1 to 25.0.2 in /tests/apps/python-flask
2026-02-06 16:17:57 -05:00
Jose Diaz-Gonzalez
3a19b18839 Merge pull request #8331 from dokku/dependabot/pip/tests/apps/dockerfile-release/gunicorn-25.0.2
chore(deps): bump gunicorn from 25.0.1 to 25.0.2 in /tests/apps/dockerfile-release
2026-02-06 16:17:48 -05:00
dependabot[bot]
01cb3c3cfc chore(deps): bump gunicorn in /tests/apps/dockerfile-release
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 25.0.1 to 25.0.2.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/25.0.1...v25.0.2)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-version: 25.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-06 13:55:02 +00:00
dependabot[bot]
9e6aba96f2 chore(deps): bump gunicorn in /tests/apps/python-flask
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 25.0.1 to 25.0.2.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/25.0.1...v25.0.2)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-version: 25.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-06 13:52:39 +00:00
dependabot[bot]
5cc4c3da36 chore(deps): bump gunicorn from 25.0.1 to 25.0.2 in /tests/apps/multi
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 25.0.1 to 25.0.2.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/25.0.1...v25.0.2)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-version: 25.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-06 13:52:29 +00:00
Jose Diaz-Gonzalez
85ea47c6ed Merge pull request #8320 from dokku/dependabot/pip/tests/apps/dockerfile-release/django-5.2.11
chore(deps): bump django from 5.2.10 to 5.2.11 in /tests/apps/dockerfile-release
2026-02-04 10:05:46 -05:00
Jose Diaz-Gonzalez
5a90da2125 Merge pull request #8321 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/traefik/traefik/v2-2.11.36
chore(deps): bump github.com/traefik/traefik/v2 from 2.11.35 to 2.11.36 in /plugins/scheduler-k3s
2026-02-04 10:05:36 -05:00
dependabot[bot]
a9ae0ec6ad chore(deps): bump github.com/traefik/traefik/v2
Bumps [github.com/traefik/traefik/v2](https://github.com/traefik/traefik) from 2.11.35 to 2.11.36.
- [Release notes](https://github.com/traefik/traefik/releases)
- [Changelog](https://github.com/traefik/traefik/blob/v2.11.36/CHANGELOG.md)
- [Commits](https://github.com/traefik/traefik/compare/v2.11.35...v2.11.36)

---
updated-dependencies:
- dependency-name: github.com/traefik/traefik/v2
  dependency-version: 2.11.36
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-03 13:54:38 +00:00
dependabot[bot]
81f32a143b chore(deps): bump django in /tests/apps/dockerfile-release
Bumps [django](https://github.com/django/django) from 5.2.10 to 5.2.11.
- [Commits](https://github.com/django/django/commits)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 5.2.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-03 13:54:36 +00:00
Jose Diaz-Gonzalez
8bf1fdad22 Merge pull request #8319 from dokku/dependabot/pip/tests/apps/dockerfile-release/gunicorn-25.0.1
chore(deps): bump gunicorn from 24.1.1 to 25.0.1 in /tests/apps/dockerfile-release
2026-02-02 20:32:26 -05:00
Jose Diaz-Gonzalez
7601fa2c7f Merge pull request #8318 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/cert-manager/cert-manager-1.19.3
chore(deps): bump github.com/cert-manager/cert-manager from 1.19.2 to 1.19.3 in /plugins/scheduler-k3s
2026-02-02 20:32:19 -05:00
Jose Diaz-Gonzalez
5c1be45a43 Merge pull request #8317 from dokku/dependabot/pip/tests/apps/multi/gunicorn-25.0.1
chore(deps): bump gunicorn from 24.1.1 to 25.0.1 in /tests/apps/multi
2026-02-02 20:31:51 -05:00
Jose Diaz-Gonzalez
d621c5dd76 Merge pull request #8316 from dokku/dependabot/pip/tests/apps/python-flask/gunicorn-25.0.1
chore(deps): bump gunicorn from 24.1.1 to 25.0.1 in /tests/apps/python-flask
2026-02-02 20:31:45 -05:00
dependabot[bot]
4c16f7df82 chore(deps): bump gunicorn in /tests/apps/dockerfile-release
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 24.1.1 to 25.0.1.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/24.1.1...25.0.1)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-version: 25.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-02 15:37:15 +00:00
dependabot[bot]
b65de7dcbb chore(deps): bump github.com/cert-manager/cert-manager
Bumps [github.com/cert-manager/cert-manager](https://github.com/cert-manager/cert-manager) from 1.19.2 to 1.19.3.
- [Release notes](https://github.com/cert-manager/cert-manager/releases)
- [Changelog](https://github.com/cert-manager/cert-manager/blob/master/RELEASE.md)
- [Commits](https://github.com/cert-manager/cert-manager/compare/v1.19.2...v1.19.3)

---
updated-dependencies:
- dependency-name: github.com/cert-manager/cert-manager
  dependency-version: 1.19.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-02 15:36:58 +00:00
dependabot[bot]
ab6c1eaedc chore(deps): bump gunicorn from 24.1.1 to 25.0.1 in /tests/apps/multi
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 24.1.1 to 25.0.1.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/24.1.1...25.0.1)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-version: 25.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-02 15:33:56 +00:00
dependabot[bot]
47b0dd23bd chore(deps): bump gunicorn in /tests/apps/python-flask
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 24.1.1 to 25.0.1.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/24.1.1...25.0.1)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-version: 25.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-02 15:33:52 +00:00
Dokku Bot
82469c4c5f Release 0.37.6
# History

## 0.37.6

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.37.6/bootstrap.sh
sudo DOKKU_TAG=v0.37.6 bash bootstrap.sh
```

### Bug Fixes

- #8306: @josegonzalez Ensure we can call storage:report properly

### Documentation

- #8289: @josegonzalez Add an architecture document for dokku
- #8288: @josegonzalez Add a readme for the docs folder

### Dependencies

- #8312: @dependabot[bot] chore(deps): bump timberio/vector from 0.52.0-debian to 0.53.0-debian in /plugins/logs
- #8311: @dependabot[bot] chore(deps): bump gunicorn from 24.0.0 to 24.1.1 in /tests/apps/dockerfile-release
- #8308: @dependabot[bot] chore(deps): bump gunicorn from 24.0.0 to 24.1.1 in /tests/apps/multi
- #8309: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.20 to 10.20.1 in /docs/_build
- #8307: @dependabot[bot] chore(deps): bump gunicorn from 24.0.0 to 24.1.1 in /tests/apps/python-flask
- #8301: @dependabot[bot] chore(deps): bump helm.sh/helm/v3 from 3.19.5 to 3.20.0 in /plugins/scheduler-k3s
- #8299: @dependabot[bot] chore(deps): bump ruby from 4.0.0 to 4.0.1 in /tests/apps/dockerfile-entrypoint
- #8293: @dependabot[bot] chore(deps): bump golang from 1.25.5 to 1.25.6 in /tests/apps/zombies-dockerfile-no-tini
- #8296: @dependabot[bot] chore(deps): bump soupsieve from 2.8.1 to 2.8.3 in /docs/_build
- #8295: @dependabot[bot] chore(deps): bump golang from 1.25.5 to 1.25.6 in /tests/apps/go-fail-postdeploy
- #8294: @dependabot[bot] chore(deps): bump golang from 1.25.5 to 1.25.6 in /tests/apps/gogrpc
- #8291: @dependabot[bot] chore(deps): bump golang from 1.25.5 to 1.25.6 in /tests/apps/zombies-dockerfile-tini
- #8292: @dependabot[bot] chore(deps): bump golang from 1.25.5 to 1.25.6 in /tests/apps/go-fail-predeploy
- #8277: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.11.34 to 2.11.35 in /plugins/scheduler-k3s
- #8297: @dependabot[bot] chore(deps): bump pyparsing from 3.3.1 to 3.3.2 in /docs/_build
- #8298: @dependabot[bot] chore(deps): bump lodash from 4.17.21 to 4.17.23 in /tests/apps/multi
- #8300: @dependabot[bot] chore(deps): bump packaging from 25.0 to 26.0 in /docs/_build
- #8303: @dependabot[bot] chore(deps): bump gunicorn from 23.0.0 to 24.0.0 in /tests/apps/python-flask
- #8305: @dependabot[bot] chore(deps): bump gunicorn from 23.0.0 to 24.0.0 in /tests/apps/dockerfile-release
- #8304: @dependabot[bot] chore(deps): bump gunicorn from 23.0.0 to 24.0.0 in /tests/apps/multi
- #8280: @dependabot[bot] chore(deps): bump helm.sh/helm/v3 from 3.19.4 to 3.19.5 in /plugins/scheduler-k3s
- #8279: @dependabot[bot] chore(deps): bump traefik from 3.6.6 to 3.6.7 in /plugins/traefik-vhosts
2026-01-28 17:39:04 +00:00
Jose Diaz-Gonzalez
edbb7fe664 Merge pull request #8312 from dokku/dependabot/docker/plugins/logs/timberio/vector-0.53.0-debian
chore(deps): bump timberio/vector from 0.52.0-debian to 0.53.0-debian in /plugins/logs
2026-01-28 12:37:40 -05:00
dependabot[bot]
febfe26e8c chore(deps): bump timberio/vector in /plugins/logs
Bumps timberio/vector from 0.52.0-debian to 0.53.0-debian.

---
updated-dependencies:
- dependency-name: timberio/vector
  dependency-version: 0.53.0-debian
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-28 13:53:36 +00:00
Jose Diaz-Gonzalez
3aaa54d5eb Merge pull request #8311 from dokku/dependabot/pip/tests/apps/dockerfile-release/gunicorn-24.1.1
chore(deps): bump gunicorn from 24.0.0 to 24.1.1 in /tests/apps/dockerfile-release
2026-01-26 12:03:51 -05:00
Jose Diaz-Gonzalez
e34c14591c Merge pull request #8308 from dokku/dependabot/pip/tests/apps/multi/gunicorn-24.1.1
chore(deps): bump gunicorn from 24.0.0 to 24.1.1 in /tests/apps/multi
2026-01-26 11:08:17 -05:00
Jose Diaz-Gonzalez
c4209be082 Merge pull request #8309 from dokku/dependabot/pip/docs/_build/pymdown-extensions-10.20.1
chore(deps): bump pymdown-extensions from 10.20 to 10.20.1 in /docs/_build
2026-01-26 11:07:32 -05:00
Jose Diaz-Gonzalez
4278b8876a Merge pull request #8307 from dokku/dependabot/pip/tests/apps/python-flask/gunicorn-24.1.1
chore(deps): bump gunicorn from 24.0.0 to 24.1.1 in /tests/apps/python-flask
2026-01-26 11:05:58 -05:00
dependabot[bot]
ef0787e12d chore(deps): bump gunicorn in /tests/apps/dockerfile-release
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 24.0.0 to 24.1.1.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/24.0.0...24.1.1)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-version: 24.1.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-26 15:08:42 +00:00
dependabot[bot]
f127a04337 chore(deps): bump pymdown-extensions in /docs/_build
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.20 to 10.20.1.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/commits)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-version: 10.20.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-26 15:06:34 +00:00
dependabot[bot]
aad9072b3a chore(deps): bump gunicorn from 24.0.0 to 24.1.1 in /tests/apps/multi
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 24.0.0 to 24.1.1.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/24.0.0...24.1.1)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-version: 24.1.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-26 15:05:18 +00:00
dependabot[bot]
7d833428ac chore(deps): bump gunicorn in /tests/apps/python-flask
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 24.0.0 to 24.1.1.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/24.0.0...24.1.1)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-version: 24.1.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-26 15:05:09 +00:00
Jose Diaz-Gonzalez
8ba3ab3b4a Merge pull request #8301 from dokku/dependabot/go_modules/plugins/scheduler-k3s/helm.sh/helm/v3-3.20.0
chore(deps): bump helm.sh/helm/v3 from 3.19.5 to 3.20.0 in /plugins/scheduler-k3s
2026-01-26 00:05:41 -05:00
Jose Diaz-Gonzalez
d5eefba20a Merge pull request #8299 from dokku/dependabot/docker/tests/apps/dockerfile-entrypoint/ruby-4.0.1
chore(deps): bump ruby from 4.0.0 to 4.0.1 in /tests/apps/dockerfile-entrypoint
2026-01-26 00:05:34 -05:00
Jose Diaz-Gonzalez
de6bf2812f Merge pull request #8306 from dokku/8275-fix-storage-report
Ensure we can call storage:report properly
2026-01-26 00:05:23 -05:00
Jose Diaz-Gonzalez
bdbd295a02 fix: ensure we can call storage:report properly
Closes #8275
2026-01-25 22:58:10 -05:00
dependabot[bot]
7aa5d41350 chore(deps): bump helm.sh/helm/v3 in /plugins/scheduler-k3s
Bumps [helm.sh/helm/v3](https://github.com/helm/helm) from 3.19.5 to 3.20.0.
- [Release notes](https://github.com/helm/helm/releases)
- [Commits](https://github.com/helm/helm/compare/v3.19.5...v3.20.0)

---
updated-dependencies:
- dependency-name: helm.sh/helm/v3
  dependency-version: 3.20.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-24 22:30:36 +00:00
Jose Diaz-Gonzalez
6a9e416724 Merge pull request #8293 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-no-tini/golang-1.25.6
chore(deps): bump golang from 1.25.5 to 1.25.6 in /tests/apps/zombies-dockerfile-no-tini
2026-01-24 17:28:27 -05:00
Jose Diaz-Gonzalez
e9625047d7 Merge pull request #8296 from dokku/dependabot/pip/docs/_build/soupsieve-2.8.3
chore(deps): bump soupsieve from 2.8.1 to 2.8.3 in /docs/_build
2026-01-24 17:28:20 -05:00
Jose Diaz-Gonzalez
73aaf500ba Merge pull request #8295 from dokku/dependabot/docker/tests/apps/go-fail-postdeploy/golang-1.25.6
chore(deps): bump golang from 1.25.5 to 1.25.6 in /tests/apps/go-fail-postdeploy
2026-01-24 17:28:14 -05:00
Jose Diaz-Gonzalez
e402e766b0 Merge pull request #8294 from dokku/dependabot/docker/tests/apps/gogrpc/golang-1.25.6
chore(deps): bump golang from 1.25.5 to 1.25.6 in /tests/apps/gogrpc
2026-01-24 17:28:09 -05:00
Jose Diaz-Gonzalez
ec1fe57ff4 Merge pull request #8291 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-tini/golang-1.25.6
chore(deps): bump golang from 1.25.5 to 1.25.6 in /tests/apps/zombies-dockerfile-tini
2026-01-24 17:27:57 -05:00
Jose Diaz-Gonzalez
c466c6efab Merge pull request #8292 from dokku/dependabot/docker/tests/apps/go-fail-predeploy/golang-1.25.6
chore(deps): bump golang from 1.25.5 to 1.25.6 in /tests/apps/go-fail-predeploy
2026-01-24 17:27:50 -05:00
Jose Diaz-Gonzalez
9881497bc9 Merge pull request #8277 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/traefik/traefik/v2-2.11.35
chore(deps): bump github.com/traefik/traefik/v2 from 2.11.34 to 2.11.35 in /plugins/scheduler-k3s
2026-01-24 17:27:46 -05:00
Jose Diaz-Gonzalez
ac3efe1675 Merge pull request #8297 from dokku/dependabot/pip/docs/_build/pyparsing-3.3.2
chore(deps): bump pyparsing from 3.3.1 to 3.3.2 in /docs/_build
2026-01-24 17:27:29 -05:00
Jose Diaz-Gonzalez
2ba1e6ec3b Merge pull request #8298 from dokku/dependabot/npm_and_yarn/tests/apps/multi/lodash-4.17.23
chore(deps): bump lodash from 4.17.21 to 4.17.23 in /tests/apps/multi
2026-01-24 17:27:18 -05:00
Jose Diaz-Gonzalez
3d0658f3d8 Merge pull request #8300 from dokku/dependabot/pip/docs/_build/packaging-26.0
chore(deps): bump packaging from 25.0 to 26.0 in /docs/_build
2026-01-24 17:26:58 -05:00
Jose Diaz-Gonzalez
c4f8327ef0 docs: fix readme indentation 2026-01-24 17:26:36 -05:00
Jose Diaz-Gonzalez
8bfb5ff8ca Merge pull request #8303 from dokku/dependabot/pip/tests/apps/python-flask/gunicorn-24.0.0
chore(deps): bump gunicorn from 23.0.0 to 24.0.0 in /tests/apps/python-flask
2026-01-24 17:25:27 -05:00
Jose Diaz-Gonzalez
873bf5eb45 Merge pull request #8305 from dokku/dependabot/pip/tests/apps/dockerfile-release/gunicorn-24.0.0
chore(deps): bump gunicorn from 23.0.0 to 24.0.0 in /tests/apps/dockerfile-release
2026-01-24 17:25:13 -05:00
Jose Diaz-Gonzalez
82c8cf5587 Merge pull request #8304 from dokku/dependabot/pip/tests/apps/multi/gunicorn-24.0.0
chore(deps): bump gunicorn from 23.0.0 to 24.0.0 in /tests/apps/multi
2026-01-24 17:25:08 -05:00
dependabot[bot]
5b4d30a9ad chore(deps): bump gunicorn in /tests/apps/dockerfile-release
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 23.0.0 to 24.0.0.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/23.0.0...24.0.0)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-version: 24.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-23 13:54:49 +00:00
dependabot[bot]
bbabba727b chore(deps): bump gunicorn from 23.0.0 to 24.0.0 in /tests/apps/multi
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 23.0.0 to 24.0.0.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/23.0.0...24.0.0)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-version: 24.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-23 13:52:35 +00:00
dependabot[bot]
cf6377298d chore(deps): bump gunicorn in /tests/apps/python-flask
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 23.0.0 to 24.0.0.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/23.0.0...24.0.0)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-version: 24.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-23 13:52:33 +00:00
dependabot[bot]
a5cc27eaba chore(deps): bump packaging from 25.0 to 26.0 in /docs/_build
Bumps [packaging](https://github.com/pypa/packaging) from 25.0 to 26.0.
- [Release notes](https://github.com/pypa/packaging/releases)
- [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pypa/packaging/compare/25.0...26.0)

---
updated-dependencies:
- dependency-name: packaging
  dependency-version: '26.0'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-22 13:53:24 +00:00
dependabot[bot]
55435f549a chore(deps): bump ruby in /tests/apps/dockerfile-entrypoint
Bumps ruby from 4.0.0 to 4.0.1.

---
updated-dependencies:
- dependency-name: ruby
  dependency-version: 4.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-22 13:52:58 +00:00
dependabot[bot]
842a8f2839 chore(deps): bump lodash from 4.17.21 to 4.17.23 in /tests/apps/multi
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23)

---
updated-dependencies:
- dependency-name: lodash
  dependency-version: 4.17.23
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-21 23:07:04 +00:00
dependabot[bot]
1f5758268e chore(deps): bump pyparsing from 3.3.1 to 3.3.2 in /docs/_build
Bumps [pyparsing](https://github.com/pyparsing/pyparsing) from 3.3.1 to 3.3.2.
- [Release notes](https://github.com/pyparsing/pyparsing/releases)
- [Changelog](https://github.com/pyparsing/pyparsing/blob/master/CHANGES)
- [Commits](https://github.com/pyparsing/pyparsing/compare/3.3.1...3.3.2)

---
updated-dependencies:
- dependency-name: pyparsing
  dependency-version: 3.3.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-21 13:53:29 +00:00
dependabot[bot]
eec52362cd chore(deps): bump soupsieve from 2.8.1 to 2.8.3 in /docs/_build
Bumps [soupsieve](https://github.com/facelessuser/soupsieve) from 2.8.1 to 2.8.3.
- [Release notes](https://github.com/facelessuser/soupsieve/releases)
- [Commits](https://github.com/facelessuser/soupsieve/compare/2.8.1...2.8.3)

---
updated-dependencies:
- dependency-name: soupsieve
  dependency-version: 2.8.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-20 13:53:29 +00:00
dependabot[bot]
a21debe4b0 chore(deps): bump golang in /tests/apps/go-fail-postdeploy
Bumps golang from 1.25.5 to 1.25.6.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-20 13:53:10 +00:00
dependabot[bot]
09934eaa89 chore(deps): bump golang in /tests/apps/zombies-dockerfile-no-tini
Bumps golang from 1.25.5 to 1.25.6.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-20 13:53:05 +00:00
dependabot[bot]
436fcebdd8 chore(deps): bump golang from 1.25.5 to 1.25.6 in /tests/apps/gogrpc
Bumps golang from 1.25.5 to 1.25.6.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-20 13:53:05 +00:00
dependabot[bot]
fdb85039b1 chore(deps): bump golang in /tests/apps/zombies-dockerfile-tini
Bumps golang from 1.25.5 to 1.25.6.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-20 13:53:03 +00:00
dependabot[bot]
4cff2dd02f chore(deps): bump golang in /tests/apps/go-fail-predeploy
Bumps golang from 1.25.5 to 1.25.6.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-20 13:53:03 +00:00
Jose Diaz-Gonzalez
08cd8909b3 Merge pull request #8289 from dokku/architecture-docs
Add an architecture document for dokku
2026-01-19 01:27:09 -05:00
Jose Diaz-Gonzalez
8614706763 docs: add an architecture document for dokku 2026-01-19 01:26:48 -05:00
Jose Diaz-Gonzalez
7dfeff4ffd Merge pull request #8288 from dokku/docs-readme
Add a readme for the docs folder
2026-01-19 00:55:26 -05:00
Jose Diaz-Gonzalez
fba79477df docs: add a readme for the docs folder 2026-01-19 00:54:57 -05:00
dependabot[bot]
956d372dad chore(deps): bump github.com/traefik/traefik/v2
Bumps [github.com/traefik/traefik/v2](https://github.com/traefik/traefik) from 2.11.34 to 2.11.35.
- [Release notes](https://github.com/traefik/traefik/releases)
- [Changelog](https://github.com/traefik/traefik/blob/v2.11.35/CHANGELOG.md)
- [Commits](https://github.com/traefik/traefik/compare/v2.11.34...v2.11.35)

---
updated-dependencies:
- dependency-name: github.com/traefik/traefik/v2
  dependency-version: 2.11.35
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-17 21:15:25 +00:00
Jose Diaz-Gonzalez
9a34b4716f Merge pull request #8280 from dokku/dependabot/go_modules/plugins/scheduler-k3s/helm.sh/helm/v3-3.19.5
chore(deps): bump helm.sh/helm/v3 from 3.19.4 to 3.19.5 in /plugins/scheduler-k3s
2026-01-17 16:13:39 -05:00
Jose Diaz-Gonzalez
bc3ae5f515 Merge pull request #8279 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-3.6.7
chore(deps): bump traefik from 3.6.6 to 3.6.7 in /plugins/traefik-vhosts
2026-01-17 16:13:33 -05:00
dependabot[bot]
7b5db312aa chore(deps): bump helm.sh/helm/v3 in /plugins/scheduler-k3s
Bumps [helm.sh/helm/v3](https://github.com/helm/helm) from 3.19.4 to 3.19.5.
- [Release notes](https://github.com/helm/helm/releases)
- [Commits](https://github.com/helm/helm/compare/v3.19.4...v3.19.5)

---
updated-dependencies:
- dependency-name: helm.sh/helm/v3
  dependency-version: 3.19.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-15 13:54:54 +00:00
dependabot[bot]
1660538e07 chore(deps): bump traefik from 3.6.6 to 3.6.7 in /plugins/traefik-vhosts
Bumps traefik from 3.6.6 to 3.6.7.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: 3.6.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-15 13:53:58 +00:00
Dokku Bot
f924c0be62 Release 0.37.5
# History

## 0.37.5

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.37.5/bootstrap.sh
sudo DOKKU_TAG=v0.37.5 bash bootstrap.sh
```

### Bug Fixes

- #8274: @josegonzalez Delete the tls app chart when the app is deleted
- #8273: @josegonzalez Ensure the destination directory exists when extracting files from a repository
- #8263: @josegonzalez Set correct version for builder-railpack plugin

### New Features

- #8268: @josegonzalez Add the ability to log into a registry on a per-app basis
- #8258: @josegonzalez Add support for dns-01 challenge mode when using traefik
- #8262: @josegonzalez Use certificates imported by certs plugin when deploying via scheduler-k3s
- #8266: @josegonzalez Add a method to force build when re-using an image with git:from-image
- #8265: @josegonzalez Add the ability to skip setting the deploy-branch when running git:sync

### Refactors

- #8264: @josegonzalez Rewrite the storage plugin in golang

### Dependencies

- #8270: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.38.3 to 1.39.0 in /plugins/common
- #8267: @dependabot[bot] chore(deps): bump werkzeug from 3.1.4 to 3.1.5 in /tests/apps/python-flask
- #8260: @dependabot[bot] chore(deps): bump django from 5.2.9 to 5.2.10 in /tests/apps/dockerfile-release
- #8256: @dependabot[bot] chore(deps): bump luizm/action-sh-checker from 0.9.0 to 0.10.0
- #8257: @dependabot[bot] chore(deps): bump dj-database-url from 3.0.1 to 3.1.0 in /tests/apps/dockerfile-release
2026-01-10 13:50:01 +00:00
Jose Diaz-Gonzalez
ed8fe40a1c Merge pull request #8268 from dokku/5324-login-to-registry-per-app
Add the ability to log into a registry on a per-app basis
2026-01-10 08:48:16 -05:00
Jose Diaz-Gonzalez
4ff3cbc6c6 Merge pull request #8274 from dokku/8271-delete-tls-app-chart
Delete the tls app chart when the app is deleted
2026-01-10 04:44:00 -05:00
Jose Diaz-Gonzalez
68babd168a fix: print out Login Succeeded messages 2026-01-10 03:07:31 -05:00
Jose Diaz-Gonzalez
5c2045b6ea fix: delete the tls app chart when the app is deleted 2026-01-10 02:52:01 -05:00
Jose Diaz-Gonzalez
9bb766cf17 fix: reference app-specific config.json for retrieving registry auths 2026-01-10 02:33:59 -05:00
Jose Diaz-Gonzalez
b9ede65d6e fix: do not stream output from login/logout commands 2026-01-10 02:30:27 -05:00
Jose Diaz-Gonzalez
2123201410 fix: use correct value for DOCKER_CONFIG when logging in or out 2026-01-10 02:29:18 -05:00
Jose Diaz-Gonzalez
b45520f5b8 Merge pull request #8273 from dokku/8272-fix-missing-directory
Ensure the destination directory exists when extracting files from a repository
2026-01-10 01:46:11 -05:00
Jose Diaz-Gonzalez
3b040767e0 fix: add missing whitespace 2026-01-10 00:33:22 -05:00
Jose Diaz-Gonzalez
f202072220 fix: ensure the destination directory exists when extracting files from a repository
Closes #8272
2026-01-09 23:58:52 -05:00
Jose Diaz-Gonzalez
41a15a7319 fix: set DOCKER_CONFIG to the directory holding the config.json 2026-01-09 23:47:00 -05:00
Jose Diaz-Gonzalez
475b395d9a Merge pull request #8270 from dokku/dependabot/go_modules/plugins/common/github.com/onsi/gomega-1.39.0
chore(deps): bump github.com/onsi/gomega from 1.38.3 to 1.39.0 in /plugins/common
2026-01-09 22:28:59 -05:00
Jose Diaz-Gonzalez
1ae431e81b chore: bump go modules and run go mod tidy 2026-01-09 19:58:34 -05:00
dependabot[bot]
af1c916574 chore(deps): bump github.com/onsi/gomega in /plugins/common
Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.38.3 to 1.39.0.
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/gomega/compare/v1.38.3...v1.39.0)

---
updated-dependencies:
- dependency-name: github.com/onsi/gomega
  dependency-version: 1.39.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-09 13:59:48 +00:00
Jose Diaz-Gonzalez
6a83fd053c feat: add the ability to log into a registry on a per-app basis
Closes #5324
2026-01-09 00:12:16 -05:00
Jose Diaz-Gonzalez
2093db6e74 Merge pull request #8267 from dokku/dependabot/pip/tests/apps/python-flask/werkzeug-3.1.5 2026-01-08 21:08:26 -05:00
dependabot[bot]
dc5fe1b1ef chore(deps): bump werkzeug in /tests/apps/python-flask
Bumps [werkzeug](https://github.com/pallets/werkzeug) from 3.1.4 to 3.1.5.
- [Release notes](https://github.com/pallets/werkzeug/releases)
- [Changelog](https://github.com/pallets/werkzeug/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/werkzeug/compare/3.1.4...3.1.5)

---
updated-dependencies:
- dependency-name: werkzeug
  dependency-version: 3.1.5
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-09 00:59:27 +00:00
Jose Diaz-Gonzalez
3cfdee77e3 Merge pull request #8258 from dokku/6423-traefik-challenge-support
Add support for dns-01 challenge mode when using traefik
2026-01-08 12:47:16 -05:00
Jose Diaz-Gonzalez
fd08478f90 Merge pull request #8262 from dokku/7257-import-certificate-into-k8s-app
Use certificates imported by certs plugin when deploying via scheduler-k3s
2026-01-08 12:46:30 -05:00
Jose Diaz-Gonzalez
ea712c0562 Merge pull request #8264 from dokku/6814-rewrite-storage-plugin-in-golang
Rewrite the storage plugin in golang
2026-01-08 12:45:52 -05:00
Jose Diaz-Gonzalez
91e800a97b Merge pull request #8266 from dokku/6847-allow-force-pull-image-on-git-from-image
Add a method to force build when re-using an image with git:from-image
2026-01-08 12:11:54 -05:00
Jose Diaz-Gonzalez
00e07f7c89 fix: correct the report output 2026-01-08 11:56:31 -05:00
Jose Diaz-Gonzalez
b56dd52727 chore: fix lint issues 2026-01-08 10:37:57 -05:00
Jose Diaz-Gonzalez
2a29c7aee5 Merge pull request #8265 from dokku/8212-git-sync-skip-setting-deploy-branch
Add the ability to skip setting the deploy-branch when running git:sync
2026-01-08 10:30:32 -05:00
Jose Diaz-Gonzalez
6c3936802e feat: add a method to force build when re-using an image with git:from-image
Closes #6847
2026-01-08 02:46:53 -05:00
Jose Diaz-Gonzalez
dd70fb823d feat: add the ability to skip setting the deploy-branch when running git:sync
Closes #8212
2026-01-08 02:19:22 -05:00
Jose Diaz-Gonzalez
8af070ac00 feat: rewrite the storage plugin in golang
Refs #6814
2026-01-08 02:01:53 -05:00
Jose Diaz-Gonzalez
924d010330 Merge pull request #8263 from dokku/josegonzalez-patch-1
Set correct version for builder-railpack plugin
2026-01-08 01:37:55 -05:00
Jose Diaz-Gonzalez
c7ef613118 fix: set correct version for builder-railpack plugin 2026-01-08 01:37:34 -05:00
Jose Diaz-Gonzalez
b8e8ea74ff feat: use certificates imported by certs plugin when deploying via scheduler-k3s
Closes #7257
2026-01-08 01:05:40 -05:00
Jose Diaz-Gonzalez
b99e0b303d Merge pull request #8260 from dokku/dependabot/pip/tests/apps/dockerfile-release/django-5.2.10
chore(deps): bump django from 5.2.9 to 5.2.10 in /tests/apps/dockerfile-release
2026-01-07 21:04:26 -05:00
dependabot[bot]
50830545e9 chore(deps): bump django in /tests/apps/dockerfile-release
Bumps [django](https://github.com/django/django) from 5.2.9 to 5.2.10.
- [Commits](https://github.com/django/django/compare/5.2.9...5.2.10)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 5.2.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-07 13:15:07 +00:00
Jose Diaz-Gonzalez
df8b725081 feat: add support for dns-01 challenge mode when using traefik
Closes #6423
2026-01-07 01:16:05 -05:00
Jose Diaz-Gonzalez
ffba7ed2f5 Merge pull request #8256 from dokku/dependabot/github_actions/luizm/action-sh-checker-0.10.0
chore(deps): bump luizm/action-sh-checker from 0.9.0 to 0.10.0
2026-01-05 15:39:59 -05:00
Jose Diaz-Gonzalez
52b2e2f3aa Merge pull request #8257 from dokku/dependabot/pip/tests/apps/dockerfile-release/dj-database-url-3.1.0
chore(deps): bump dj-database-url from 3.0.1 to 3.1.0 in /tests/apps/dockerfile-release
2026-01-05 15:39:51 -05:00
dependabot[bot]
290e320108 chore(deps): bump dj-database-url in /tests/apps/dockerfile-release
Bumps [dj-database-url](https://github.com/jazzband/dj-database-url) from 3.0.1 to 3.1.0.
- [Release notes](https://github.com/jazzband/dj-database-url/releases)
- [Changelog](https://github.com/jazzband/dj-database-url/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jazzband/dj-database-url/compare/v3.0.1...v3.1.0)

---
updated-dependencies:
- dependency-name: dj-database-url
  dependency-version: 3.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-05 13:10:46 +00:00
dependabot[bot]
20c45ffb61 chore(deps): bump luizm/action-sh-checker from 0.9.0 to 0.10.0
Bumps [luizm/action-sh-checker](https://github.com/luizm/action-sh-checker) from 0.9.0 to 0.10.0.
- [Release notes](https://github.com/luizm/action-sh-checker/releases)
- [Commits](17bd25a6ee...883217215b)

---
updated-dependencies:
- dependency-name: luizm/action-sh-checker
  dependency-version: 0.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-05 13:03:44 +00:00
Dokku Bot
10e835f6fe Release 0.37.4
# History

## 0.37.4

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.37.4/bootstrap.sh
sudo DOKKU_TAG=v0.37.4 bash bootstrap.sh
```

### Bug Fixes

- #8168: @josegonzalez Install logrotate in the container

### Tests

- #8254: @josegonzalez Add a test to prove cron:run commands work as expected
- #8255: @josegonzalez Update test ruby app

### Dependencies

- #8252: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.19.1 to 10.20 in /docs/_build
- #8253: @dependabot[bot] chore(deps): bump qs from 6.14.0 to 6.14.1 in /tests/apps/checks-root
- #8249: @dependabot[bot] chore(deps): bump traefik from 3.6.5 to 3.6.6 in /plugins/traefik-vhosts
- #8250: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.11.33 to 2.11.34 in /plugins/scheduler-k3s
- #8247: @dependabot[bot] chore(deps): bump ruby from 3.4.8 to 4.0.0 in /tests/apps/dockerfile-entrypoint

### Other

- #8248: @osbre Add `proxy-keepalive` to Nginx properties
2026-01-05 04:54:10 +00:00
Jose Diaz-Gonzalez
822e5d9111 Merge pull request #8168 from dokku/8166-logrotate
Install logrotate in the container
2026-01-04 23:52:59 -05:00
Jose Diaz-Gonzalez
7033a90659 fix: drop check 2026-01-04 23:52:27 -05:00
Jose Diaz-Gonzalez
47e6420c43 Merge pull request #8254 from dokku/8242-cron-run
Add a test to prove cron:run commands work as expected
2026-01-04 23:51:10 -05:00
Jose Diaz-Gonzalez
f64b87cc27 fix: use correct path for app-cnb-cron.json 2026-01-04 22:03:59 -05:00
Jose Diaz-Gonzalez
9d603e1a45 fix: use real path when extracting files 2026-01-04 20:46:00 -05:00
Jose Diaz-Gonzalez
8f9ca78642 chore: debug 2026-01-04 03:38:44 -05:00
Jose Diaz-Gonzalez
1844416917 Merge pull request #8255 from dokku/update-ruby-test-app
Update test ruby app
2026-01-04 02:53:33 -05:00
Jose Diaz-Gonzalez
7cfabe1322 fix: move the correct file over 2026-01-04 02:42:21 -05:00
Jose Diaz-Gonzalez
c19cb81c4b tests: add a test to prove cron:run commands work as expected
Closes #8242
2026-01-04 00:57:43 -05:00
Jose Diaz-Gonzalez
52c95d4317 tests: update test ruby app 2026-01-04 00:55:49 -05:00
Jose Diaz-Gonzalez
b1ebd694e6 refactor: standardize on add_requirements_txt wrapper 2026-01-04 00:35:30 -05:00
Jose Diaz-Gonzalez
1683cff5f9 chore: re-purge syslog-ng-core 2026-01-04 00:10:35 -05:00
Jose Diaz-Gonzalez
3f492f2f25 fix: install logrotate in the container 2026-01-03 22:50:38 -05:00
Jose Diaz-Gonzalez
58bc159063 Merge pull request #8248 from osbre/feat/nginx-upstream-keepalive-property
Add `proxy-keepalive` to Nginx properties
2026-01-03 22:08:02 -05:00
Jose Diaz-Gonzalez
8891fcd61e Merge pull request #8252 from dokku/dependabot/pip/docs/_build/pymdown-extensions-10.20
chore(deps): bump pymdown-extensions from 10.19.1 to 10.20 in /docs/_build
2026-01-03 21:38:14 -05:00
Jose Diaz-Gonzalez
bc9ef6b832 Merge pull request #8253 from dokku/dependabot/npm_and_yarn/tests/apps/checks-root/qs-6.14.1
chore(deps): bump qs from 6.14.0 to 6.14.1 in /tests/apps/checks-root
2026-01-03 21:38:07 -05:00
dependabot[bot]
ab4ab29a32 chore(deps): bump qs from 6.14.0 to 6.14.1 in /tests/apps/checks-root
Bumps [qs](https://github.com/ljharb/qs) from 6.14.0 to 6.14.1.
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.14.0...v6.14.1)

---
updated-dependencies:
- dependency-name: qs
  dependency-version: 6.14.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-01 19:19:39 +00:00
dependabot[bot]
b9d5556b72 chore(deps): bump pymdown-extensions in /docs/_build
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.19.1 to 10.20.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.19.1...10.20)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-version: '10.20'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-01 13:04:14 +00:00
Jose Diaz-Gonzalez
f3797264ce Merge pull request #8249 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-3.6.6
chore(deps): bump traefik from 3.6.5 to 3.6.6 in /plugins/traefik-vhosts
2025-12-30 13:57:56 -05:00
Jose Diaz-Gonzalez
f8f1588764 Merge pull request #8250 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/traefik/traefik/v2-2.11.34
chore(deps): bump github.com/traefik/traefik/v2 from 2.11.33 to 2.11.34 in /plugins/scheduler-k3s
2025-12-30 13:57:49 -05:00
dependabot[bot]
1d3a1a938a chore(deps): bump github.com/traefik/traefik/v2
Bumps [github.com/traefik/traefik/v2](https://github.com/traefik/traefik) from 2.11.33 to 2.11.34.
- [Release notes](https://github.com/traefik/traefik/releases)
- [Changelog](https://github.com/traefik/traefik/blob/master/CHANGELOG.md)
- [Commits](https://github.com/traefik/traefik/compare/v2.11.33...v2.11.34)

---
updated-dependencies:
- dependency-name: github.com/traefik/traefik/v2
  dependency-version: 2.11.34
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-30 13:09:14 +00:00
dependabot[bot]
8c49dac90e chore(deps): bump traefik from 3.6.5 to 3.6.6 in /plugins/traefik-vhosts
Bumps traefik from 3.6.5 to 3.6.6.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: 3.6.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-30 13:08:32 +00:00
Ostap Brehin
c84c0208a9 Nginx property proxy-keepalive must be an integer 2025-12-28 10:08:11 +00:00
Ostap Brehin
caff2e6b96 Document proxy-keepalive Nginx property 2025-12-27 20:27:29 +00:00
Ostap Brehin
675529cb6f Add proxy-keepalive to Nginx properties 2025-12-27 20:27:29 +00:00
Jose Diaz-Gonzalez
fd03ee7849 Merge pull request #8247 from dokku/dependabot/docker/tests/apps/dockerfile-entrypoint/ruby-4.0.0
chore(deps): bump ruby from 3.4.8 to 4.0.0 in /tests/apps/dockerfile-entrypoint
2025-12-26 16:48:29 -05:00
dependabot[bot]
4cbf4e9424 chore(deps): bump ruby in /tests/apps/dockerfile-entrypoint
Bumps ruby from 3.4.8 to 4.0.0.

---
updated-dependencies:
- dependency-name: ruby
  dependency-version: 4.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-26 13:04:03 +00:00
Dokku Bot
337a56d45f Release 0.37.3
# History

## 0.37.3

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.37.3/bootstrap.sh
sudo DOKKU_TAG=v0.37.3 bash bootstrap.sh
```

### Bug Fixes

- #8199: @josegonzalez Pass global build args as array when building nixpacks apps
- #8236: @josegonzalez Ensure the /etc/docker exists when interacting with it via postinst

### Documentation

- #8229: @kleutzinger Fix command syntax for removing docker options
- #8219: @deanmarano Add deanmarano to community plugins list
- #8205: @deanmarano Add DNS plugin to community plugins list

### Tests

- #8246: @josegonzalez Add tests to prove that Procfile tasks all work for every builder

### Dependencies

- #8243: @dependabot[bot] chore(deps): bump k8s.io/kubectl from 0.34.2 to 0.35.0 in /plugins/scheduler-k3s
- #8245: @dependabot[bot] chore(deps): bump github.com/go-resty/resty/v2 from 2.17.0 to 2.17.1 in /plugins/scheduler-k3s
- #8244: @dependabot[bot] chore(deps): bump k8s.io/kubernetes from 1.34.2 to 1.35.0 in /plugins/scheduler-k3s
- #8233: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.38.2 to 1.38.3 in /plugins/common
- #8241: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.11.32 to 2.11.33 in /plugins/scheduler-k3s
- #8240: @dependabot[bot] chore(deps): bump github.com/cert-manager/cert-manager from 1.19.1 to 1.19.2 in /plugins/scheduler-k3s
- #8239: @dependabot[bot] chore(deps): bump pyparsing from 3.2.5 to 3.3.1 in /docs/_build
- #8238: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.77.0 to 1.78.0 in /tests/apps/gogrpc
- #8237: @dependabot[bot] chore(deps): bump github.com/kedacore/keda/v2 from 2.18.2 to 2.18.3 in /plugins/scheduler-k3s
- #8235: @dependabot[bot] chore(deps): bump helm.sh/helm/v3 from 3.19.2 to 3.19.4 in /plugins/scheduler-k3s
- #8232: @dependabot[bot] chore(deps): bump importlib-metadata from 8.7.0 to 8.7.1 in /docs/_build
- #8234: @dependabot[bot] chore(deps): bump k8s.io/client-go from 0.34.2 to 0.35.0 in /plugins/scheduler-k3s
- #8231: @dependabot[bot] chore(deps): bump github.com/expr-lang/expr from 1.17.6 to 1.17.7 in /plugins/scheduler-k3s
- #8208: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.45.0 to 0.46.0 in /plugins/common
- #8201: @dependabot[bot] chore(deps): bump golang.org/x/sync from 0.18.0 to 0.19.0 in /plugins/common
- #8214: @dependabot[bot] chore(deps): bump google.golang.org/protobuf from 1.36.10 to 1.36.11 in /tests/apps/gogrpc
- #8216: @dependabot[bot] chore(deps): bump actions/download-artifact from 6 to 7
- #8217: @dependabot[bot] chore(deps): bump actions/upload-artifact from 5 to 6
- #8228: @dependabot[bot] chore(deps): bump soupsieve from 2.8 to 2.8.1 in /docs/_build
- #8226: @dependabot[bot] chore(deps): bump ruby from 3.4.7 to 3.4.8 in /tests/apps/dockerfile-entrypoint
- #8227: @dependabot[bot] chore(deps): bump mkdocs-material from 9.7.0 to 9.7.1 in /docs/_build
- #8224: @dependabot[bot] chore(deps): bump traefik from 3.6.4 to 3.6.5 in /plugins/traefik-vhosts
- #8225: @dependabot[bot] chore(deps): bump timberio/vector from 0.51.1-debian to 0.52.0-debian in /plugins/logs
- #8220: @dependabot[bot] chore(deps): bump python from 3.14.1-bookworm to 3.14.2-bookworm in /tests/apps/dockerfile-release
- #8221: @dependabot[bot] chore(deps): bump python from 3.14.1-alpine to 3.14.2-alpine in /docs/_build
- #8218: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.19 to 10.19.1 in /docs/_build
- #8215: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.18 to 10.19 in /docs/_build
- #8209: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.38.2 to 1.38.3 in /plugins/config
- #8210: @dependabot[bot] chore(deps): bump github.com/kedacore/keda/v2 from 2.18.1 to 2.18.2 in /plugins/scheduler-k3s
- #8211: @dependabot[bot] chore(deps): bump github.com/go-openapi/jsonpointer from 0.22.3 to 0.22.4 in /plugins/scheduler-k3s
- #8200: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.17.2 to 10.18 in /docs/_build
- #8202: @dependabot[bot] chore(deps): bump golang.org/x/sync from 0.18.0 to 0.19.0 in /plugins/scheduler-docker-local
- #8203: @dependabot[bot] chore(deps): bump traefik from 3.6.2 to 3.6.4 in /plugins/traefik-vhosts
- #8204: @dependabot[bot] chore(deps): bump golang.org/x/sync from 0.18.0 to 0.19.0 in /plugins/scheduler-k3s
2025-12-26 06:59:05 +00:00
Jose Diaz-Gonzalez
8fdef7cc2e Merge pull request #8243 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/kubectl-0.35.0
chore(deps): bump k8s.io/kubectl from 0.34.2 to 0.35.0 in /plugins/scheduler-k3s
2025-12-26 01:57:10 -05:00
Jose Diaz-Gonzalez
f004dafb99 fix: wrap the TerminalSizeQueue in an adapter
This fixes an issue with the updated interface dropped in ce4d90902a
2025-12-25 20:58:24 -05:00
dependabot[bot]
eb6de2f709 chore(deps): bump k8s.io/kubectl in /plugins/scheduler-k3s
Bumps [k8s.io/kubectl](https://github.com/kubernetes/kubectl) from 0.34.2 to 0.35.0.
- [Commits](https://github.com/kubernetes/kubectl/compare/v0.34.2...v0.35.0)

---
updated-dependencies:
- dependency-name: k8s.io/kubectl
  dependency-version: 0.35.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-25 20:40:47 -05:00
Jose Diaz-Gonzalez
e4ab5dab1b Merge pull request #8245 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/go-resty/resty/v2-2.17.1
chore(deps): bump github.com/go-resty/resty/v2 from 2.17.0 to 2.17.1 in /plugins/scheduler-k3s
2025-12-25 20:40:14 -05:00
Jose Diaz-Gonzalez
4427edef2c Merge pull request #8246 from dokku/8242-tests
Add tests to prove that Procfile tasks all work for every builder
2025-12-25 20:36:03 -05:00
Jose Diaz-Gonzalez
3ae8fae9fd fix: ensure the buildkit container is always running 2025-12-25 19:49:57 -05:00
Jose Diaz-Gonzalez
5e2e53d864 tests: run python3 instead of python 2025-12-25 19:07:56 -05:00
Jose Diaz-Gonzalez
4e50dbfb02 tests: run tasks with quiet output so we can check the entire output 2025-12-25 19:05:30 -05:00
Jose Diaz-Gonzalez
4a7328b022 tests: update expected output 2025-12-25 18:34:39 -05:00
Jose Diaz-Gonzalez
153ff6ecb4 tests: fix expected output when task is specified from Procfile
When run from a Procfile, we output an additional message like "-----> Found 'task' in Procfile, running that command".
2025-12-25 18:32:26 -05:00
Jose Diaz-Gonzalez
52418dd799 tests: allow 1 or more occurrends of 'load build definition from Dockerfile'
For unknown reasons, sometimes this gets output twice by the nixpacks builder.
2025-12-25 18:29:42 -05:00
Jose Diaz-Gonzalez
3a476716eb tests: allow specifying 'at least 1 occurrence' for assert_output_contains 2025-12-25 18:29:02 -05:00
Jose Diaz-Gonzalez
ca51f2de01 chore: remove debug mode 2025-12-25 18:26:01 -05:00
Jose Diaz-Gonzalez
3d49dbe63f tests: add tests to prove that Procfile tasks all work for every builder
Closes #8242
2025-12-25 18:06:22 -05:00
Jose Diaz-Gonzalez
99664b9de5 Merge pull request #8199 from dokku/8187-fix-flags
Pass global build args as array when building nixpacks apps
2025-12-25 17:26:37 -05:00
dependabot[bot]
0103f20ed6 chore(deps): bump github.com/go-resty/resty/v2 in /plugins/scheduler-k3s
Bumps [github.com/go-resty/resty/v2](https://github.com/go-resty/resty) from 2.17.0 to 2.17.1.
- [Release notes](https://github.com/go-resty/resty/releases)
- [Commits](https://github.com/go-resty/resty/compare/v2.17.0...v2.17.1)

---
updated-dependencies:
- dependency-name: github.com/go-resty/resty/v2
  dependency-version: 2.17.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-25 13:07:26 +00:00
Jose Diaz-Gonzalez
9d18896c4c tests: drop lambda run tests as they shouldn't be relevant
These are functions and therefore are invoked differently.
2025-12-24 17:05:50 -05:00
Jose Diaz-Gonzalez
89c260ac84 fix: deploy correct app for lambda tests 2025-12-24 16:49:29 -05:00
Jose Diaz-Gonzalez
d5c44e80e7 fix: remove duplicate test 2025-12-24 16:30:01 -05:00
Jose Diaz-Gonzalez
bba2cd9710 fix: correct lint issues 2025-12-24 16:30:01 -05:00
Jose Diaz-Gonzalez
e7be49f0ce fix: ensure all build flags are consumed as an array 2025-12-24 16:30:01 -05:00
Jose Diaz-Gonzalez
2d3782c8eb fix: pass global build args as array when building nixpacks apps
Refs #8187
2025-12-24 16:30:01 -05:00
Jose Diaz-Gonzalez
120f844397 Merge pull request #8244 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/kubernetes-1.35.0
chore(deps): bump k8s.io/kubernetes from 1.34.2 to 1.35.0 in /plugins/scheduler-k3s
2025-12-24 15:49:46 -05:00
dependabot[bot]
9634facf8b chore(deps): bump k8s.io/kubernetes in /plugins/scheduler-k3s
Bumps [k8s.io/kubernetes](https://github.com/kubernetes/kubernetes) from 1.34.2 to 1.35.0.
- [Release notes](https://github.com/kubernetes/kubernetes/releases)
- [Commits](https://github.com/kubernetes/kubernetes/compare/v1.34.2...v1.35.0)

---
updated-dependencies:
- dependency-name: k8s.io/kubernetes
  dependency-version: 1.35.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-24 13:07:35 +00:00
Jose Diaz-Gonzalez
c28d28de2d Merge pull request #8233 from dokku/dependabot/go_modules/plugins/common/github.com/onsi/gomega-1.38.3
chore(deps): bump github.com/onsi/gomega from 1.38.2 to 1.38.3 in /plugins/common
2025-12-23 22:32:19 -05:00
Jose Diaz-Gonzalez
7367aeedcc chore: bump go modules and run go mod tidy 2025-12-23 22:12:47 -05:00
dependabot[bot]
ea2ffc7747 chore(deps): bump github.com/onsi/gomega in /plugins/common
Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.38.2 to 1.38.3.
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/gomega/compare/v1.38.2...v1.38.3)

---
updated-dependencies:
- dependency-name: github.com/onsi/gomega
  dependency-version: 1.38.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-23 22:12:18 -05:00
Jose Diaz-Gonzalez
bec82d7fd5 Merge pull request #8241 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/traefik/traefik/v2-2.11.33
chore(deps): bump github.com/traefik/traefik/v2 from 2.11.32 to 2.11.33 in /plugins/scheduler-k3s
2025-12-23 13:57:05 -05:00
Jose Diaz-Gonzalez
5759c1e2e7 Merge pull request #8240 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/cert-manager/cert-manager-1.19.2
chore(deps): bump github.com/cert-manager/cert-manager from 1.19.1 to 1.19.2 in /plugins/scheduler-k3s
2025-12-23 13:56:56 -05:00
Jose Diaz-Gonzalez
13407a687b Merge pull request #8239 from dokku/dependabot/pip/docs/_build/pyparsing-3.3.1
chore(deps): bump pyparsing from 3.2.5 to 3.3.1 in /docs/_build
2025-12-23 13:56:40 -05:00
Jose Diaz-Gonzalez
12e630f48d Merge pull request #8238 from dokku/dependabot/go_modules/tests/apps/gogrpc/google.golang.org/grpc-1.78.0
chore(deps): bump google.golang.org/grpc from 1.77.0 to 1.78.0 in /tests/apps/gogrpc
2025-12-23 13:56:32 -05:00
dependabot[bot]
e8eacbad93 chore(deps): bump github.com/traefik/traefik/v2
Bumps [github.com/traefik/traefik/v2](https://github.com/traefik/traefik) from 2.11.32 to 2.11.33.
- [Release notes](https://github.com/traefik/traefik/releases)
- [Changelog](https://github.com/traefik/traefik/blob/v2.11.33/CHANGELOG.md)
- [Commits](https://github.com/traefik/traefik/compare/v2.11.32...v2.11.33)

---
updated-dependencies:
- dependency-name: github.com/traefik/traefik/v2
  dependency-version: 2.11.33
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-23 13:08:00 +00:00
dependabot[bot]
bd597c52c7 chore(deps): bump github.com/cert-manager/cert-manager
Bumps [github.com/cert-manager/cert-manager](https://github.com/cert-manager/cert-manager) from 1.19.1 to 1.19.2.
- [Release notes](https://github.com/cert-manager/cert-manager/releases)
- [Changelog](https://github.com/cert-manager/cert-manager/blob/master/RELEASE.md)
- [Commits](https://github.com/cert-manager/cert-manager/compare/v1.19.1...v1.19.2)

---
updated-dependencies:
- dependency-name: github.com/cert-manager/cert-manager
  dependency-version: 1.19.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-23 13:07:48 +00:00
dependabot[bot]
871c6a91a1 chore(deps): bump pyparsing from 3.2.5 to 3.3.1 in /docs/_build
Bumps [pyparsing](https://github.com/pyparsing/pyparsing) from 3.2.5 to 3.3.1.
- [Release notes](https://github.com/pyparsing/pyparsing/releases)
- [Changelog](https://github.com/pyparsing/pyparsing/blob/master/CHANGES)
- [Commits](https://github.com/pyparsing/pyparsing/compare/3.2.5...3.3.1)

---
updated-dependencies:
- dependency-name: pyparsing
  dependency-version: 3.3.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-23 13:04:50 +00:00
dependabot[bot]
214e543094 chore(deps): bump google.golang.org/grpc in /tests/apps/gogrpc
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.77.0 to 1.78.0.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.77.0...v1.78.0)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.78.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-23 13:01:24 +00:00
Jose Diaz-Gonzalez
238e015453 Merge pull request #8237 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/kedacore/keda/v2-2.18.3
chore(deps): bump github.com/kedacore/keda/v2 from 2.18.2 to 2.18.3 in /plugins/scheduler-k3s
2025-12-23 00:33:42 -05:00
Jose Diaz-Gonzalez
14271fa507 Merge pull request #8235 from dokku/dependabot/go_modules/plugins/scheduler-k3s/helm.sh/helm/v3-3.19.4
chore(deps): bump helm.sh/helm/v3 from 3.19.2 to 3.19.4 in /plugins/scheduler-k3s
2025-12-23 00:29:44 -05:00
dependabot[bot]
a238e41516 chore(deps): bump github.com/kedacore/keda/v2 in /plugins/scheduler-k3s
Bumps [github.com/kedacore/keda/v2](https://github.com/kedacore/keda) from 2.18.2 to 2.18.3.
- [Release notes](https://github.com/kedacore/keda/releases)
- [Changelog](https://github.com/kedacore/keda/blob/main/CHANGELOG.md)
- [Commits](https://github.com/kedacore/keda/compare/v2.18.2...v2.18.3)

---
updated-dependencies:
- dependency-name: github.com/kedacore/keda/v2
  dependency-version: 2.18.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-22 20:09:32 +00:00
dependabot[bot]
6f30be43c6 chore(deps): bump helm.sh/helm/v3 in /plugins/scheduler-k3s
Bumps [helm.sh/helm/v3](https://github.com/helm/helm) from 3.19.2 to 3.19.4.
- [Release notes](https://github.com/helm/helm/releases)
- [Commits](https://github.com/helm/helm/compare/v3.19.2...v3.19.4)

---
updated-dependencies:
- dependency-name: helm.sh/helm/v3
  dependency-version: 3.19.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-22 18:21:18 +00:00
Jose Diaz-Gonzalez
c05ec28b60 Merge pull request #8232 from dokku/dependabot/pip/docs/_build/importlib-metadata-8.7.1
chore(deps): bump importlib-metadata from 8.7.0 to 8.7.1 in /docs/_build
2025-12-22 13:20:18 -05:00
Jose Diaz-Gonzalez
6ed37ec3be Merge pull request #8234 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/client-go-0.35.0
chore(deps): bump k8s.io/client-go from 0.34.2 to 0.35.0 in /plugins/scheduler-k3s
2025-12-22 13:20:02 -05:00
Jose Diaz-Gonzalez
241a7bff16 Merge pull request #8236 from dokku/josegonzalez-patch-1
Ensure the /etc/docker exists when interacting with it via postinst
2025-12-22 13:19:51 -05:00
Jose Diaz-Gonzalez
1733b8ec81 fix: ensure the /etc/docker exists when interacting with it via postinst 2025-12-22 13:19:30 -05:00
dependabot[bot]
6f1d967968 chore(deps): bump k8s.io/client-go in /plugins/scheduler-k3s
Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.34.2 to 0.35.0.
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kubernetes/client-go/compare/v0.34.2...v0.35.0)

---
updated-dependencies:
- dependency-name: k8s.io/client-go
  dependency-version: 0.35.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-22 13:09:29 +00:00
dependabot[bot]
5f410113ea chore(deps): bump importlib-metadata from 8.7.0 to 8.7.1 in /docs/_build
Bumps [importlib-metadata](https://github.com/python/importlib_metadata) from 8.7.0 to 8.7.1.
- [Release notes](https://github.com/python/importlib_metadata/releases)
- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)
- [Commits](https://github.com/python/importlib_metadata/compare/v8.7.0...v8.7.1)

---
updated-dependencies:
- dependency-name: importlib-metadata
  dependency-version: 8.7.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-22 13:05:37 +00:00
Jose Diaz-Gonzalez
949cb5bffc Merge pull request #8231 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/expr-lang/expr-1.17.7
chore(deps): bump github.com/expr-lang/expr from 1.17.6 to 1.17.7 in /plugins/scheduler-k3s
2025-12-22 01:54:18 -05:00
Jose Diaz-Gonzalez
8718587cc0 Merge pull request #8208 from dokku/dependabot/go_modules/plugins/common/golang.org/x/crypto-0.46.0
chore(deps): bump golang.org/x/crypto from 0.45.0 to 0.46.0 in /plugins/common
2025-12-22 01:54:08 -05:00
Jose Diaz-Gonzalez
2b3cdffccf chore: bump go modules and run go mod tidy 2025-12-22 00:31:48 -05:00
dependabot[bot]
c2dc3163c4 chore(deps): bump github.com/expr-lang/expr in /plugins/scheduler-k3s
Bumps [github.com/expr-lang/expr](https://github.com/expr-lang/expr) from 1.17.6 to 1.17.7.
- [Release notes](https://github.com/expr-lang/expr/releases)
- [Commits](https://github.com/expr-lang/expr/compare/v1.17.6...v1.17.7)

---
updated-dependencies:
- dependency-name: github.com/expr-lang/expr
  dependency-version: 1.17.7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-22 05:31:03 +00:00
dependabot[bot]
af9feb6a1d chore(deps): bump golang.org/x/crypto in /plugins/common
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.45.0 to 0.46.0.
- [Commits](https://github.com/golang/crypto/compare/v0.45.0...v0.46.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.46.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-22 05:30:43 +00:00
Jose Diaz-Gonzalez
a3435054e7 Merge pull request #8201 from dokku/dependabot/go_modules/plugins/common/golang.org/x/sync-0.19.0
chore(deps): bump golang.org/x/sync from 0.18.0 to 0.19.0 in /plugins/common
2025-12-22 00:29:15 -05:00
Jose Diaz-Gonzalez
1376b052f5 chore: upgrade herokuish to fix golang tests 2025-12-21 23:29:20 -05:00
Jose Diaz-Gonzalez
732970ab4e Merge pull request #8214 from dokku/dependabot/go_modules/tests/apps/gogrpc/google.golang.org/protobuf-1.36.11
chore(deps): bump google.golang.org/protobuf from 1.36.10 to 1.36.11 in /tests/apps/gogrpc
2025-12-21 23:25:22 -05:00
Jose Diaz-Gonzalez
b2cffa657e Merge pull request #8216 from dokku/dependabot/github_actions/actions/download-artifact-7
chore(deps): bump actions/download-artifact from 6 to 7
2025-12-21 23:25:03 -05:00
Jose Diaz-Gonzalez
46ce076783 Merge pull request #8217 from dokku/dependabot/github_actions/actions/upload-artifact-6
chore(deps): bump actions/upload-artifact from 5 to 6
2025-12-21 23:24:52 -05:00
Jose Diaz-Gonzalez
a06a732c89 Merge pull request #8229 from kleutzinger/patch-1
Fix command syntax for removing docker options
2025-12-21 02:28:18 -05:00
Jose Diaz-Gonzalez
83b1c27391 Merge pull request #8228 from dokku/dependabot/pip/docs/_build/soupsieve-2.8.1
chore(deps): bump soupsieve from 2.8 to 2.8.1 in /docs/_build
2025-12-21 02:27:59 -05:00
Kevin Leutzinger
bf89577f2e Fix command syntax for removing docker options 2025-12-19 09:10:55 -05:00
dependabot[bot]
96e019e410 chore(deps): bump soupsieve from 2.8 to 2.8.1 in /docs/_build
Bumps [soupsieve](https://github.com/facelessuser/soupsieve) from 2.8 to 2.8.1.
- [Release notes](https://github.com/facelessuser/soupsieve/releases)
- [Commits](https://github.com/facelessuser/soupsieve/compare/2.8...2.8.1)

---
updated-dependencies:
- dependency-name: soupsieve
  dependency-version: 2.8.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-19 13:06:51 +00:00
Jose Diaz-Gonzalez
3f93dd8cf1 Merge pull request #8226 from dokku/dependabot/docker/tests/apps/dockerfile-entrypoint/ruby-3.4.8
chore(deps): bump ruby from 3.4.7 to 3.4.8 in /tests/apps/dockerfile-entrypoint
2025-12-18 21:08:57 -05:00
Jose Diaz-Gonzalez
c91d56bab3 Merge pull request #8227 from dokku/dependabot/pip/docs/_build/mkdocs-material-9.7.1
chore(deps): bump mkdocs-material from 9.7.0 to 9.7.1 in /docs/_build
2025-12-18 21:08:43 -05:00
dependabot[bot]
f9fe916aaa chore(deps): bump mkdocs-material from 9.7.0 to 9.7.1 in /docs/_build
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.7.0 to 9.7.1.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.7.0...9.7.1)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-version: 9.7.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-18 13:06:09 +00:00
dependabot[bot]
de20a395f3 chore(deps): bump ruby in /tests/apps/dockerfile-entrypoint
Bumps ruby from 3.4.7 to 3.4.8.

---
updated-dependencies:
- dependency-name: ruby
  dependency-version: 3.4.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-18 13:04:57 +00:00
Jose Diaz-Gonzalez
0194c35055 Merge pull request #8224 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-3.6.5
chore(deps): bump traefik from 3.6.4 to 3.6.5 in /plugins/traefik-vhosts
2025-12-17 11:23:35 -05:00
Jose Diaz-Gonzalez
549dd64165 Merge pull request #8225 from dokku/dependabot/docker/plugins/logs/timberio/vector-0.52.0-debian
chore(deps): bump timberio/vector from 0.51.1-debian to 0.52.0-debian in /plugins/logs
2025-12-17 11:23:28 -05:00
dependabot[bot]
cb5d0cfb03 chore(deps): bump timberio/vector in /plugins/logs
Bumps timberio/vector from 0.51.1-debian to 0.52.0-debian.

---
updated-dependencies:
- dependency-name: timberio/vector
  dependency-version: 0.52.0-debian
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-17 13:08:42 +00:00
dependabot[bot]
430fdbe519 chore(deps): bump traefik from 3.6.4 to 3.6.5 in /plugins/traefik-vhosts
Bumps traefik from 3.6.4 to 3.6.5.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: 3.6.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-17 13:08:39 +00:00
Jose Diaz-Gonzalez
49d00cf0af Merge pull request #8220 from dokku/dependabot/docker/tests/apps/dockerfile-release/python-3.14.2-bookworm
chore(deps): bump python from 3.14.1-bookworm to 3.14.2-bookworm in /tests/apps/dockerfile-release
2025-12-16 10:20:34 -05:00
Jose Diaz-Gonzalez
88ee00e72b Merge pull request #8221 from dokku/dependabot/docker/docs/_build/python-3.14.2-alpine
chore(deps): bump python from 3.14.1-alpine to 3.14.2-alpine in /docs/_build
2025-12-16 10:20:28 -05:00
dependabot[bot]
88cfe2c3ca chore(deps): bump python in /docs/_build
Bumps python from 3.14.1-alpine to 3.14.2-alpine.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.14.2-alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-16 13:05:17 +00:00
dependabot[bot]
9a35275c26 chore(deps): bump python in /tests/apps/dockerfile-release
Bumps python from 3.14.1-bookworm to 3.14.2-bookworm.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.14.2-bookworm
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-16 13:05:13 +00:00
Jose Diaz-Gonzalez
714c722646 Merge pull request #8218 from dokku/dependabot/pip/docs/_build/pymdown-extensions-10.19.1
chore(deps): bump pymdown-extensions from 10.19 to 10.19.1 in /docs/_build
2025-12-15 16:59:33 -05:00
Jose Diaz-Gonzalez
1e268161e8 Merge pull request #8219 from deanmarano/patch-1
Add deanmarano to community plugins list
2025-12-15 16:43:30 -05:00
Dean Marano
fc90bb596a Add deanmarano to community plugins list
I added a link to my name when adding my DNS plugin, but I did not give that link a destination.
2025-12-15 14:50:14 -05:00
dependabot[bot]
18b4553a1f chore(deps): bump pymdown-extensions in /docs/_build
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.19 to 10.19.1.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.19...10.19.1)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-version: 10.19.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 13:07:27 +00:00
dependabot[bot]
90117e6aa0 chore(deps): bump actions/upload-artifact from 5 to 6
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 13:04:26 +00:00
dependabot[bot]
1127286c96 chore(deps): bump actions/download-artifact from 6 to 7
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 6 to 7.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 13:04:21 +00:00
Jose Diaz-Gonzalez
fb7d20ba41 Merge pull request #8215 from dokku/dependabot/pip/docs/_build/pymdown-extensions-10.19
chore(deps): bump pymdown-extensions from 10.18 to 10.19 in /docs/_build
2025-12-12 16:38:27 -05:00
dependabot[bot]
e9f2d3d78c chore(deps): bump pymdown-extensions from 10.18 to 10.19 in /docs/_build
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.18 to 10.19.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.18...10.19)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-version: '10.19'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-12 13:06:16 +00:00
dependabot[bot]
f0dfcb8c91 chore(deps): bump google.golang.org/protobuf in /tests/apps/gogrpc
Bumps google.golang.org/protobuf from 1.36.10 to 1.36.11.

---
updated-dependencies:
- dependency-name: google.golang.org/protobuf
  dependency-version: 1.36.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-12 13:01:41 +00:00
Jose Diaz-Gonzalez
8892da1a7f chore: bump go modules and run go mod tidy 2025-12-12 05:59:05 -05:00
dependabot[bot]
078ba2e81f chore(deps): bump golang.org/x/sync in /plugins/common
Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.18.0 to 0.19.0.
- [Commits](https://github.com/golang/sync/compare/v0.18.0...v0.19.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sync
  dependency-version: 0.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-12 05:41:50 -05:00
Jose Diaz-Gonzalez
5cf4336d9c Merge pull request #8209 from dokku/dependabot/go_modules/plugins/config/github.com/onsi/gomega-1.38.3
chore(deps): bump github.com/onsi/gomega from 1.38.2 to 1.38.3 in /plugins/config
2025-12-10 10:20:43 -05:00
Jose Diaz-Gonzalez
7eb1c22d05 Merge pull request #8210 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/kedacore/keda/v2-2.18.2
chore(deps): bump github.com/kedacore/keda/v2 from 2.18.1 to 2.18.2 in /plugins/scheduler-k3s
2025-12-10 10:20:26 -05:00
Jose Diaz-Gonzalez
384ce8068f Merge pull request #8211 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/go-openapi/jsonpointer-0.22.4
chore(deps): bump github.com/go-openapi/jsonpointer from 0.22.3 to 0.22.4 in /plugins/scheduler-k3s
2025-12-10 10:20:17 -05:00
dependabot[bot]
eab02b8b06 chore(deps): bump github.com/go-openapi/jsonpointer
Bumps [github.com/go-openapi/jsonpointer](https://github.com/go-openapi/jsonpointer) from 0.22.3 to 0.22.4.
- [Release notes](https://github.com/go-openapi/jsonpointer/releases)
- [Commits](https://github.com/go-openapi/jsonpointer/compare/v0.22.3...v0.22.4)

---
updated-dependencies:
- dependency-name: github.com/go-openapi/jsonpointer
  dependency-version: 0.22.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-09 13:11:26 +00:00
dependabot[bot]
fa54600032 chore(deps): bump github.com/kedacore/keda/v2 in /plugins/scheduler-k3s
Bumps [github.com/kedacore/keda/v2](https://github.com/kedacore/keda) from 2.18.1 to 2.18.2.
- [Release notes](https://github.com/kedacore/keda/releases)
- [Changelog](https://github.com/kedacore/keda/blob/main/CHANGELOG.md)
- [Commits](https://github.com/kedacore/keda/compare/v2.18.1...v2.18.2)

---
updated-dependencies:
- dependency-name: github.com/kedacore/keda/v2
  dependency-version: 2.18.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-09 13:11:17 +00:00
dependabot[bot]
0f78321dbe chore(deps): bump github.com/onsi/gomega in /plugins/config
Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.38.2 to 1.38.3.
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/gomega/compare/v1.38.2...v1.38.3)

---
updated-dependencies:
- dependency-name: github.com/onsi/gomega
  dependency-version: 1.38.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-09 13:06:44 +00:00
Jose Diaz-Gonzalez
d8195ca29b Merge pull request #8200 from dokku/dependabot/pip/docs/_build/pymdown-extensions-10.18
chore(deps): bump pymdown-extensions from 10.17.2 to 10.18 in /docs/_build
2025-12-08 15:46:29 -05:00
Jose Diaz-Gonzalez
dc3a744a29 Merge pull request #8202 from dokku/dependabot/go_modules/plugins/scheduler-docker-local/golang.org/x/sync-0.19.0
chore(deps): bump golang.org/x/sync from 0.18.0 to 0.19.0 in /plugins/scheduler-docker-local
2025-12-08 15:46:15 -05:00
Jose Diaz-Gonzalez
75a331d9b2 Merge pull request #8203 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-3.6.4
chore(deps): bump traefik from 3.6.2 to 3.6.4 in /plugins/traefik-vhosts
2025-12-08 15:46:04 -05:00
Jose Diaz-Gonzalez
c41dc2b915 Merge pull request #8204 from dokku/dependabot/go_modules/plugins/scheduler-k3s/golang.org/x/sync-0.19.0
chore(deps): bump golang.org/x/sync from 0.18.0 to 0.19.0 in /plugins/scheduler-k3s
2025-12-08 15:45:58 -05:00
Jose Diaz-Gonzalez
b3478cb14e Merge pull request #8205 from deanmarano/patch-1
Add DNS plugin to community plugins list
2025-12-08 15:43:16 -05:00
Dean Marano
315e495694 Add DNS plugin to community plugins list 2025-12-08 12:57:57 -05:00
dependabot[bot]
9bc7b7ce8c chore(deps): bump golang.org/x/sync in /plugins/scheduler-k3s
Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.18.0 to 0.19.0.
- [Commits](https://github.com/golang/sync/compare/v0.18.0...v0.19.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sync
  dependency-version: 0.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-08 13:10:37 +00:00
dependabot[bot]
78c1ac5dbd chore(deps): bump traefik from 3.6.2 to 3.6.4 in /plugins/traefik-vhosts
Bumps traefik from 3.6.2 to 3.6.4.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: 3.6.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-08 13:09:43 +00:00
dependabot[bot]
24c4652b90 chore(deps): bump golang.org/x/sync in /plugins/scheduler-docker-local
Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.18.0 to 0.19.0.
- [Commits](https://github.com/golang/sync/compare/v0.18.0...v0.19.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sync
  dependency-version: 0.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-08 13:08:17 +00:00
dependabot[bot]
1f334b496f chore(deps): bump pymdown-extensions in /docs/_build
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.17.2 to 10.18.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.17.2...10.18)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-version: '10.18'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-08 13:06:17 +00:00
Dokku Bot
1ab923c252 Release 0.37.2
# History

## 0.37.2

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.37.2/bootstrap.sh
sudo DOKKU_TAG=v0.37.2 bash bootstrap.sh
```

### Bug Fixes

- #8198: @josegonzalez Ensure we continue on with logic if the error returned from fetching all apps is NoAppsExist

### Dependencies

- #8196: @dependabot[bot] chore(deps): bump byjg/easy-haproxy from 4.6.0 to 5.0.0 in /plugins/haproxy-vhosts
- #8197: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.11.31 to 2.11.32 in /plugins/scheduler-k3s
2025-12-06 03:20:03 +00:00
Jose Diaz-Gonzalez
adcd5aa812 Merge pull request #8198 from dokku/ignore-no-apps-exist 2025-12-05 22:18:36 -05:00
Jose Diaz-Gonzalez
129691eb6e fix: ensure we continue on with logic if the error returned from fetching all apps is NoAppsExist
This makes it so we don't accidentally skip logic that happens after iterate over the apps.
2025-12-05 20:16:15 -05:00
Jose Diaz-Gonzalez
4942a15a2b Merge pull request #8196 from dokku/dependabot/docker/plugins/haproxy-vhosts/byjg/easy-haproxy-5.0.0
chore(deps): bump byjg/easy-haproxy from 4.6.0 to 5.0.0 in /plugins/haproxy-vhosts
2025-12-05 12:06:33 -05:00
Jose Diaz-Gonzalez
3b117270b6 Merge pull request #8197 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/traefik/traefik/v2-2.11.32
chore(deps): bump github.com/traefik/traefik/v2 from 2.11.31 to 2.11.32 in /plugins/scheduler-k3s
2025-12-05 12:05:35 -05:00
dependabot[bot]
39f47b70d3 chore(deps): bump github.com/traefik/traefik/v2
Bumps [github.com/traefik/traefik/v2](https://github.com/traefik/traefik) from 2.11.31 to 2.11.32.
- [Release notes](https://github.com/traefik/traefik/releases)
- [Changelog](https://github.com/traefik/traefik/blob/v2.11.32/CHANGELOG.md)
- [Commits](https://github.com/traefik/traefik/compare/v2.11.31...v2.11.32)

---
updated-dependencies:
- dependency-name: github.com/traefik/traefik/v2
  dependency-version: 2.11.32
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-05 13:09:24 +00:00
dependabot[bot]
ff81f57840 chore(deps): bump byjg/easy-haproxy in /plugins/haproxy-vhosts
Bumps byjg/easy-haproxy from 4.6.0 to 5.0.0.

---
updated-dependencies:
- dependency-name: byjg/easy-haproxy
  dependency-version: 5.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-05 13:08:46 +00:00
Dokku Bot
c17bab994a Release 0.37.1
# History

## 0.37.1

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.37.1/bootstrap.sh
sudo DOKKU_TAG=v0.37.1 bash bootstrap.sh
```

### Bug Fixes

- #8186: @josegonzalez Update url to download golang
- #8155: @josegonzalez Sanitize vector sink values in report output
- #8156: @josegonzalez Do not start nginx if there are no apps with nginx as a proxy
- #8152: @josegonzalez Ensure keda usage does not cause jank in scaling deployments

### New Features

- #8154: @josegonzalez Enable live-restore by default when installing Dokku
- #8151: @josegonzalez Allow exposing non-web processes as kubernetes services

### Refactors

- #8149: @josegonzalez Remove nginx checks for functionality that always exists

### Documentation

- #8170: @znz Fix version in migration docs
- #8169: @josegonzalez Update logging in doc generation to enhance doc generation debugging
- #8153: @josegonzalez Fix reference to letsencrypt-server property
- #8150: @josegonzalez Clarify system requirements for k3s usage
- #8148: @josegonzalez Clarify plugin installation documentation

### Dependencies

- #8192: @dependabot[bot] chore(deps): bump golang from 1.25.4 to 1.25.5 in /tests/apps/go-fail-predeploy
- #8191: @dependabot[bot] chore(deps): bump golang from 1.25.4 to 1.25.5 in /tests/apps/go-fail-postdeploy
- #8189: @dependabot[bot] chore(deps): bump golang from 1.25.4 to 1.25.5 in /tests/apps/gogrpc
- #8193: @dependabot[bot] chore(deps): bump python from 3.14.0-alpine to 3.14.1-alpine in /docs/_build
- #8190: @dependabot[bot] chore(deps): bump golang from 1.25.4 to 1.25.5 in /tests/apps/zombies-dockerfile-no-tini
- #8188: @dependabot[bot] chore(deps): bump golang from 1.25.4 to 1.25.5 in /tests/apps/zombies-dockerfile-tini
- #8194: @dependabot[bot] chore(deps): bump python from 3.14.0-bookworm to 3.14.1-bookworm in /tests/apps/dockerfile-release
- #8195: @dependabot[bot] chore(deps): bump django from 5.2.8 to 5.2.9 in /tests/apps/dockerfile-release
- #8177: @dependabot[bot] chore(deps): bump express from 5.1.0 to 5.2.1 in /tests/apps/nodejs-express-noprocfile
- #8178: @dependabot[bot] chore(deps): bump express from 5.1.0 to 5.2.1 in /tests/apps/dockerfile-procfile-bad
- #8179: @dependabot[bot] chore(deps): bump express from 5.1.0 to 5.2.1 in /tests/apps/nodejs-express
- #8180: @dependabot[bot] chore(deps): bump express from 5.1.0 to 5.2.1 in /tests/apps/dockerfile-procfile
- #8181: @dependabot[bot] chore(deps): bump express from 5.1.0 to 5.2.1 in /tests/apps/gitsubmodules
- #8183: @dependabot[bot] chore(deps): bump express from 5.1.0 to 5.2.1 in /tests/apps/checks-root
- #8182: @dependabot[bot] chore(deps): bump express from 5.1.0 to 5.2.1 in /tests/apps/nodejs-express-noappjson
- #8184: @dependabot[bot] chore(deps): bump express from 5.1.0 to 5.2.1 in /tests/apps/dockerfile-app-json-formations
- #8172: @dependabot[bot] chore(deps): bump beautifulsoup4 from 4.14.2 to 4.14.3 in /docs/_build
- #8173: @dependabot[bot] chore(deps): bump werkzeug from 3.1.3 to 3.1.4 in /tests/apps/python-flask
- #8164: @dependabot[bot] chore(deps): bump body-parser from 2.2.0 to 2.2.1 in /tests/apps/checks-root
- #8165: @dependabot[bot] chore(deps): bump github.com/go-resty/resty/v2 from 2.16.5 to 2.17.0 in /plugins/scheduler-k3s
- #8167: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.17.1 to 10.17.2 in /docs/_build
- #8162: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.11.30 to 2.11.31 in /plugins/scheduler-k3s
- #8161: @dependabot[bot] chore(deps): bump github.com/fluxcd/pkg/kustomize from 1.23.0 to 1.24.0 in /plugins/scheduler-k3s
- #8159: @dependabot[bot] chore(deps): bump helm.sh/helm/v3 from 3.19.0 to 3.19.2 in /plugins/scheduler-k3s
- #8158: @dependabot[bot] chore(deps): bump k8s.io/kubernetes from 1.34.1 to 1.34.2 in /plugins/scheduler-k3s
- #8143: @dependabot[bot] chore(deps): bump actions/checkout from 5 to 6
- #8145: @dependabot[bot] chore(deps): bump github.com/go-openapi/jsonpointer from 0.22.1 to 0.22.3 in /plugins/scheduler-k3s
- #8146: @dependabot[bot] chore(deps): bump k8s.io/kubectl from 0.34.1 to 0.34.2 in /plugins/scheduler-k3s
- #8144: @dependabot[bot] chore(deps): bump traefik from 3.6.1 to 3.6.2 in /plugins/traefik-vhosts
2025-12-04 04:53:29 +00:00
Jose Diaz-Gonzalez
d2674ac9d5 Merge pull request #8192 from dokku/dependabot/docker/tests/apps/go-fail-predeploy/golang-1.25.5
chore(deps): bump golang from 1.25.4 to 1.25.5 in /tests/apps/go-fail-predeploy
2025-12-03 16:09:59 -05:00
Jose Diaz-Gonzalez
31ca55732f Merge pull request #8191 from dokku/dependabot/docker/tests/apps/go-fail-postdeploy/golang-1.25.5
chore(deps): bump golang from 1.25.4 to 1.25.5 in /tests/apps/go-fail-postdeploy
2025-12-03 16:09:50 -05:00
Jose Diaz-Gonzalez
8dbb9cb976 Merge pull request #8189 from dokku/dependabot/docker/tests/apps/gogrpc/golang-1.25.5
chore(deps): bump golang from 1.25.4 to 1.25.5 in /tests/apps/gogrpc
2025-12-03 16:09:42 -05:00
Jose Diaz-Gonzalez
92904c8f04 Merge pull request #8193 from dokku/dependabot/docker/docs/_build/python-3.14.1-alpine
chore(deps): bump python from 3.14.0-alpine to 3.14.1-alpine in /docs/_build
2025-12-03 16:09:32 -05:00
Jose Diaz-Gonzalez
da25c5ad7d Merge pull request #8190 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-no-tini/golang-1.25.5
chore(deps): bump golang from 1.25.4 to 1.25.5 in /tests/apps/zombies-dockerfile-no-tini
2025-12-03 16:09:22 -05:00
Jose Diaz-Gonzalez
12e32697fc Merge pull request #8188 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-tini/golang-1.25.5
chore(deps): bump golang from 1.25.4 to 1.25.5 in /tests/apps/zombies-dockerfile-tini
2025-12-03 16:09:12 -05:00
Jose Diaz-Gonzalez
18b38f40fe Merge pull request #8194 from dokku/dependabot/docker/tests/apps/dockerfile-release/python-3.14.1-bookworm
chore(deps): bump python from 3.14.0-bookworm to 3.14.1-bookworm in /tests/apps/dockerfile-release
2025-12-03 16:08:53 -05:00
Jose Diaz-Gonzalez
8cde5d9500 Merge pull request #8195 from dokku/dependabot/pip/tests/apps/dockerfile-release/django-5.2.9
chore(deps): bump django from 5.2.8 to 5.2.9 in /tests/apps/dockerfile-release
2025-12-03 16:08:36 -05:00
dependabot[bot]
2737e691ce chore(deps): bump django in /tests/apps/dockerfile-release
Bumps [django](https://github.com/django/django) from 5.2.8 to 5.2.9.
- [Commits](https://github.com/django/django/compare/5.2.8...5.2.9)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 5.2.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-03 13:11:06 +00:00
dependabot[bot]
5330a2ac7e chore(deps): bump python in /tests/apps/dockerfile-release
Bumps python from 3.14.0-bookworm to 3.14.1-bookworm.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.14.1-bookworm
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-03 13:05:07 +00:00
dependabot[bot]
2a0f3f5034 chore(deps): bump golang in /tests/apps/go-fail-predeploy
Bumps golang from 1.25.4 to 1.25.5.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-03 13:05:05 +00:00
dependabot[bot]
af4f126b78 chore(deps): bump python in /docs/_build
Bumps python from 3.14.0-alpine to 3.14.1-alpine.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.14.1-alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-03 13:05:05 +00:00
dependabot[bot]
1ae7467e5a chore(deps): bump golang in /tests/apps/go-fail-postdeploy
Bumps golang from 1.25.4 to 1.25.5.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-03 13:05:04 +00:00
dependabot[bot]
f962241557 chore(deps): bump golang in /tests/apps/zombies-dockerfile-no-tini
Bumps golang from 1.25.4 to 1.25.5.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-03 13:04:59 +00:00
dependabot[bot]
3157709b11 chore(deps): bump golang from 1.25.4 to 1.25.5 in /tests/apps/gogrpc
Bumps golang from 1.25.4 to 1.25.5.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-03 13:04:57 +00:00
dependabot[bot]
9918b0dd19 chore(deps): bump golang in /tests/apps/zombies-dockerfile-tini
Bumps golang from 1.25.4 to 1.25.5.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-03 13:04:57 +00:00
Jose Diaz-Gonzalez
cc46c5ae9c Merge pull request #8177 from dokku/dependabot/npm_and_yarn/tests/apps/nodejs-express-noprocfile/express-5.2.1
chore(deps): bump express from 5.1.0 to 5.2.1 in /tests/apps/nodejs-express-noprocfile
2025-12-02 23:55:41 -05:00
Jose Diaz-Gonzalez
0ec9600d84 Merge pull request #8178 from dokku/dependabot/npm_and_yarn/tests/apps/dockerfile-procfile-bad/express-5.2.1
chore(deps): bump express from 5.1.0 to 5.2.1 in /tests/apps/dockerfile-procfile-bad
2025-12-02 23:55:24 -05:00
Jose Diaz-Gonzalez
ea0e044bd2 Merge pull request #8179 from dokku/dependabot/npm_and_yarn/tests/apps/nodejs-express/express-5.2.1
chore(deps): bump express from 5.1.0 to 5.2.1 in /tests/apps/nodejs-express
2025-12-02 23:54:57 -05:00
Jose Diaz-Gonzalez
35eb9a1ea3 Merge pull request #8180 from dokku/dependabot/npm_and_yarn/tests/apps/dockerfile-procfile/express-5.2.1
chore(deps): bump express from 5.1.0 to 5.2.1 in /tests/apps/dockerfile-procfile
2025-12-02 23:54:45 -05:00
Jose Diaz-Gonzalez
2d7e5181c6 Merge pull request #8181 from dokku/dependabot/npm_and_yarn/tests/apps/gitsubmodules/express-5.2.1
chore(deps): bump express from 5.1.0 to 5.2.1 in /tests/apps/gitsubmodules
2025-12-02 23:54:39 -05:00
Jose Diaz-Gonzalez
537a2a3397 Merge pull request #8183 from dokku/dependabot/npm_and_yarn/tests/apps/checks-root/express-5.2.1
chore(deps): bump express from 5.1.0 to 5.2.1 in /tests/apps/checks-root
2025-12-02 23:54:33 -05:00
Jose Diaz-Gonzalez
cb931253f7 Merge pull request #8182 from dokku/dependabot/npm_and_yarn/tests/apps/nodejs-express-noappjson/express-5.2.1
chore(deps): bump express from 5.1.0 to 5.2.1 in /tests/apps/nodejs-express-noappjson
2025-12-02 23:54:24 -05:00
Jose Diaz-Gonzalez
582ecc8ec4 Merge pull request #8184 from dokku/dependabot/npm_and_yarn/tests/apps/dockerfile-app-json-formations/express-5.2.1
chore(deps): bump express from 5.1.0 to 5.2.1 in /tests/apps/dockerfile-app-json-formations
2025-12-02 23:53:59 -05:00
dependabot[bot]
d43a23df5a chore(deps): bump express in /tests/apps/nodejs-express-noprocfile
Bumps [express](https://github.com/expressjs/express) from 5.1.0 to 5.2.1.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/v5.1.0...v5.2.1)

---
updated-dependencies:
- dependency-name: express
  dependency-version: 5.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-03 02:53:02 +00:00
dependabot[bot]
f6699ba467 chore(deps): bump express in /tests/apps/nodejs-express
Bumps [express](https://github.com/expressjs/express) from 5.1.0 to 5.2.1.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/v5.1.0...v5.2.1)

---
updated-dependencies:
- dependency-name: express
  dependency-version: 5.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-03 02:52:53 +00:00
dependabot[bot]
00ed4e41b1 chore(deps): bump express in /tests/apps/dockerfile-procfile-bad
Bumps [express](https://github.com/expressjs/express) from 5.1.0 to 5.2.1.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/v5.1.0...v5.2.1)

---
updated-dependencies:
- dependency-name: express
  dependency-version: 5.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-03 02:51:54 +00:00
dependabot[bot]
61ca55b697 chore(deps): bump express in /tests/apps/dockerfile-procfile
Bumps [express](https://github.com/expressjs/express) from 5.1.0 to 5.2.1.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/v5.1.0...v5.2.1)

---
updated-dependencies:
- dependency-name: express
  dependency-version: 5.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-03 02:51:10 +00:00
dependabot[bot]
6fcdf61196 chore(deps): bump express in /tests/apps/gitsubmodules
Bumps [express](https://github.com/expressjs/express) from 5.1.0 to 5.2.1.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/v5.1.0...v5.2.1)

---
updated-dependencies:
- dependency-name: express
  dependency-version: 5.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-03 02:51:05 +00:00
dependabot[bot]
a6095d4496 chore(deps): bump express from 5.1.0 to 5.2.1 in /tests/apps/checks-root
Bumps [express](https://github.com/expressjs/express) from 5.1.0 to 5.2.1.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/v5.1.0...v5.2.1)

---
updated-dependencies:
- dependency-name: express
  dependency-version: 5.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-03 02:48:49 +00:00
dependabot[bot]
f3a47fba2b chore(deps): bump express in /tests/apps/nodejs-express-noappjson
Bumps [express](https://github.com/expressjs/express) from 5.1.0 to 5.2.1.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/v5.1.0...v5.2.1)

---
updated-dependencies:
- dependency-name: express
  dependency-version: 5.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-03 02:48:46 +00:00
dependabot[bot]
2e74fb8506 chore(deps): bump express in /tests/apps/dockerfile-app-json-formations
Bumps [express](https://github.com/expressjs/express) from 5.1.0 to 5.2.1.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/v5.1.0...v5.2.1)

---
updated-dependencies:
- dependency-name: express
  dependency-version: 5.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-03 02:38:54 +00:00
Jose Diaz-Gonzalez
d60a21e65e Merge pull request #8186 from dokku/go-download
Update url to download golang
2025-12-02 21:30:06 -05:00
Jose Diaz-Gonzalez
7f0050dbe7 fix: update url to download golang 2025-12-02 20:51:07 -05:00
Jose Diaz-Gonzalez
a458bd6803 Merge pull request #8172 from dokku/dependabot/pip/docs/_build/beautifulsoup4-4.14.3
chore(deps): bump beautifulsoup4 from 4.14.2 to 4.14.3 in /docs/_build
2025-12-02 20:45:30 -05:00
Jose Diaz-Gonzalez
bedaa5203c Merge pull request #8173 from dokku/dependabot/pip/tests/apps/python-flask/werkzeug-3.1.4
chore(deps): bump werkzeug from 3.1.3 to 3.1.4 in /tests/apps/python-flask
2025-12-02 20:45:18 -05:00
dependabot[bot]
b87f617d2f chore(deps): bump werkzeug in /tests/apps/python-flask
Bumps [werkzeug](https://github.com/pallets/werkzeug) from 3.1.3 to 3.1.4.
- [Release notes](https://github.com/pallets/werkzeug/releases)
- [Changelog](https://github.com/pallets/werkzeug/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/werkzeug/compare/3.1.3...3.1.4)

---
updated-dependencies:
- dependency-name: werkzeug
  dependency-version: 3.1.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 15:27:36 +00:00
dependabot[bot]
23924a092d chore(deps): bump beautifulsoup4 from 4.14.2 to 4.14.3 in /docs/_build
Bumps [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) from 4.14.2 to 4.14.3.

---
updated-dependencies:
- dependency-name: beautifulsoup4
  dependency-version: 4.14.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 14:40:06 +00:00
Jose Diaz-Gonzalez
8ef9390ae1 Merge pull request #8170 from znz/patch-1 2025-11-30 06:42:19 -05:00
Kazuhiro NISHIYAMA
b90add9e4e Fix version 2025-11-30 19:29:05 +09:00
Jose Diaz-Gonzalez
42aa57e067 Merge pull request #8169 from dokku/debug-doc-generation
Update logging in doc generation to enhance doc generation debugging
2025-11-28 04:12:54 -05:00
Jose Diaz-Gonzalez
c5c395ed65 docs: update logging in doc generation to enhance doc generation debugging 2025-11-28 02:53:36 -05:00
Jose Diaz-Gonzalez
152213ffb4 Merge pull request #8164 from dokku/dependabot/npm_and_yarn/tests/apps/checks-root/body-parser-2.2.1
chore(deps): bump body-parser from 2.2.0 to 2.2.1 in /tests/apps/checks-root
2025-11-28 01:42:24 -05:00
Jose Diaz-Gonzalez
c336aa15a0 Merge pull request #8165 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/go-resty/resty/v2-2.17.0
chore(deps): bump github.com/go-resty/resty/v2 from 2.16.5 to 2.17.0 in /plugins/scheduler-k3s
2025-11-28 01:32:14 -05:00
Jose Diaz-Gonzalez
945c032290 Merge pull request #8167 from dokku/dependabot/pip/docs/_build/pymdown-extensions-10.17.2
chore(deps): bump pymdown-extensions from 10.17.1 to 10.17.2 in /docs/_build
2025-11-28 01:32:09 -05:00
dependabot[bot]
b79f6d6531 chore(deps): bump pymdown-extensions in /docs/_build
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.17.1 to 10.17.2.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.17.1...10.17.2)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-version: 10.17.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-27 13:06:13 +00:00
dependabot[bot]
b8ae0169e7 chore(deps): bump github.com/go-resty/resty/v2 in /plugins/scheduler-k3s
Bumps [github.com/go-resty/resty/v2](https://github.com/go-resty/resty) from 2.16.5 to 2.17.0.
- [Release notes](https://github.com/go-resty/resty/releases)
- [Commits](https://github.com/go-resty/resty/compare/v2.16.5...v2.17.0)

---
updated-dependencies:
- dependency-name: github.com/go-resty/resty/v2
  dependency-version: 2.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-26 13:10:07 +00:00
dependabot[bot]
b6604118d4 chore(deps): bump body-parser in /tests/apps/checks-root
Bumps [body-parser](https://github.com/expressjs/body-parser) from 2.2.0 to 2.2.1.
- [Release notes](https://github.com/expressjs/body-parser/releases)
- [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md)
- [Commits](https://github.com/expressjs/body-parser/compare/v2.2.0...v2.2.1)

---
updated-dependencies:
- dependency-name: body-parser
  dependency-version: 2.2.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-25 16:42:11 +00:00
Jose Diaz-Gonzalez
4a8f247980 Merge pull request #8162 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/traefik/traefik/v2-2.11.31
chore(deps): bump github.com/traefik/traefik/v2 from 2.11.30 to 2.11.31 in /plugins/scheduler-k3s
2025-11-25 11:41:16 -05:00
Jose Diaz-Gonzalez
98d861a02a Merge pull request #8161 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/fluxcd/pkg/kustomize-1.24.0
chore(deps): bump github.com/fluxcd/pkg/kustomize from 1.23.0 to 1.24.0 in /plugins/scheduler-k3s
2025-11-25 11:41:09 -05:00
dependabot[bot]
95e99070c6 chore(deps): bump github.com/traefik/traefik/v2
Bumps [github.com/traefik/traefik/v2](https://github.com/traefik/traefik) from 2.11.30 to 2.11.31.
- [Release notes](https://github.com/traefik/traefik/releases)
- [Changelog](https://github.com/traefik/traefik/blob/v2.11.31/CHANGELOG.md)
- [Commits](https://github.com/traefik/traefik/compare/v2.11.30...v2.11.31)

---
updated-dependencies:
- dependency-name: github.com/traefik/traefik/v2
  dependency-version: 2.11.31
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-25 13:10:34 +00:00
dependabot[bot]
d2719a2751 chore(deps): bump github.com/fluxcd/pkg/kustomize
Bumps [github.com/fluxcd/pkg/kustomize](https://github.com/fluxcd/pkg) from 1.23.0 to 1.24.0.
- [Commits](https://github.com/fluxcd/pkg/compare/apis/meta/v1.23.0...kustomize/v1.24.0)

---
updated-dependencies:
- dependency-name: github.com/fluxcd/pkg/kustomize
  dependency-version: 1.24.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-25 13:10:18 +00:00
Jose Diaz-Gonzalez
35383b0a73 Merge pull request #8159 from dokku/dependabot/go_modules/plugins/scheduler-k3s/helm.sh/helm/v3-3.19.2
chore(deps): bump helm.sh/helm/v3 from 3.19.0 to 3.19.2 in /plugins/scheduler-k3s
2025-11-24 15:05:27 -05:00
Jose Diaz-Gonzalez
6271566a89 Merge pull request #8158 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/kubernetes-1.34.2
chore(deps): bump k8s.io/kubernetes from 1.34.1 to 1.34.2 in /plugins/scheduler-k3s
2025-11-24 15:05:12 -05:00
dependabot[bot]
cd5c077787 chore(deps): bump helm.sh/helm/v3 in /plugins/scheduler-k3s
Bumps [helm.sh/helm/v3](https://github.com/helm/helm) from 3.19.0 to 3.19.2.
- [Release notes](https://github.com/helm/helm/releases)
- [Commits](https://github.com/helm/helm/compare/v3.19.0...v3.19.2)

---
updated-dependencies:
- dependency-name: helm.sh/helm/v3
  dependency-version: 3.19.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-24 14:27:44 +00:00
dependabot[bot]
d7a9bf0a4d chore(deps): bump k8s.io/kubernetes in /plugins/scheduler-k3s
Bumps [k8s.io/kubernetes](https://github.com/kubernetes/kubernetes) from 1.34.1 to 1.34.2.
- [Release notes](https://github.com/kubernetes/kubernetes/releases)
- [Commits](https://github.com/kubernetes/kubernetes/compare/v1.34.1...v1.34.2)

---
updated-dependencies:
- dependency-name: k8s.io/kubernetes
  dependency-version: 1.34.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-24 14:27:36 +00:00
Jose Diaz-Gonzalez
1fb869f0c4 Merge pull request #8155 from dokku/8147-sanitize-vector-sink
Sanitize vector sink values in report output
2025-11-23 01:22:45 -05:00
Jose Diaz-Gonzalez
144f541e4f Merge pull request #8156 from dokku/6291-update-alt-proxy
Do not start nginx if there are no apps with nginx as a proxy
2025-11-23 00:13:39 -05:00
Jose Diaz-Gonzalez
e60ebf12fa fix: do not sanitize if the value was the one requested 2025-11-23 00:11:05 -05:00
Jose Diaz-Gonzalez
a4a229df3a fix: do not start nginx if there are no apps with nginx as a proxy
Also start it by default in the case where there are no apps at all, as that likely means this is a first-time installation.
2025-11-22 22:06:28 -05:00
Jose Diaz-Gonzalez
f4e2c32721 feat: sanitize vector sink values in report output
It is not sanitized in json format output as that is used for automation, but this should remove the need to redact any potentially sensitive information that users have in the sink, such as a token.

Closes #8147
2025-11-22 21:57:53 -05:00
Jose Diaz-Gonzalez
e1debb80b5 Merge pull request #8154 from dokku/6954-live-restore
Enable live-restore by default when installing Dokku
2025-11-22 21:51:34 -05:00
Jose Diaz-Gonzalez
5adf0a2b6a Merge pull request #8152 from dokku/k3s-keda-replicas 2025-11-22 21:28:28 -05:00
Jose Diaz-Gonzalez
9fab65dc61 Merge pull request #8151 from dokku/7204-service-process-types
Allow exposing non-web processes as kubernetes services
2025-11-22 20:33:42 -05:00
Jose Diaz-Gonzalez
e50558e9e0 Merge pull request #8149 from dokku/remove-unused-code
Remove nginx checks for functionality that always exists
2025-11-22 20:26:50 -05:00
Jose Diaz-Gonzalez
247d522b7e feat: enable live-restore by default when installing Dokku
This will help users have more seamless upgrades in the future in cases where docker is restarted.
2025-11-22 20:25:22 -05:00
Jose Diaz-Gonzalez
ca3f609b75 Merge pull request #8153 from dokku/k3s-letsencrypt-server-docs
Fix reference to letsencrypt-server property
2025-11-22 20:15:43 -05:00
Jose Diaz-Gonzalez
3a44cc6270 docs: fix reference to letsencrypt-server property 2025-11-22 20:08:14 -05:00
Jose Diaz-Gonzalez
4dce4d652a fix: ensure keda usage does not cause jank in scaling deployments
If the values set by keda do not match the current deployment replicas value, the deployment object may be scaled in unexpected ways during a helm release. This change ensures keda will continue to manage that value correctly without the deployment object setting it back to something else.
2025-11-22 19:51:29 -05:00
Jose Diaz-Gonzalez
0c96c4b6de feat: allow exposing non-web processes as kubernetes services
Closes #7204
2025-11-22 19:39:56 -05:00
Jose Diaz-Gonzalez
72c519f7b3 Merge pull request #8150 from dokku/7573-memory
Clarify system requirements for k3s usage
2025-11-22 18:41:49 -05:00
Jose Diaz-Gonzalez
81a76207b5 docs: clarify system requirements for k3s usage
Closes #7573
2025-11-22 18:37:02 -05:00
Jose Diaz-Gonzalez
05bd2913dd chore: remove conditionals for variables that always have values 2025-11-21 22:15:48 -05:00
Jose Diaz-Gonzalez
6bb20e9b27 chore: remove nginx checks for functionality that always exists
TLS 1.3, HTTP2 and GRPC are now standard in all operating systems where Dokku is supported.
2025-11-21 22:05:20 -05:00
Jose Diaz-Gonzalez
99d4b4d0e8 Merge pull request #8148 from dokku/docker-install-updates
Clarify plugin installation documentation
2025-11-21 19:35:22 -05:00
Jose Diaz-Gonzalez
2ad14f71ea docs: clarify plugin installation documentation 2025-11-21 19:32:55 -05:00
Jose Diaz-Gonzalez
1412002217 Merge pull request #8143 from dokku/dependabot/github_actions/actions/checkout-6
chore(deps): bump actions/checkout from 5 to 6
2025-11-21 13:25:02 -05:00
Jose Diaz-Gonzalez
1c3dc8285a Merge pull request #8145 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/go-openapi/jsonpointer-0.22.3
chore(deps): bump github.com/go-openapi/jsonpointer from 0.22.1 to 0.22.3 in /plugins/scheduler-k3s
2025-11-21 13:20:14 -05:00
Jose Diaz-Gonzalez
1dc3fb972f Merge pull request #8146 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/kubectl-0.34.2
chore(deps): bump k8s.io/kubectl from 0.34.1 to 0.34.2 in /plugins/scheduler-k3s
2025-11-21 13:20:05 -05:00
Jose Diaz-Gonzalez
38544eb6be Merge pull request #8144 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-3.6.2
chore(deps): bump traefik from 3.6.1 to 3.6.2 in /plugins/traefik-vhosts
2025-11-21 13:19:58 -05:00
dependabot[bot]
dd4908174b chore(deps): bump k8s.io/kubectl in /plugins/scheduler-k3s
Bumps [k8s.io/kubectl](https://github.com/kubernetes/kubectl) from 0.34.1 to 0.34.2.
- [Commits](https://github.com/kubernetes/kubectl/compare/v0.34.1...v0.34.2)

---
updated-dependencies:
- dependency-name: k8s.io/kubectl
  dependency-version: 0.34.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-21 13:10:20 +00:00
dependabot[bot]
d923f4c73d chore(deps): bump github.com/go-openapi/jsonpointer
Bumps [github.com/go-openapi/jsonpointer](https://github.com/go-openapi/jsonpointer) from 0.22.1 to 0.22.3.
- [Release notes](https://github.com/go-openapi/jsonpointer/releases)
- [Commits](https://github.com/go-openapi/jsonpointer/compare/v0.22.1...v0.22.3)

---
updated-dependencies:
- dependency-name: github.com/go-openapi/jsonpointer
  dependency-version: 0.22.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-21 13:10:13 +00:00
dependabot[bot]
d27d3ea380 chore(deps): bump traefik from 3.6.1 to 3.6.2 in /plugins/traefik-vhosts
Bumps traefik from 3.6.1 to 3.6.2.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: 3.6.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-21 13:09:38 +00:00
dependabot[bot]
9288d3c6a6 chore(deps): bump actions/checkout from 5 to 6
Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-21 13:03:36 +00:00
Dokku Bot
4d896b22d0 Release 0.37.0
# History

## 0.37.0

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.37.0/bootstrap.sh
sudo DOKKU_TAG=v0.37.0 bash bootstrap.sh
```

See the [0.37.0 migration guide](/docs/appendices/0.37.0-migration-guide.md) for more information on migrating to 0.37.0.

### Backwards Compatibility Breaks

- #8140: @josegonzalez Rename the scheduler-k3s:cluster-* commands to use a : instead of - for a delimiter
- #7982: @josegonzalez Remove references to pack being experimental

### Bug Fixes

- #8136: @josegonzalez Do not reset manually set port mappings when upgrading dokku
- #8114: @josegonzalez Ensure we can execute run commands when exec is executed as part of an entrypoint
- #8109: @josegonzalez Allow skipping the install trigger when installing a plugin
- #8104: @josegonzalez Drop deprecated aufs check
- #8100: @othercorey Add process-type label for run with procfile cmd

### New Features

- #8139: @josegonzalez Add aliases for select builder and scheduler plugins
- #8138: @josegonzalez Turn on buildpack trace mode when dokku trace is on
- #8137: @josegonzalez Add the ability to create k3s node profiles
- #8135: @josegonzalez Add support for git remotes with port specified inline
- #8112: @josegonzalez Implement cron and one-off run task TTLs
- #8106: @josegonzalez Support inline comments for app.json
- #8105: @josegonzalez Allow specifying kubelet-args when adding a new node to the cluster
- #8085: @josegonzalez Implement config:import command
- #8004: @Tashows Add buildpacks:detect subcommand
- #7991: @josegonzalez Add ability to pause/restart cron jobs
- #7989: @josegonzalez Add support to prevent overlapping execution of cron tasks
- #7986: @josegonzalez Add support for specifying CNB buildpacks via buildpacks command
- #7956: @josegonzalez Add a Railpack builder to Dokku
- #7608: @dragonhunt02 Add commands to proxy implementations for managing labels

### Refactors

- #8101: @josegonzalez Filter build docker-options correctly for each builder

### Documentation

- #8103: @josegonzalez Correct the release version for railpacks support

### Dependencies

- #8130: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.43.0 to 0.45.0 in /plugins/common
- #8110: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.76.0 to 1.77.0 in /tests/apps/gogrpc
- #8108: @dependabot[bot] chore(deps): bump js-yaml from 3.14.1 to 3.14.2 in /tests/apps/multi
- #8107: @dependabot[bot] chore(deps): bump click from 8.3.0 to 8.3.1 in /docs/_build
- #8098: @dependabot[bot] chore(deps): bump traefik from 3.5.4 to 3.6.1 in /plugins/traefik-vhosts
- #8097: @dependabot[bot] chore(deps): bump timberio/vector from 0.51.0-debian to 0.51.1-debian in /plugins/logs
- #8094: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.16.1 to 10.17.1 in /docs/_build
- #8092: @dependabot[bot] chore(deps): bump mkdocs-material from 9.6.23 to 9.7.0 in /docs/_build
- #8090: @dependabot[bot] chore(deps): bump sigs.k8s.io/kustomize/api from 0.20.1 to 0.21.0 in /plugins/scheduler-k3s
2025-11-20 23:06:11 +00:00
Jose Diaz-Gonzalez
b31fab115b Merge pull request #8090 from dokku/dependabot/go_modules/plugins/scheduler-k3s/sigs.k8s.io/kustomize/api-0.21.0
chore(deps): bump sigs.k8s.io/kustomize/api from 0.20.1 to 0.21.0 in /plugins/scheduler-k3s
2025-11-20 14:37:14 -05:00
dependabot[bot]
1de6b4ad42 chore(deps): bump sigs.k8s.io/kustomize/api in /plugins/scheduler-k3s
Bumps [sigs.k8s.io/kustomize/api](https://github.com/kubernetes-sigs/kustomize) from 0.20.1 to 0.21.0.
- [Release notes](https://github.com/kubernetes-sigs/kustomize/releases)
- [Commits](https://github.com/kubernetes-sigs/kustomize/compare/api/v0.20.1...api/v0.21.0)

---
updated-dependencies:
- dependency-name: sigs.k8s.io/kustomize/api
  dependency-version: 0.21.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-20 12:09:20 -05:00
Jose Diaz-Gonzalez
16ee66b552 Merge pull request #8107 from dokku/dependabot/pip/docs/_build/click-8.3.1
chore(deps): bump click from 8.3.0 to 8.3.1 in /docs/_build
2025-11-20 12:08:59 -05:00
Jose Diaz-Gonzalez
e40197cd37 Merge pull request #8108 from dokku/dependabot/npm_and_yarn/tests/apps/multi/js-yaml-3.14.2
chore(deps): bump js-yaml from 3.14.1 to 3.14.2 in /tests/apps/multi
2025-11-20 12:08:43 -05:00
Jose Diaz-Gonzalez
0e3f17d920 Merge pull request #8110 from dokku/dependabot/go_modules/tests/apps/gogrpc/google.golang.org/grpc-1.77.0
chore(deps): bump google.golang.org/grpc from 1.76.0 to 1.77.0 in /tests/apps/gogrpc
2025-11-20 12:08:20 -05:00
Jose Diaz-Gonzalez
7293893d99 Merge pull request #8130 from dokku/dependabot/go_modules/plugins/common/golang.org/x/crypto-0.45.0
chore(deps): bump golang.org/x/crypto from 0.43.0 to 0.45.0 in /plugins/common
2025-11-20 12:06:36 -05:00
Jose Diaz-Gonzalez
08ecc92630 Merge pull request #8092 from dokku/dependabot/pip/docs/_build/mkdocs-material-9.7.0
chore(deps): bump mkdocs-material from 9.6.23 to 9.7.0 in /docs/_build
2025-11-20 10:49:48 -05:00
Jose Diaz-Gonzalez
b27d6b791d Merge pull request #8094 from dokku/dependabot/pip/docs/_build/pymdown-extensions-10.17.1
chore(deps): bump pymdown-extensions from 10.16.1 to 10.17.1 in /docs/_build
2025-11-20 10:49:00 -05:00
Jose Diaz-Gonzalez
a6b6b08e3e chore: bump go modules and run go mod tidy 2025-11-20 10:47:44 -05:00
dependabot[bot]
49813a2a54 chore(deps): bump golang.org/x/crypto in /plugins/common
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.43.0 to 0.45.0.
- [Commits](https://github.com/golang/crypto/compare/v0.43.0...v0.45.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.45.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-20 10:47:11 -05:00
Jose Diaz-Gonzalez
b4e906285b Merge pull request #8086 from dokku/0.37-release
Release 0.37.0
2025-11-20 10:39:54 -05:00
Jose Diaz-Gonzalez
8f979ea0e7 Merge pull request #8140 from dokku/k3s-cluster-commands
Rename the scheduler-k3s:cluster-* commands to use a : instead of - for a delimiter
2025-11-20 05:01:11 -05:00
Jose Diaz-Gonzalez
1430c2a13e refactor: rename the scheduler-k3s:cluster-* commands to use a : instead of - for a delimiter
This standardizes the commands with the other k3s commands that use a colon delimiter as well.
2025-11-20 05:00:31 -05:00
Jose Diaz-Gonzalez
8243df4ade Merge pull request #8137 from dokku/k3s-server-profiles
Add the ability to create k3s node profiles
2025-11-20 04:57:34 -05:00
Jose Diaz-Gonzalez
0e5db7db5c fix: ensure the profile is a proper json file 2025-11-20 04:56:55 -05:00
Jose Diaz-Gonzalez
9c1677556e fix: read in the profile property correctly 2025-11-20 04:56:45 -05:00
Jose Diaz-Gonzalez
bd98ff5299 fix: properly write the profile command files out 2025-11-20 04:56:32 -05:00
Jose Diaz-Gonzalez
ca5c887b8a feat: add the ability to create k3s node profiles
Node profiles can be used to specify repetitive options for clusters, making it easier to add specific types of instances quickly.

This PR additionally fixes kubelet-args specification - the same key can be specified multiple times, such as when specifying custom sysctl rules.
2025-11-20 04:42:57 -05:00
Jose Diaz-Gonzalez
aee59f623c Merge pull request #8139 from dokku/command-aliases
Add aliases for select builder and scheduler plugins
2025-11-20 04:30:21 -05:00
Jose Diaz-Gonzalez
f6b97100ea fix: correct lint issue 2025-11-20 04:29:41 -05:00
Jose Diaz-Gonzalez
0c8cfe9a48 Merge pull request #8135 from dokku/8093-client-remote-parsing 2025-11-20 03:35:23 -05:00
Jose Diaz-Gonzalez
0ef276d40b feat: add aliases for select builder and scheduler plugins
It can get repetitive to specify 'builder-' or 'scheduler-' prefixes for builder and scheduler commands. As these are mostly unique, Dokku now provides built-in aliases for the commands. Dokku still uses the long-form in all it's documentation, but these are a nice easter egg for determined users :)

Note that the null builder/scheduler plugins do not have aliases as they would shadow each other.
2025-11-20 03:12:25 -05:00
Jose Diaz-Gonzalez
553cc232b2 Merge pull request #8138 from dokku/buildpack-xtrace
Turn on buildpack trace mode when dokku trace is on
2025-11-20 02:42:57 -05:00
Jose Diaz-Gonzalez
afd2952cb1 feat: turn on buildpack trace mode when dokku trace is on
This removes the need for an extra step to enable more verbose debug logs from buildpacks.

Refs https://github.com/dokku/dokku/discussions/8070
2025-11-20 02:41:57 -05:00
Jose Diaz-Gonzalez
638d50127e Merge pull request #8136 from dokku/8067-ports-reset
Do not reset manually set port mappings when upgrading dokku
2025-11-20 02:37:46 -05:00
Jose Diaz-Gonzalez
58bfd70118 Merge pull request #8106 from dokku/8007-jsonc-app-json
Support inline comments for app.json
2025-11-20 02:37:01 -05:00
Jose Diaz-Gonzalez
63fc11a4b9 fix: properly use $1 as default value 2025-11-20 02:21:20 -05:00
Jose Diaz-Gonzalez
106b2c20f1 feat: add support for git remotes with port specified inline
Closes #8093
2025-11-20 02:20:35 -05:00
Jose Diaz-Gonzalez
67962ad527 tests: move helper to client.bats 2025-11-20 02:20:35 -05:00
Jose Diaz-Gonzalez
d94bc733c9 feat: allow overriding the TMP directory in setup_client_repo 2025-11-20 02:20:35 -05:00
Jose Diaz-Gonzalez
a21ee6f216 tests: make it clearer what happened when assert_output_contains fails 2025-11-20 02:20:35 -05:00
Jose Diaz-Gonzalez
7a93b11bdd feat: add tests for remote parsing 2025-11-20 02:20:35 -05:00
Jose Diaz-Gonzalez
78f0c53871 feat: add ability to specify an app path via environment variable
This can be used for testing as well as in real usage.
2025-11-20 02:20:35 -05:00
Jose Diaz-Gonzalez
54c1ccd9bb refactor: use tailscale/hujson to support trailing commas after the last member in arrays and lists 2025-11-20 01:00:40 -05:00
Jose Diaz-Gonzalez
318c21996a fix: use correct variable name 2025-11-20 00:59:49 -05:00
Jose Diaz-Gonzalez
6b67d5c59b tests: do not modify the existing app.json via jq
The jq binary doesn't support jsonc, so we can't modify it for testing purposes. Instead, just create an app.json with the correct heroku.postdeploy task.
2025-11-20 00:44:26 -05:00
Jose Diaz-Gonzalez
56566d1c05 chore: make the postdeploy task name more clear 2025-11-20 00:42:49 -05:00
Jose Diaz-Gonzalez
421863f4ac fix: sanitize app.json in trigger 2025-11-20 00:35:17 -05:00
Jose Diaz-Gonzalez
38505006e8 fix: correctly sanitize comments out of the jsonc content 2025-11-20 00:35:17 -05:00
Jose Diaz-Gonzalez
a05b79e2a9 tests: add inline comments on the python app.json file
This is the most-used app and therefore most-used app.json file, so this should allow us to test that moving to a new json parser works as expected.
2025-11-20 00:35:17 -05:00
Jose Diaz-Gonzalez
1c0ce250dc feat: support inline comments for app.json
Closes #8007
2025-11-20 00:35:17 -05:00
Jose Diaz-Gonzalez
a2d399c104 fix: do not reset manually set port mappings when upgrading dokku
Closes #8067
2025-11-20 00:21:40 -05:00
Jose Diaz-Gonzalez
9f8058dd78 Merge pull request #8114 from dokku/8052-run-exec
Ensure we can execute run commands when exec is executed as part of an entrypoint
2025-11-19 21:40:36 -05:00
Jose Diaz-Gonzalez
507916f57b Merge pull request #8112 from dokku/7938-run-retire
Implement cron and one-off run task TTLs
2025-11-19 21:40:10 -05:00
Jose Diaz-Gonzalez
6f095271e1 fix: ensure we can execute run commands when exec is executed as part of an entrypoint
Closes #8052
2025-11-19 20:34:51 -05:00
Jose Diaz-Gonzalez
44b87ffe8d tests: fix expected output of --quiet 2025-11-19 20:23:53 -05:00
Jose Diaz-Gonzalez
992b023bc8 chore: fix lint issues 2025-11-18 17:06:30 -05:00
Jose Diaz-Gonzalez
a6d65c821f feat: implement cron and one-off run task TTLs
Closes #7938
2025-11-18 16:46:31 -05:00
Jose Diaz-Gonzalez
2bd4272424 Merge pull request #8109 from dokku/7308-skip-install-trigger
Allow skipping the install trigger when installing a plugin
2025-11-18 15:06:25 -05:00
Jose Diaz-Gonzalez
99a1e2ee33 feat: default to running one-off k3s containers to a max of 1 day
This follows the standard enforced by Heroku.
2025-11-18 14:09:38 -05:00
Jose Diaz-Gonzalez
d5ea97f7b0 chore: consolidate on single method to redirect stdout/stderr to /dev/null 2025-11-18 14:07:09 -05:00
Jose Diaz-Gonzalez
6359404ef3 Merge pull request #8097 from dokku/dependabot/docker/plugins/logs/timberio/vector-0.51.1-debian
chore(deps): bump timberio/vector from 0.51.0-debian to 0.51.1-debian in /plugins/logs
2025-11-18 13:19:41 -05:00
Jose Diaz-Gonzalez
ba9eee8271 Merge pull request #8098 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-3.6.1
chore(deps): bump traefik from 3.5.4 to 3.6.1 in /plugins/traefik-vhosts
2025-11-18 13:19:10 -05:00
dependabot[bot]
691e454185 chore(deps): bump google.golang.org/grpc in /tests/apps/gogrpc
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.76.0 to 1.77.0.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.76.0...v1.77.0)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.77.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-18 13:02:23 +00:00
Jose Diaz-Gonzalez
d05925f6f1 feat: allow skipping the install trigger when installing a plugin
During docker image generation, certain folders either do not exist or are symlinked in an odd fashion, causing the install trigger to fail. This is not the case at runtime, so we should defer the install trigger until container start and provide a method of skipping it when generating a docker image.

Closes #7308
2025-11-18 02:35:16 -05:00
dependabot[bot]
d4bfd0b7fa chore(deps): bump js-yaml from 3.14.1 to 3.14.2 in /tests/apps/multi
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.14.1 to 3.14.2.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/3.14.1...3.14.2)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 3.14.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-17 15:23:47 +00:00
dependabot[bot]
ffd0a81311 chore(deps): bump click from 8.3.0 to 8.3.1 in /docs/_build
Bumps [click](https://github.com/pallets/click) from 8.3.0 to 8.3.1.
- [Release notes](https://github.com/pallets/click/releases)
- [Changelog](https://github.com/pallets/click/blob/8.3.1/CHANGES.rst)
- [Commits](https://github.com/pallets/click/compare/8.3.0...8.3.1)

---
updated-dependencies:
- dependency-name: click
  dependency-version: 8.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-17 13:07:46 +00:00
Jose Diaz-Gonzalez
a677e05b1f Merge pull request #8105 from dokku/kubelet-args
Allow specifying kubelet-args when adding a new node to the cluster
2025-11-17 04:17:25 -05:00
Jose Diaz-Gonzalez
575fbb3560 Merge pull request #7608 from dragonhunt02/label
Add commands to proxy implementations for managing labels
2025-11-17 00:20:03 -05:00
Jose Diaz-Gonzalez
f33d3d852f feat: allow specifying kubelet-args when adding a new node to the cluster
Kubelet arguments are useful for specifying settings such as supported sysctl fields.
2025-11-16 23:53:02 -05:00
Jose Diaz-Gonzalez
f38d8cfadb Merge pull request #8104 from dokku/drop-aufs-check
Drop deprecated aufs check
2025-11-16 18:52:58 -05:00
Jose Diaz-Gonzalez
e394776c3b fix: drop deprecated aufs check
Closes #8102
2025-11-16 18:52:19 -05:00
Jose Diaz-Gonzalez
2bad1e4acd Merge pull request #8103 from dokku/fix-docs
docs: correct the release version for railpacks support
2025-11-16 18:50:38 -05:00
Jose Diaz-Gonzalez
75945ee0d7 docs: correct the release version for railpacks support
Refs #7956 (thanks @pil0u)
2025-11-16 18:50:04 -05:00
Jose Diaz-Gonzalez
9d002ccab5 fix: correct the error message 2025-11-16 18:47:13 -05:00
Jose Diaz-Gonzalez
5df11a0a1f refactor: store labels in key=value format
This makes it easier to display at the cost of removing the override warnings (for now).
2025-11-16 18:44:21 -05:00
Jose Diaz-Gonzalez
a40c42019b fix: do not shift arguments 2025-11-16 18:42:57 -05:00
Jose Diaz-Gonzalez
d4783685d1 chore: update header for displaying app labels 2025-11-16 18:12:38 -05:00
Jose Diaz-Gonzalez
d212fd44c7 refactor: rename functions to be plural
They are plural for the scheduler-k3s plugin.
2025-11-16 18:12:28 -05:00
Jose Diaz-Gonzalez
d9073272df fix: minor help output formatting 2025-11-16 18:06:56 -05:00
Jose Diaz-Gonzalez
ff8ccd2801 tests: add tests for functionality 2025-11-16 18:01:20 -05:00
Jose Diaz-Gonzalez
3f5a022970 tests: force remove the file to silence warnings 2025-11-16 18:00:40 -05:00
Jose Diaz-Gonzalez
18be8f4fa9 fix: use correct argument name 2025-11-16 18:00:04 -05:00
Jose Diaz-Gonzalez
e397604841 refactor: move the labels to the properties folder
To be quite honest, these should just be in the docker-options plugin, but I think its fine to have them tracked separately for now.
2025-11-16 17:59:46 -05:00
Jose Diaz-Gonzalez
01570012c5 fix: correctly call function 2025-11-16 17:58:14 -05:00
Jose Diaz-Gonzalez
acd981d50e fix: ensure the commands can actually be called 2025-11-16 17:57:58 -05:00
Jose Diaz-Gonzalez
3a52c7d0a8 docs: add documentation for label management 2025-11-16 16:49:03 -05:00
Jose Diaz-Gonzalez
003f6a5bd8 fix: remove not working method to change the caddy label-key
This was never actually used by caddy-docker-proxy so its better to just remove it.
2025-11-16 16:45:56 -05:00
Jose Diaz-Gonzalez
edf9653ebf fix: update help output for new subcommands 2025-11-16 16:32:13 -05:00
Jose Diaz-Gonzalez
12cc31427b refactor: split out label subcommands into distinct commands 2025-11-16 16:30:56 -05:00
dragonhunt02
4eafd3b5b7 feat: implement proxy container :label functionality 2025-11-16 02:38:36 -05:00
Jose Diaz-Gonzalez
e93175b37e Merge pull request #7986 from dokku/7325-cnb-buildpacks
Add support for specifying CNB buildpacks via buildpacks command
2025-11-16 02:38:25 -05:00
Jose Diaz-Gonzalez
0828db4bb7 Merge pull request #8101 from dokku/filter-build-args
Filter build docker-options correctly for each builder
2025-11-16 02:07:01 -05:00
Jose Diaz-Gonzalez
4da1fea274 fix: use correct check for BUILDPACK_URL
Also fix lint issue
2025-11-16 01:45:11 -05:00
Jose Diaz-Gonzalez
a9127e3abd fix: correctly handle exiting the argument parsing loop 2025-11-16 01:24:28 -05:00
Jose Diaz-Gonzalez
531bb20519 tests: respect the globally specified default branch when running tests 2025-11-16 01:11:09 -05:00
Jose Diaz-Gonzalez
9411c4ddc1 test: ensure the deploy succeeds and then check the output vs using grep 2025-11-16 01:10:53 -05:00
Jose Diaz-Gonzalez
406a82de29 fix: use call instead of env 2025-11-16 01:10:15 -05:00
Jose Diaz-Gonzalez
9bda9e721f feat: add support for flags with = signs 2025-11-16 00:30:35 -05:00
Jose Diaz-Gonzalez
3b35656ae9 fix: shift the unknown arguments out
They should just be ignored.
2025-11-16 00:26:53 -05:00
Jose Diaz-Gonzalez
f1763bdaf5 fix: correct lint issue 2025-11-15 23:36:01 -05:00
Jose Diaz-Gonzalez
397c8f6d15 docs: add note on removal of nixpacks no-cache property 2025-11-15 23:31:00 -05:00
Jose Diaz-Gonzalez
364eac374d refactor: remove support for the railpack no-cache property
This replicates the docker-options functionality.
2025-11-15 23:30:24 -05:00
Jose Diaz-Gonzalez
93cf9cc118 refactor: remove support for the nixpacks no-cache property
This replicates the docker-options functionality.
2025-11-15 23:30:15 -05:00
Jose Diaz-Gonzalez
50b2836e52 refactor: remove support for DOKKU_DOCKER_BUILD_OPTS
This replicates the docker-options functionality.
2025-11-15 23:28:44 -05:00
Jose Diaz-Gonzalez
9b75cc39b1 refactor: remove support for DOKKU_DOCKERFILE_CACHE_BUILD
This replicates the docker-options functionality.
2025-11-15 23:27:22 -05:00
Jose Diaz-Gonzalez
6325dd6d7b docs: add missing link to 0.36.0 migration guide 2025-11-15 23:21:41 -05:00
Jose Diaz-Gonzalez
2a702175b5 feat: filter out unsupported build arguments with docker build
While this will require future updates if docker  supports new build arguments, it also ensures builds safely consume arguments from other plugins.
2025-11-15 23:17:48 -05:00
Jose Diaz-Gonzalez
210128f5f2 chore: simplify logic for flags without multiple methods of being set 2025-11-15 23:13:57 -05:00
Jose Diaz-Gonzalez
ae8eaa7e63 refactor: filter out procfile first and include --no-cache in DOCKER_ARGS 2025-11-15 22:59:49 -05:00
Jose Diaz-Gonzalez
11c2497b31 feat: filter out unsupported build arguments with railpacks
While this will require future updates if railpacks supports new build arguments, it also ensures builds safely consume arguments from other plugins.
2025-11-15 22:59:12 -05:00
Jose Diaz-Gonzalez
03e90ed2a0 feat: filter out unsupported build arguments with nixpacks
While this will require future updates if nixpacks supports new build arguments, it also ensures builds safely consume arguments from other plugins.
2025-11-15 22:49:48 -05:00
Jose Diaz-Gonzalez
c3d103e46c fix: remove flag that does not make sense in build context 2025-11-15 22:39:27 -05:00
Jose Diaz-Gonzalez
a292e41015 fix: remove flags that do not make sense in build context 2025-11-15 22:33:03 -05:00
Jose Diaz-Gonzalez
58046ea6dc chore: move flags around for better organization 2025-11-15 22:28:53 -05:00
Jose Diaz-Gonzalez
8cb5989220 fix: remove manually set arguments 2025-11-15 22:27:26 -05:00
Jose Diaz-Gonzalez
97714e9c22 feat: filter out unsupported build arguments with pack
While this will require future updates if pack supports new build arguments, it also ensures builds safely consume arguments from other plugins.
2025-11-15 20:28:13 -05:00
Jose Diaz-Gonzalez
43f25c218f Merge pull request #8004 from Tashows/buildpacks-detect
Add buildpacks:detect subcommand
2025-11-15 19:53:37 -05:00
Jose Diaz-Gonzalez
d9e5182399 Merge pull request #7989 from dokku/7988-prevent-overlap
Add support to prevent overlapping execution of cron tasks
2025-11-15 17:45:50 -05:00
Jose Diaz-Gonzalez
9aa471c1fd feat: add support for specifying CNB buildpacks via buildpacks command
Closes #7325
2025-11-15 16:24:22 -05:00
Jose Diaz-Gonzalez
6dbb34ec0b Merge pull request #8100 from othercorey/run-proc-label
Add process-type label for run with procfile cmd
2025-11-15 16:22:48 -05:00
Jose Diaz-Gonzalez
080ed43232 Merge pull request #7982 from dokku/drop-cnb-experimental
Remove references to pack being experimental
2025-11-15 16:20:17 -05:00
Jose Diaz-Gonzalez
3f70728451 feat: implement forbid/replace logic for k3s pods spawned via cron:run 2025-11-15 16:19:23 -05:00
Corey Taylor
00411decf5 Add process-type label for run with procfile cmd 2025-11-15 02:05:58 -06:00
dependabot[bot]
ebfcf24e53 chore(deps): bump traefik from 3.5.4 to 3.6.1 in /plugins/traefik-vhosts
Bumps traefik from 3.5.4 to 3.6.1.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: 3.6.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-14 13:10:02 +00:00
dependabot[bot]
d5b886b2b5 chore(deps): bump timberio/vector in /plugins/logs
Bumps timberio/vector from 0.51.0-debian to 0.51.1-debian.

---
updated-dependencies:
- dependency-name: timberio/vector
  dependency-version: 0.51.1-debian
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-14 13:09:58 +00:00
Jose Diaz-Gonzalez
dc8424d8a5 docs: document the concurrency_policy 2025-11-13 01:58:37 -05:00
Jose Diaz-Gonzalez
c6bd80aca6 tests: update tests 2025-11-13 01:55:32 -05:00
Jose Diaz-Gonzalez
42a92eb654 feat: add support for replace concurrency policy 2025-11-13 01:55:12 -05:00
Jose Diaz-Gonzalez
bacbc6d90d fix: correctly check for running containers when concurrency policy is forbid
We cannot grab a lock as cron:run with --detach will release the lock. Instead, just check if any containers for the specified cron_id are running and exit.
2025-11-13 01:54:56 -05:00
Jose Diaz-Gonzalez
3f8c868ab8 fix: ensure the concurrency policy is propagated when running a cron command directly 2025-11-13 01:53:33 -05:00
Jose Diaz-Gonzalez
c56110b3a7 fix: do not print errors twice 2025-11-13 01:52:08 -05:00
dependabot[bot]
679a399df3 chore(deps): bump pymdown-extensions in /docs/_build
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.16.1 to 10.17.1.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.16.1...10.17.1)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-version: 10.17.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-12 13:07:30 +00:00
dependabot[bot]
eb82d958f4 chore(deps): bump mkdocs-material from 9.6.23 to 9.7.0 in /docs/_build
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.6.23 to 9.7.0.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.23...9.7.0)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-version: 9.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-11 13:07:05 +00:00
Jose Diaz-Gonzalez
3162fa5b9a debug: run sleep for longer and check the inspect output of the cron container 2025-11-10 18:02:46 -05:00
Jose Diaz-Gonzalez
8c2731b328 fix: properly set concurrency policy for golang 2025-11-10 03:11:11 -05:00
Jose Diaz-Gonzalez
c95cb526be fix: correct lint issue 2025-11-10 03:11:11 -05:00
Corey Taylor
983115c827 Add test for cron concurrency policy 2025-11-10 03:11:08 -05:00
Jose Diaz-Gonzalez
b8f32f6ea4 tests: add concurrency_policy to test check 2025-11-10 03:08:03 -05:00
Jose Diaz-Gonzalez
20be426125 feat: add support for locking in docker-local commands 2025-11-10 03:07:33 -05:00
Jose Diaz-Gonzalez
f38bc64119 feat: expose concurrency policy to kubernetes jobs 2025-11-10 03:07:29 -05:00
Jose Diaz-Gonzalez
f1e3c0764c feat: expose the concurrency policy when fetching cron entries
Also add some validation to ensure invalid values are not specified.
2025-11-10 03:06:24 -05:00
Jose Diaz-Gonzalez
d72c183d9e feat: add ability to specify a concurrency policy for crons in the app.json file 2025-11-10 03:03:49 -05:00
Jose Diaz-Gonzalez
f61e6e60f4 Merge pull request #7991 from dokku/7145-cron-maintenance-id
Add ability to pause/restart cron jobs
2025-11-10 03:03:34 -05:00
Jose Diaz-Gonzalez
8ba6ce94fc test: add tests for cron suspend and resume commands 2025-11-10 02:00:14 -05:00
Jose Diaz-Gonzalez
4cc2dc7844 feat: add cron maintenance info to cron:report output 2025-11-10 01:58:02 -05:00
Jose Diaz-Gonzalez
379ada07d9 fix: properly fetch non-maintenance tasks when building crontab file 2025-11-10 01:57:46 -05:00
Jose Diaz-Gonzalez
d49f9b89c2 chore: add commands to cron:help output 2025-11-10 01:57:12 -05:00
Jose Diaz-Gonzalez
3638399726 fix: parse cronID correctly 2025-11-10 01:56:59 -05:00
Jose Diaz-Gonzalez
4929272c87 fix: calculate maintenance property correctly 2025-11-10 01:56:07 -05:00
Jose Diaz-Gonzalez
d9603af08a docs: document cron task suspension 2025-11-10 01:55:44 -05:00
Jose Diaz-Gonzalez
e30b579de5 test: fix issue where teardown was not being called 2025-11-09 23:16:39 -05:00
Jose Diaz-Gonzalez
2aea999326 test: check if uninstalling after deleting apps will cause tests to work again
Not clear why they are suddenly failing, but lets switch this around for now.
2025-11-09 23:16:39 -05:00
Jose Diaz-Gonzalez
00ce3932d0 fix: update the json output 2025-11-09 23:16:38 -05:00
Jose Diaz-Gonzalez
7461b83972 fix: use correct makefile target 2025-11-09 23:16:38 -05:00
Jose Diaz-Gonzalez
426e6b746a chore: standardize on cron task vs any other naming 2025-11-09 23:16:38 -05:00
Jose Diaz-Gonzalez
66a30b0547 refactor: rename cron entry to cron task
This naming better suits what it is we are fetching.
2025-11-09 23:16:38 -05:00
Jose Diaz-Gonzalez
f99e3a6c9c feat: add ability to suspend and resume a cron task by ID
This takes advantage of the properties system and allows users to suspend/resume the task at will.
2025-11-09 23:16:38 -05:00
Jose Diaz-Gonzalez
3c7985cd82 feat: track task vs app maintenance separately
We should know _where_ the maintenance value is applied for the end-user's usage
2025-11-09 23:16:38 -05:00
Jose Diaz-Gonzalez
e42df29a79 feat: allow specifying maintenance mode in the file or not
If the app's cron tasks are set to maintenance mode, then the task is set to maintenance mode regardless.
2025-11-09 23:16:38 -05:00
Jose Diaz-Gonzalez
4a357e9896 fix: properly suspend and resume k8s CronJob objects when executing scheduler-cron-write 2025-11-09 23:16:38 -05:00
Jose Diaz-Gonzalez
c885205b91 refactor: respect the maintenance value of the cron task instead of skipping them
The former method would omit the CronJob objects entirely, meaning a redeploy would be necessary to re-enable them.
2025-11-09 23:16:38 -05:00
Jose Diaz-Gonzalez
1674d02af9 Merge pull request #7956 from dokku/7615-railpack-support
Add a Railpack builder to Dokku
2025-11-09 22:19:10 -05:00
Jose Diaz-Gonzalez
889d237669 chore: combine tests and ensure that pack is selected 2025-11-09 20:32:39 -05:00
Jose Diaz-Gonzalez
68c5407ed4 tests: use already existing add_requirements_txt_cnb function for builder-pack deploys 2025-11-09 20:32:39 -05:00
Jose Diaz-Gonzalez
e62212f810 tests: add missing global setup/teardown calls 2025-11-09 20:32:39 -05:00
Jose Diaz-Gonzalez
551eae0c5b chore: remove references to pack being experimental
It is no longer experimental and is here to stay.
2025-11-09 20:32:39 -05:00
Jose Diaz-Gonzalez
f2abbad5b7 chore: remove unused entrypoint file 2025-11-09 20:21:10 -05:00
Jose Diaz-Gonzalez
e5196a2f03 fix: remove entrypoint to ensure we can pass commands as arrays instead of quoted strings 2025-11-09 20:21:10 -05:00
Jose Diaz-Gonzalez
3c6ace7d68 tests: add global setup/teardown 2025-11-09 20:21:10 -05:00
Jose Diaz-Gonzalez
b4fbf7189e fix: update tests 2025-11-09 20:21:10 -05:00
Jose Diaz-Gonzalez
9af8ec2acc fix: re-add entrypoint
It is broken but we still want something like this...
2025-11-09 20:21:10 -05:00
Jose Diaz-Gonzalez
5e85038d9c feat: add PrintCommand support to all task executors 2025-11-09 20:21:10 -05:00
Jose Diaz-Gonzalez
b9025f6137 fix: drop unnecessary entrypoint 2025-11-09 20:21:10 -05:00
Jose Diaz-Gonzalez
795e4f0f34 fix: cleanup build image in railpack builder
Without this, it is possible to keep an old build image around in the case of failed builds, and due to missing label support, the image will never be cleaned up.
2025-11-09 20:21:10 -05:00
Jose Diaz-Gonzalez
b21b58ed38 fix: remove extra _ 2025-11-09 20:21:10 -05:00
Jose Diaz-Gonzalez
0840976265 fix: add references to BUILDKIT_HOST for setup and fix tests 2025-11-09 20:21:09 -05:00
Jose Diaz-Gonzalez
300a276ed0 chore: bump version in plugin.toml 2025-11-09 20:21:09 -05:00
Jose Diaz-Gonzalez
6b27f424db fix: remove extra space 2025-11-09 20:21:09 -05:00
Jose Diaz-Gonzalez
9f33459266 fix: set BIN_DIR 2025-11-09 20:21:09 -05:00
Jose Diaz-Gonzalez
ee467e6793 fix: inject labels after the image is built by railpack
Railpack doesn't support the --label flag.
2025-11-09 20:21:09 -05:00
Jose Diaz-Gonzalez
cba345025c feat: add a Railpack builder to Dokku
Closes #7615
2025-11-09 20:21:09 -05:00
Jose Diaz-Gonzalez
837c3db042 Merge pull request #8085 from dokku/6846-config-import
Implement config:import command
2025-11-09 20:19:47 -05:00
Dokku Bot
8d4fc1f883 Release 0.36.11
# History

## 0.36.11

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.36.11/bootstrap.sh
sudo DOKKU_TAG=v0.36.11 bash bootstrap.sh
```

### Bug Fixes

- #8084: @josegonzalez Use the correct case for AS in Dockerfile
- #8083: @josegonzalez Use correct variable for tasks
- #8081: @josegonzalez Error out if the appname or app.json is missing when retrieving cron entries

### Refactors

- #8082: @josegonzalez Standardize naming in cron code

### Dependencies

- #8073: @dependabot[bot] chore(deps): bump timberio/vector from 0.50.0-debian to 0.51.0-debian in /plugins/logs
- #8080: @dependabot[bot] chore(deps): bump github.com/containerd/containerd from 1.7.28 to 1.7.29 in /plugins/scheduler-k3s
- #8079: @dependabot[bot] chore(deps): bump golang from 1.25.3 to 1.25.4 in /tests/apps/zombies-dockerfile-tini
- #8075: @dependabot[bot] chore(deps): bump golang from 1.25.3 to 1.25.4 in /tests/apps/go-fail-postdeploy
- #8078: @dependabot[bot] chore(deps): bump golang from 1.25.3 to 1.25.4 in /tests/apps/go-fail-predeploy
- #8077: @dependabot[bot] chore(deps): bump golang from 1.25.3 to 1.25.4 in /tests/apps/zombies-dockerfile-no-tini
- #8076: @dependabot[bot] chore(deps): bump golang from 1.25.3 to 1.25.4 in /tests/apps/gogrpc
- #8072: @dependabot[bot] chore(deps): update markdown requirement from <3.10,>=3.2.1 to >=3.2.1,<3.11 in /docs/_build
- #8074: @dependabot[bot] chore(deps): bump django from 5.2.7 to 5.2.8 in /tests/apps/dockerfile-release
- #8071: @dependabot[bot] chore(deps): bump mkdocs-material from 9.6.22 to 9.6.23 in /docs/_build
- #8068: @dependabot[bot] chore(deps): bump traefik from 3.5.3 to 3.5.4 in /plugins/traefik-vhosts
- #8069: @dependabot[bot] chore(deps): bump github.com/kedacore/keda/v2 from 2.18.0 to 2.18.1 in /plugins/scheduler-k3s
- #8066: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.11.29 to 2.11.30 in /plugins/scheduler-k3s
2025-11-08 06:24:58 +00:00
Jose Diaz-Gonzalez
97f2dc81c7 fix: simplify tests 2025-11-08 01:22:31 -05:00
Jose Diaz-Gonzalez
770d150c7c fix: correct lint issue 2025-11-08 01:17:50 -05:00
Jose Diaz-Gonzalez
e134c314ea feat: implement config:import command
Closes #6846
2025-11-08 01:02:19 -05:00
Jose Diaz-Gonzalez
48fd2b3862 Merge pull request #8084 from dokku/fix-dockerfile-casing
Use the correct case for AS in Dockerfile
2025-11-08 00:16:51 -05:00
Jose Diaz-Gonzalez
b4dd50731a fix: use the correct case for AS in Dockerfile 2025-11-08 00:16:01 -05:00
Jose Diaz-Gonzalez
24d8083fad Merge pull request #8083 from dokku/fix-cron-variable
fix: use correct variable for tasks
2025-11-08 00:11:32 -05:00
Jose Diaz-Gonzalez
593a4c8170 fix: use correct variable for tasks 2025-11-08 00:09:07 -05:00
Jose Diaz-Gonzalez
12dbbda68c Merge pull request #8082 from dokku/rename-cron-code
Standardize naming in cron code
2025-11-07 23:59:18 -05:00
Jose Diaz-Gonzalez
e967ba86b5 Merge pull request #8081 from dokku/guard-app-json-name
Error out if the appname or app.json is missing when retrieving cron entries
2025-11-07 23:59:08 -05:00
Jose Diaz-Gonzalez
791f53ab47 refactor: rename command to task in cron code 2025-11-07 22:41:00 -05:00
Jose Diaz-Gonzalez
82cab643a8 chore: standardize on cron task vs any other naming 2025-11-07 22:36:00 -05:00
Jose Diaz-Gonzalez
b598af67b9 refactor: rename CronCommand to DokkuRunCommand
This better reflects what it does.
2025-11-07 22:32:44 -05:00
Jose Diaz-Gonzalez
3915d25d84 refactor: rename cron entry to cron task
This naming better suits what it is we are fetching.
2025-11-07 22:30:54 -05:00
Jose Diaz-Gonzalez
c52e947df1 fix: error out if the appname or app.json is missing when retrieving cron entries 2025-11-07 22:17:13 -05:00
Jose Diaz-Gonzalez
5614a4c702 Merge pull request #8073 from dokku/dependabot/docker/plugins/logs/timberio/vector-0.51.0-debian
chore(deps): bump timberio/vector from 0.50.0-debian to 0.51.0-debian in /plugins/logs
2025-11-07 21:57:09 -05:00
Jose Diaz-Gonzalez
a2f37699a2 Merge pull request #8080 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/containerd/containerd-1.7.29
chore(deps): bump github.com/containerd/containerd from 1.7.28 to 1.7.29 in /plugins/scheduler-k3s
2025-11-07 16:00:57 -05:00
Jose Diaz-Gonzalez
87a33ae739 Merge pull request #8079 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-tini/golang-1.25.4
chore(deps): bump golang from 1.25.3 to 1.25.4 in /tests/apps/zombies-dockerfile-tini
2025-11-07 16:00:50 -05:00
Jose Diaz-Gonzalez
72cb743a61 Merge pull request #8075 from dokku/dependabot/docker/tests/apps/go-fail-postdeploy/golang-1.25.4
chore(deps): bump golang from 1.25.3 to 1.25.4 in /tests/apps/go-fail-postdeploy
2025-11-07 16:00:36 -05:00
Jose Diaz-Gonzalez
4d812b343b Merge pull request #8078 from dokku/dependabot/docker/tests/apps/go-fail-predeploy/golang-1.25.4
chore(deps): bump golang from 1.25.3 to 1.25.4 in /tests/apps/go-fail-predeploy
2025-11-07 16:00:28 -05:00
Jose Diaz-Gonzalez
7f6fc4081c Merge pull request #8077 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-no-tini/golang-1.25.4
chore(deps): bump golang from 1.25.3 to 1.25.4 in /tests/apps/zombies-dockerfile-no-tini
2025-11-07 16:00:22 -05:00
Jose Diaz-Gonzalez
baaf6b2296 Merge pull request #8076 from dokku/dependabot/docker/tests/apps/gogrpc/golang-1.25.4
chore(deps): bump golang from 1.25.3 to 1.25.4 in /tests/apps/gogrpc
2025-11-07 16:00:15 -05:00
dependabot[bot]
f88c427a41 chore(deps): bump github.com/containerd/containerd
Bumps [github.com/containerd/containerd](https://github.com/containerd/containerd) from 1.7.28 to 1.7.29.
- [Release notes](https://github.com/containerd/containerd/releases)
- [Changelog](https://github.com/containerd/containerd/blob/main/RELEASES.md)
- [Commits](https://github.com/containerd/containerd/compare/v1.7.28...v1.7.29)

---
updated-dependencies:
- dependency-name: github.com/containerd/containerd
  dependency-version: 1.7.29
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-06 15:25:56 +00:00
dependabot[bot]
34985adb43 chore(deps): bump golang in /tests/apps/zombies-dockerfile-tini
Bumps golang from 1.25.3 to 1.25.4.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-06 13:05:20 +00:00
dependabot[bot]
6757759b15 chore(deps): bump golang in /tests/apps/go-fail-predeploy
Bumps golang from 1.25.3 to 1.25.4.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-06 13:05:19 +00:00
dependabot[bot]
d3687cf7f4 chore(deps): bump golang in /tests/apps/zombies-dockerfile-no-tini
Bumps golang from 1.25.3 to 1.25.4.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-06 13:05:17 +00:00
dependabot[bot]
47bf471698 chore(deps): bump golang from 1.25.3 to 1.25.4 in /tests/apps/gogrpc
Bumps golang from 1.25.3 to 1.25.4.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-06 13:05:17 +00:00
dependabot[bot]
78f1794373 chore(deps): bump golang in /tests/apps/go-fail-postdeploy
Bumps golang from 1.25.3 to 1.25.4.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-06 13:05:16 +00:00
Jose Diaz-Gonzalez
4f5fa3294c Merge pull request #8072 from dokku/dependabot/pip/docs/_build/markdown-gte-3.2.1-and-lt-3.11
chore(deps): update markdown requirement from <3.10,>=3.2.1 to >=3.2.1,<3.11 in /docs/_build
2025-11-05 17:49:39 -05:00
Jose Diaz-Gonzalez
c571049714 Merge pull request #8074 from dokku/dependabot/pip/tests/apps/dockerfile-release/django-5.2.8
chore(deps): bump django from 5.2.7 to 5.2.8 in /tests/apps/dockerfile-release
2025-11-05 17:39:28 -05:00
dependabot[bot]
8202bd37d4 chore(deps): bump django in /tests/apps/dockerfile-release
Bumps [django](https://github.com/django/django) from 5.2.7 to 5.2.8.
- [Commits](https://github.com/django/django/compare/5.2.7...5.2.8)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 5.2.8
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-05 20:21:30 +00:00
dependabot[bot]
f4b946e32d chore(deps): bump timberio/vector in /plugins/logs
Bumps timberio/vector from 0.50.0-debian to 0.51.0-debian.

---
updated-dependencies:
- dependency-name: timberio/vector
  dependency-version: 0.51.0-debian
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-05 13:10:51 +00:00
dependabot[bot]
ff1acd09f5 chore(deps): update markdown requirement in /docs/_build
Updates the requirements on [markdown](https://github.com/Python-Markdown/markdown) to permit the latest version.
- [Release notes](https://github.com/Python-Markdown/markdown/releases)
- [Changelog](https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md)
- [Commits](https://github.com/Python-Markdown/markdown/compare/3.2.1...3.10.0)

---
updated-dependencies:
- dependency-name: markdown
  dependency-version: '3.10'
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-04 13:06:53 +00:00
Jose Diaz-Gonzalez
b95cc79a42 Merge pull request #8071 from dokku/dependabot/pip/docs/_build/mkdocs-material-9.6.23
chore(deps): bump mkdocs-material from 9.6.22 to 9.6.23 in /docs/_build
2025-11-03 13:44:47 -05:00
dependabot[bot]
7e68b65103 chore(deps): bump mkdocs-material from 9.6.22 to 9.6.23 in /docs/_build
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.6.22 to 9.6.23.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.22...9.6.23)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-version: 9.6.23
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-03 13:13:06 +00:00
Jose Diaz-Gonzalez
55c8a58686 Merge pull request #8068 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-3.5.4
chore(deps): bump traefik from 3.5.3 to 3.5.4 in /plugins/traefik-vhosts
2025-10-30 21:44:44 -04:00
Jose Diaz-Gonzalez
43a5be6ece Merge pull request #8069 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/kedacore/keda/v2-2.18.1
chore(deps): bump github.com/kedacore/keda/v2 from 2.18.0 to 2.18.1 in /plugins/scheduler-k3s
2025-10-30 21:44:34 -04:00
dependabot[bot]
88b1b18494 chore(deps): bump github.com/kedacore/keda/v2 in /plugins/scheduler-k3s
Bumps [github.com/kedacore/keda/v2](https://github.com/kedacore/keda) from 2.18.0 to 2.18.1.
- [Release notes](https://github.com/kedacore/keda/releases)
- [Changelog](https://github.com/kedacore/keda/blob/main/CHANGELOG.md)
- [Commits](https://github.com/kedacore/keda/compare/v2.18.0...v2.18.1)

---
updated-dependencies:
- dependency-name: github.com/kedacore/keda/v2
  dependency-version: 2.18.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-30 13:31:23 +00:00
apple
807271359d 删除插件 2025-10-30 10:45:43 +08:00
apple
479287c3e6 删除mysql 2025-10-30 10:37:23 +08:00
dependabot[bot]
0ea265f832 chore(deps): bump traefik from 3.5.3 to 3.5.4 in /plugins/traefik-vhosts
Bumps traefik from 3.5.3 to 3.5.4.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: 3.5.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-29 13:11:49 +00:00
Jose Diaz-Gonzalez
229fe1d167 Merge pull request #8066 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/traefik/traefik/v2-2.11.30
chore(deps): bump github.com/traefik/traefik/v2 from 2.11.29 to 2.11.30 in /plugins/scheduler-k3s
2025-10-28 16:39:38 -04:00
dependabot[bot]
e88df23fdb chore(deps): bump github.com/traefik/traefik/v2
Bumps [github.com/traefik/traefik/v2](https://github.com/traefik/traefik) from 2.11.29 to 2.11.30.
- [Release notes](https://github.com/traefik/traefik/releases)
- [Changelog](https://github.com/traefik/traefik/blob/v2.11.30/CHANGELOG.md)
- [Commits](https://github.com/traefik/traefik/compare/v2.11.29...v2.11.30)

---
updated-dependencies:
- dependency-name: github.com/traefik/traefik/v2
  dependency-version: 2.11.30
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-28 13:13:09 +00:00
Dokku Bot
f897dc0034 Release 0.36.10
# History

## 0.36.10

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.36.10/bootstrap.sh
sudo DOKKU_TAG=v0.36.10 bash bootstrap.sh
```

### Bug Fixes

- #8063: @othercorey Use -t instead of deprecated --time in stop commands
- #8058: @josegonzalez Ensure the pre-receive hook and URLS files are correct when cloning or renaming apps
- #8059: @josegonzalez Expand variables for release tasks
- #8060: @josegonzalez Use updated http2 directive for setting http2 support

### Documentation

- #8051: @othercorey Fix "its" in Caddy SSL configuration documentation

### Dependencies

- #8065: @dependabot[bot] chore(deps): bump actions/upload-artifact from 4 to 5
- #8064: @dependabot[bot] chore(deps): bump actions/download-artifact from 5 to 6
- #8057: @dependabot[bot] chore(deps): bump node from 24-alpine to 25-alpine in /tests/apps/dockerfile-procfile-bad
- #8056: @dependabot[bot] chore(deps): bump node from 24-alpine to 25-alpine in /tests/apps/dockerfile-app-json-formations
- #8055: @dependabot[bot] chore(deps): bump node from 24-alpine to 25-alpine in /tests/apps/dockerfile-procfile
- #8054: @dependabot[bot] chore(deps): bump node from 24-alpine to 25-alpine in /tests/apps/dockerfile
- #8053: @dependabot[bot] chore(deps): bump node from 24-alpine to 25-alpine in /tests/apps/dockerfile-noexpose
2025-10-27 18:28:20 +00:00
Jose Diaz-Gonzalez
e16979fcdb Merge pull request #8065 from dokku/dependabot/github_actions/actions/upload-artifact-5
chore(deps): bump actions/upload-artifact from 4 to 5
2025-10-27 14:26:40 -04:00
Jose Diaz-Gonzalez
447e716da2 Merge pull request #8063 from othercorey/stop-timeout
Use -t instead of deprecated --time in stop commands
2025-10-27 14:26:30 -04:00
Jose Diaz-Gonzalez
ac77e7ad5c Merge pull request #8064 from dokku/dependabot/github_actions/actions/download-artifact-6
chore(deps): bump actions/download-artifact from 5 to 6
2025-10-27 14:06:52 -04:00
dependabot[bot]
823115b125 chore(deps): bump actions/upload-artifact from 4 to 5
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-27 14:27:06 +00:00
dependabot[bot]
ee600cc376 chore(deps): bump actions/download-artifact from 5 to 6
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-27 13:58:27 +00:00
Jose Diaz-Gonzalez
68a62e9f00 Merge pull request #8058 from dokku/8035-clone-rename-push-fix
Ensure the pre-receive hook and URLS files are correct when cloning or renaming apps
2025-10-27 01:55:34 -04:00
Jose Diaz-Gonzalez
528746cf6c Merge pull request #8059 from dokku/8050-release-expansion
Expand variables for release tasks
2025-10-27 01:55:25 -04:00
apple
809a271859 添加 mysql redis postgres 插件 2025-10-27 13:17:17 +08:00
Jose Diaz-Gonzalez
69096c864e Merge pull request #8060 from dokku/7997-http2-directive
Use updated http2 directive for setting http2 support
2025-10-27 00:21:22 -04:00
Jose Diaz-Gonzalez
0033a52e28 fix: ignore extra strings on the nginx ubuntu version 2025-10-27 00:19:41 -04:00
Jose Diaz-Gonzalez
416222b20a fix: correctly check the git-hook 2025-10-27 00:07:19 -04:00
Jose Diaz-Gonzalez
cb4ac3353e fix: escape the dollar-sign so it gets properly set in the Procfile 2025-10-26 23:45:08 -04:00
Corey Taylor
2362232fe2 Use -t instead of deprecated --time in stop commands 2025-10-25 14:24:35 -05:00
Jose Diaz-Gonzalez
66eff6f15e test: add test for release command 2025-10-25 07:29:12 -04:00
Jose Diaz-Gonzalez
c7c22d8392 fix: use plugin:trigger command to test the procfile-get-command trigger 2025-10-25 07:25:54 -04:00
Jose Diaz-Gonzalez
8afe8d5f13 refactor: use fn-git-create-hook 2025-10-25 07:20:17 -04:00
Jose Diaz-Gonzalez
933a174dfd fix: use updated http2 directive for setting http2 support
Closes #7997
2025-10-19 23:51:17 -04:00
Jose Diaz-Gonzalez
9d711cbb44 fix: expand variables for release tasks
Procfile commands need to be expanded with actual environment variables as procfile-util will otherwise empty them out. This doesn't happen for app.json scripts as they are never expanded until the docker container gets created.

Closes #8050
2025-10-19 23:33:12 -04:00
Jose Diaz-Gonzalez
efd25cfb45 fix: ensure the pre-receive hook and URLS files are correct when cloning or renaming apps
Closes #8035
2025-10-19 22:20:49 -04:00
Jose Diaz-Gonzalez
959c93b95b Merge pull request #8057 from dokku/dependabot/docker/tests/apps/dockerfile-procfile-bad/node-25-alpine
chore(deps): bump node from 24-alpine to 25-alpine in /tests/apps/dockerfile-procfile-bad
2025-10-17 20:41:16 -04:00
Jose Diaz-Gonzalez
de428a814c Merge pull request #8056 from dokku/dependabot/docker/tests/apps/dockerfile-app-json-formations/node-25-alpine
chore(deps): bump node from 24-alpine to 25-alpine in /tests/apps/dockerfile-app-json-formations
2025-10-17 20:41:09 -04:00
Jose Diaz-Gonzalez
69934f7caf Merge pull request #8055 from dokku/dependabot/docker/tests/apps/dockerfile-procfile/node-25-alpine
chore(deps): bump node from 24-alpine to 25-alpine in /tests/apps/dockerfile-procfile
2025-10-17 20:41:03 -04:00
Jose Diaz-Gonzalez
c5cf82d96b Merge pull request #8054 from dokku/dependabot/docker/tests/apps/dockerfile/node-25-alpine
chore(deps): bump node from 24-alpine to 25-alpine in /tests/apps/dockerfile
2025-10-17 20:40:40 -04:00
Jose Diaz-Gonzalez
29c8afeb35 Merge pull request #8053 from dokku/dependabot/docker/tests/apps/dockerfile-noexpose/node-25-alpine
chore(deps): bump node from 24-alpine to 25-alpine in /tests/apps/dockerfile-noexpose
2025-10-17 20:40:30 -04:00
Tasos Maschalidis
ca03ea72f5 Remove unnecessary re-assignment of workDir variable 2025-10-17 19:21:49 +03:00
Tasos Maschalidis
f40bcc37aa Bump dependency version for herokuish 2025-10-17 19:21:45 +03:00
dependabot[bot]
3aca35df88 chore(deps): bump node in /tests/apps/dockerfile-procfile-bad
Bumps node from 24-alpine to 25-alpine.

---
updated-dependencies:
- dependency-name: node
  dependency-version: 25-alpine
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-17 13:06:43 +00:00
dependabot[bot]
50b59cba7f chore(deps): bump node in /tests/apps/dockerfile-app-json-formations
Bumps node from 24-alpine to 25-alpine.

---
updated-dependencies:
- dependency-name: node
  dependency-version: 25-alpine
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-17 13:06:31 +00:00
dependabot[bot]
a5875f4326 chore(deps): bump node in /tests/apps/dockerfile-procfile
Bumps node from 24-alpine to 25-alpine.

---
updated-dependencies:
- dependency-name: node
  dependency-version: 25-alpine
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-17 13:06:21 +00:00
dependabot[bot]
74899b580d chore(deps): bump node in /tests/apps/dockerfile
Bumps node from 24-alpine to 25-alpine.

---
updated-dependencies:
- dependency-name: node
  dependency-version: 25-alpine
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-17 13:05:50 +00:00
dependabot[bot]
44918d22ab chore(deps): bump node in /tests/apps/dockerfile-noexpose
Bumps node from 24-alpine to 25-alpine.

---
updated-dependencies:
- dependency-name: node
  dependency-version: 25-alpine
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-17 13:05:47 +00:00
Jose Diaz-Gonzalez
57b9f19ba9 Merge pull request #8051 from othercorey/patch-1
Fix "its" in Caddy SSL configuration documentation
2025-10-17 00:55:23 -04:00
othercorey
1d3276a1d7 Fix "its" in Caddy SSL configuration documentation 2025-10-16 23:37:37 -05:00
Dokku Bot
a7a4098a89 Release 0.36.9
# History

## 0.36.9

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.36.9/bootstrap.sh
sudo DOKKU_TAG=v0.36.9 bash bootstrap.sh
```

### Bug Fixes

- #8032: @josegonzalez Set correct labels for tests/apps/dockerfile-release pip updates

### New Features

- #8047: @josegonzalez Add ability to disable letsencrypt for a given application or globally

### Dependencies

- #8049: @dependabot[bot] chore(deps): bump github.com/cert-manager/cert-manager from 1.19.0 to 1.19.1 in /plugins/scheduler-k3s
- #8048: @dependabot[bot] chore(deps): bump mkdocs-material from 9.6.21 to 9.6.22 in /docs/_build
- #8042: @dependabot[bot] chore(deps): bump django from 5.1.13 to 5.2.7 in /tests/apps/dockerfile-release
- #8043: @dependabot[bot] chore(deps): bump whitenoise from 6.2.0 to 6.11.0 in /tests/apps/dockerfile-release
- #8044: @dependabot[bot] chore(deps): bump djangorestframework from 3.15.2 to 3.16.1 in /tests/apps/dockerfile-release
- #8045: @dependabot[bot] chore(deps): bump psycopg2-binary from 2.9.5 to 2.9.11 in /tests/apps/dockerfile-release
- #8046: @dependabot[bot] chore(deps): bump dj-database-url from 1.0.0 to 3.0.1 in /tests/apps/dockerfile-release
- #8041: @dependabot[bot] chore(deps): bump golang from 1.25.2 to 1.25.3 in /tests/apps/gogrpc
- #8040: @dependabot[bot] chore(deps): bump golang from 1.25.2 to 1.25.3 in /tests/apps/go-fail-predeploy
- #8039: @dependabot[bot] chore(deps): bump golang from 1.25.2 to 1.25.3 in /tests/apps/zombies-dockerfile-no-tini
- #8037: @dependabot[bot] chore(deps): bump golang from 1.25.2 to 1.25.3 in /tests/apps/go-fail-postdeploy
- #8038: @dependabot[bot] chore(deps): bump golang from 1.25.2 to 1.25.3 in /tests/apps/zombies-dockerfile-tini
- #8036: @dependabot[bot] chore(deps): bump actions/setup-node from 5 to 6
- #8033: @dependabot[bot] chore(deps): bump github.com/gofrs/flock from 0.12.1 to 0.13.0 in /plugins/scheduler-k3s
- #8034: @dependabot[bot] chore(deps): bump github.com/kedacore/keda/v2 from 2.17.1-0.20250708210620-a239d2459a35 to 2.18.0 in /plugins/scheduler-k3s
2025-10-17 03:55:38 +00:00
Jose Diaz-Gonzalez
0119155232 Merge pull request #8047 from dokku/disable-letsencrypt
Add ability to disable letsencrypt for a given application or globally
2025-10-16 23:51:56 -04:00
Jose Diaz-Gonzalez
9a53d9b8cf Merge pull request #8049 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/cert-manager/cert-manager-1.19.1
chore(deps): bump github.com/cert-manager/cert-manager from 1.19.0 to 1.19.1 in /plugins/scheduler-k3s
2025-10-16 23:08:38 -04:00
Tasos Maschalidis
65e0fb9037 Detect buildpacks for specific branch (fall back to deploy-branch to be consistent with deployment behavior) 2025-10-16 18:33:47 +03:00
Tasos Maschalidis
e234401178 Cleanup output log in CommandDetect function 2025-10-16 17:27:37 +03:00
Tasos Maschalidis
66894bc0c5 Remove redundant function isBareGitRepo 2025-10-16 17:27:37 +03:00
Tasos Maschalidis
4b0c8b3d59 Refactor CommandDetect function 2025-10-16 17:27:37 +03:00
Tasos Maschalidis
0c79a2c2fc Add detect command in buildpacks helpContent 2025-10-16 17:27:37 +03:00
Tasos Maschalidis
d440b4614d Define and register 'detect' subcommand 2025-10-16 17:27:37 +03:00
Tasos Maschalidis
929b8444e4 Add helper functions isBareGitRepo and checkoutBareGitRepo 2025-10-16 17:27:37 +03:00
dependabot[bot]
85afbe51bc chore(deps): bump github.com/cert-manager/cert-manager
Bumps [github.com/cert-manager/cert-manager](https://github.com/cert-manager/cert-manager) from 1.19.0 to 1.19.1.
- [Release notes](https://github.com/cert-manager/cert-manager/releases)
- [Changelog](https://github.com/cert-manager/cert-manager/blob/master/RELEASE.md)
- [Commits](https://github.com/cert-manager/cert-manager/compare/v1.19.0...v1.19.1)

---
updated-dependencies:
- dependency-name: github.com/cert-manager/cert-manager
  dependency-version: 1.19.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-16 13:13:08 +00:00
apple
a16eae23ce Merge commit 'c7cbebece5c0b03e9777cd8b6228659c340cc6dc' into cn 2025-10-16 16:56:54 +08:00
Jose Diaz-Gonzalez
fc9a0aeefd Merge pull request #8048 from dokku/dependabot/pip/docs/_build/mkdocs-material-9.6.22
chore(deps): bump mkdocs-material from 9.6.21 to 9.6.22 in /docs/_build
2025-10-15 11:49:29 -04:00
Jose Diaz-Gonzalez
3dde9853ca Update docs/deployment/schedulers/k3s.md
Co-authored-by: othercorey <corey.taylor.fl@gmail.com>
2025-10-15 11:14:14 -04:00
dependabot[bot]
107e4e911b chore(deps): bump mkdocs-material from 9.6.21 to 9.6.22 in /docs/_build
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.6.21 to 9.6.22.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.21...9.6.22)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-version: 9.6.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-15 13:07:52 +00:00
Jose Diaz-Gonzalez
5d4378c585 feat: add ability to disable letsencrypt for a given application or globally
If disabled globally, it can be re-enabled on a per-app basis by setting the `letsencrypt-server` property to `production` or `staging`.
2025-10-15 00:19:03 -04:00
Jose Diaz-Gonzalez
f2dad60d7b Merge pull request #8042 from dokku/dependabot/pip/tests/apps/dockerfile-release/django-5.2.7
chore(deps): bump django from 5.1.13 to 5.2.7 in /tests/apps/dockerfile-release
2025-10-14 23:37:34 -04:00
Jose Diaz-Gonzalez
29c80d840e Merge pull request #8043 from dokku/dependabot/pip/tests/apps/dockerfile-release/whitenoise-6.11.0
chore(deps): bump whitenoise from 6.2.0 to 6.11.0 in /tests/apps/dockerfile-release
2025-10-14 23:37:28 -04:00
Jose Diaz-Gonzalez
a4040181fb Merge pull request #8044 from dokku/dependabot/pip/tests/apps/dockerfile-release/djangorestframework-3.16.1
chore(deps): bump djangorestframework from 3.15.2 to 3.16.1 in /tests/apps/dockerfile-release
2025-10-14 23:37:19 -04:00
Jose Diaz-Gonzalez
6151e7ee07 Merge pull request #8045 from dokku/dependabot/pip/tests/apps/dockerfile-release/psycopg2-binary-2.9.11
chore(deps): bump psycopg2-binary from 2.9.5 to 2.9.11 in /tests/apps/dockerfile-release
2025-10-14 23:37:10 -04:00
Jose Diaz-Gonzalez
137a91153e Merge pull request #8046 from dokku/dependabot/pip/tests/apps/dockerfile-release/dj-database-url-3.0.1
chore(deps): bump dj-database-url from 1.0.0 to 3.0.1 in /tests/apps/dockerfile-release
2025-10-14 23:37:04 -04:00
dependabot[bot]
51a81a6161 chore(deps): bump dj-database-url in /tests/apps/dockerfile-release
Bumps [dj-database-url](https://github.com/jazzband/dj-database-url) from 1.0.0 to 3.0.1.
- [Release notes](https://github.com/jazzband/dj-database-url/releases)
- [Changelog](https://github.com/jazzband/dj-database-url/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jazzband/dj-database-url/compare/v1.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: dj-database-url
  dependency-version: 3.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-14 21:24:19 +00:00
dependabot[bot]
143094590a chore(deps): bump psycopg2-binary in /tests/apps/dockerfile-release
Bumps [psycopg2-binary](https://github.com/psycopg/psycopg2) from 2.9.5 to 2.9.11.
- [Changelog](https://github.com/psycopg/psycopg2/blob/master/NEWS)
- [Commits](https://github.com/psycopg/psycopg2/commits/2.9.11)

---
updated-dependencies:
- dependency-name: psycopg2-binary
  dependency-version: 2.9.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-14 21:24:04 +00:00
dependabot[bot]
859791a18e chore(deps): bump djangorestframework in /tests/apps/dockerfile-release
Bumps [djangorestframework](https://github.com/encode/django-rest-framework) from 3.15.2 to 3.16.1.
- [Release notes](https://github.com/encode/django-rest-framework/releases)
- [Commits](https://github.com/encode/django-rest-framework/compare/3.15.2...3.16.1)

---
updated-dependencies:
- dependency-name: djangorestframework
  dependency-version: 3.16.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-14 21:23:51 +00:00
dependabot[bot]
efb024eec1 chore(deps): bump whitenoise in /tests/apps/dockerfile-release
Bumps [whitenoise](https://github.com/evansd/whitenoise) from 6.2.0 to 6.11.0.
- [Changelog](https://github.com/evansd/whitenoise/blob/main/docs/changelog.rst)
- [Commits](https://github.com/evansd/whitenoise/compare/6.2.0...6.11.0)

---
updated-dependencies:
- dependency-name: whitenoise
  dependency-version: 6.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-14 21:23:35 +00:00
dependabot[bot]
4db5d58e6e chore(deps): bump django in /tests/apps/dockerfile-release
Bumps [django](https://github.com/django/django) from 5.1.13 to 5.2.7.
- [Commits](https://github.com/django/django/compare/5.1.13...5.2.7)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 5.2.7
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-14 21:23:22 +00:00
Jose Diaz-Gonzalez
0becf57eb6 Merge pull request #8032 from dokku/josegonzalez-patch-1
Set correct labels for tests/apps/dockerfile-release pip updates
2025-10-14 17:19:46 -04:00
Jose Diaz-Gonzalez
90b71776e3 Merge pull request #8041 from dokku/dependabot/docker/tests/apps/gogrpc/golang-1.25.3
chore(deps): bump golang from 1.25.2 to 1.25.3 in /tests/apps/gogrpc
2025-10-14 17:19:26 -04:00
Jose Diaz-Gonzalez
2f94b45e74 Merge pull request #8040 from dokku/dependabot/docker/tests/apps/go-fail-predeploy/golang-1.25.3
chore(deps): bump golang from 1.25.2 to 1.25.3 in /tests/apps/go-fail-predeploy
2025-10-14 17:19:19 -04:00
Jose Diaz-Gonzalez
d24ff5d017 Merge pull request #8039 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-no-tini/golang-1.25.3
chore(deps): bump golang from 1.25.2 to 1.25.3 in /tests/apps/zombies-dockerfile-no-tini
2025-10-14 17:19:11 -04:00
Jose Diaz-Gonzalez
e89697435a Merge pull request #8037 from dokku/dependabot/docker/tests/apps/go-fail-postdeploy/golang-1.25.3
chore(deps): bump golang from 1.25.2 to 1.25.3 in /tests/apps/go-fail-postdeploy
2025-10-14 17:19:02 -04:00
Jose Diaz-Gonzalez
103315330f Merge pull request #8038 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-tini/golang-1.25.3
chore(deps): bump golang from 1.25.2 to 1.25.3 in /tests/apps/zombies-dockerfile-tini
2025-10-14 17:18:45 -04:00
Jose Diaz-Gonzalez
5b069a99ac Merge pull request #8036 from dokku/dependabot/github_actions/actions/setup-node-6
chore(deps): bump actions/setup-node from 5 to 6
2025-10-14 17:18:40 -04:00
dependabot[bot]
4c1401dccd chore(deps): bump golang from 1.25.2 to 1.25.3 in /tests/apps/gogrpc
Bumps golang from 1.25.2 to 1.25.3.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-14 13:06:02 +00:00
dependabot[bot]
290508fe30 chore(deps): bump golang in /tests/apps/go-fail-predeploy
Bumps golang from 1.25.2 to 1.25.3.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-14 13:05:56 +00:00
dependabot[bot]
68f15894fd chore(deps): bump golang in /tests/apps/zombies-dockerfile-no-tini
Bumps golang from 1.25.2 to 1.25.3.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-14 13:05:35 +00:00
dependabot[bot]
21f7127a6b chore(deps): bump golang in /tests/apps/go-fail-postdeploy
Bumps golang from 1.25.2 to 1.25.3.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-14 13:05:34 +00:00
dependabot[bot]
26deba5906 chore(deps): bump golang in /tests/apps/zombies-dockerfile-tini
Bumps golang from 1.25.2 to 1.25.3.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-14 13:05:34 +00:00
dependabot[bot]
b9c961ecf0 chore(deps): bump actions/setup-node from 5 to 6
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 5 to 6.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-14 13:04:10 +00:00
Jose Diaz-Gonzalez
5246c20036 Merge pull request #8033 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/gofrs/flock-0.13.0
chore(deps): bump github.com/gofrs/flock from 0.12.1 to 0.13.0 in /plugins/scheduler-k3s
2025-10-13 18:15:48 -04:00
Jose Diaz-Gonzalez
60d5c40980 Merge pull request #8034 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/kedacore/keda/v2-2.18.0
chore(deps): bump github.com/kedacore/keda/v2 from 2.17.1-0.20250708210620-a239d2459a35 to 2.18.0 in /plugins/scheduler-k3s
2025-10-13 18:14:51 -04:00
dependabot[bot]
48e120c54c chore(deps): bump github.com/kedacore/keda/v2 in /plugins/scheduler-k3s
Bumps [github.com/kedacore/keda/v2](https://github.com/kedacore/keda) from 2.17.1-0.20250708210620-a239d2459a35 to 2.18.0.
- [Release notes](https://github.com/kedacore/keda/releases)
- [Changelog](https://github.com/kedacore/keda/blob/main/CHANGELOG.md)
- [Commits](https://github.com/kedacore/keda/commits/v2.18.0)

---
updated-dependencies:
- dependency-name: github.com/kedacore/keda/v2
  dependency-version: 2.18.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-13 13:32:40 +00:00
dependabot[bot]
ab7c4098c2 chore(deps): bump github.com/gofrs/flock in /plugins/scheduler-k3s
Bumps [github.com/gofrs/flock](https://github.com/gofrs/flock) from 0.12.1 to 0.13.0.
- [Release notes](https://github.com/gofrs/flock/releases)
- [Commits](https://github.com/gofrs/flock/compare/v0.12.1...v0.13.0)

---
updated-dependencies:
- dependency-name: github.com/gofrs/flock
  dependency-version: 0.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-13 13:32:07 +00:00
Jose Diaz-Gonzalez
74ea2f7c2e fix: set correct labels for tests/apps/dockerfile-release pip updates 2025-10-12 23:53:14 -04:00
Dokku Bot
c7cbebece5 Release 0.36.8
# History

## 0.36.8

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.36.8/bootstrap.sh
sudo DOKKU_TAG=v0.36.8 bash bootstrap.sh
```

### Bug Fixes

- #8031: @josegonzalez Respect the k3s master node version when adding a new worker to the k3s cluster
- #7990: @josegonzalez Correct parsing of the --container-id flag for the enter command

### Documentation

- #8013: @othercorey Change command to add SSH key with sudo
- #7998: @bakatz Remove incorrect documentation about --envfile flag for config:export

### Dependencies

- #8028: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.42.0 to 0.43.0 in /plugins/common
- #8015: @dependabot[bot] chore(deps): bump github.com/cert-manager/cert-manager from 1.18.2 to 1.19.0 in /plugins/scheduler-k3s
- #8029: @dependabot[bot] chore(deps): bump github.com/gofrs/flock from 0.12.1 to 0.13.0 in /plugins/ps
- #8011: @dependabot[bot] chore(deps): bump org.apache.maven.plugins:maven-dependency-plugin from 3.8.1 to 3.9.0 in /tests/apps/java
- #8012: @dependabot[bot] chore(deps): bump click from 8.1.8 to 8.3.0 in /docs/_build
- #8014: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.75.1 to 1.76.0 in /tests/apps/gogrpc
- #8018: @dependabot[bot] chore(deps): bump github/codeql-action from 3 to 4
- #8019: @dependabot[bot] chore(deps): bump golang from 1.25.1 to 1.25.2 in /tests/apps/zombies-dockerfile-no-tini
- #8020: @dependabot[bot] chore(deps): bump golang from 1.25.1 to 1.25.2 in /tests/apps/go-fail-predeploy
- #8021: @dependabot[bot] chore(deps): bump python from 3.13.7-bookworm to 3.14.0-bookworm in /tests/apps/dockerfile-release
- #8022: @dependabot[bot] chore(deps): bump golang from 1.25.1 to 1.25.2 in /tests/apps/gogrpc
- #8024: @dependabot[bot] chore(deps): bump golang from 1.25.1 to 1.25.2 in /tests/apps/zombies-dockerfile-tini
- #8023: @dependabot[bot] chore(deps): bump golang from 1.25.1 to 1.25.2 in /tests/apps/go-fail-postdeploy
- #8025: @dependabot[bot] chore(deps): bump python from 3.13.7-alpine to 3.14.0-alpine in /docs/_build
- #8026: @dependabot[bot] chore(deps): bump github.com/fluxcd/pkg/kustomize from 1.22.0 to 1.23.0 in /plugins/scheduler-k3s
- #8027: @dependabot[bot] chore(deps): bump ruby from 3.4.6 to 3.4.7 in /tests/apps/dockerfile-entrypoint
- #8030: @dependabot[bot] chore(deps): bump rack from 2.2.19 to 2.2.20 in /tests/apps/ruby
- #8016: @dependabot[bot] chore(deps): bump rack from 2.2.18 to 2.2.19 in /tests/apps/ruby
- #8009: @dependabot[bot] chore(deps): bump google.golang.org/protobuf from 1.36.9 to 1.36.10 in /tests/apps/gogrpc
- #7994: @dependabot[bot] chore(deps): bump timberio/vector from 0.49.0-debian to 0.50.0-debian in /plugins/logs
- #8006: @dependabot[bot] chore(deps): bump mkdocs-material from 9.6.20 to 9.6.21 in /docs/_build
- #8003: @dependabot[bot] chore(deps): bump traefik from 3.5.2 to 3.5.3 in /plugins/traefik-vhosts
- #7996: @dependabot[bot] chore(deps): bump pyyaml from 6.0.2 to 6.0.3 in /docs/_build
- #8000: @dependabot[bot] chore(deps): bump markupsafe from 3.0.2 to 3.0.3 in /docs/_build
- #8001: @dependabot[bot] chore(deps): bump beautifulsoup4 from 4.13.5 to 4.14.2 in /docs/_build
- #8002: @dependabot[bot] chore(deps): bump github.com/go-openapi/jsonpointer from 0.22.0 to 0.22.1 in /plugins/scheduler-k3s
- #7995: @dependabot[bot] chore(deps): bump rack from 2.2.17 to 2.2.18 in /tests/apps/ruby
- #7992: @dependabot[bot] chore(deps): bump hadolint/hadolint-action from 3.2.0 to 3.3.0
- #7993: @dependabot[bot] chore(deps): bump pyparsing from 3.2.4 to 3.2.5 in /docs/_build
- #7987: @dependabot[bot] chore(deps): bump ruby from 3.4.5 to 3.4.6 in /tests/apps/dockerfile-entrypoint
- #7983: @dependabot[bot] chore(deps): bump k8s.io/kubernetes from 1.34.0 to 1.34.1 in /plugins/scheduler-k3s
- #7984: @dependabot[bot] chore(deps): bump mkdocs-material from 9.6.19 to 9.6.20 in /docs/_build
- #7985: @dependabot[bot] chore(deps): bump pyparsing from 3.2.3 to 3.2.4 in /docs/_build

### Other

- #8008: @dependabot[bot] chore(deps): bump django from 5.1.12 to 5.1.13 in /tests/apps/dockerfile-release
2025-10-13 03:09:48 +00:00
Jose Diaz-Gonzalez
19eb94d62a Merge pull request #8031 from dokku/pin-k3s-version
Respect the k3s master node version when adding a new worker to the k3s cluster
2025-10-12 21:49:56 -04:00
Jose Diaz-Gonzalez
7797bf4f1b Merge pull request #8028 from dokku/dependabot/go_modules/plugins/common/golang.org/x/crypto-0.43.0
chore(deps): bump golang.org/x/crypto from 0.42.0 to 0.43.0 in /plugins/common
2025-10-12 20:30:15 -04:00
Jose Diaz-Gonzalez
1ffc5a4875 Merge pull request #8015 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/cert-manager/cert-manager-1.19.0
chore(deps): bump github.com/cert-manager/cert-manager from 1.18.2 to 1.19.0 in /plugins/scheduler-k3s
2025-10-12 20:30:08 -04:00
Jose Diaz-Gonzalez
2699f51f76 fix: respect the k3s master node version when adding a new worker to the k3s cluster
Previously, it was possible to have a kubernetes version mismatch on new worker nodes if a newer version of kubernetes was released prior to upgrading the master nodes to that version. This can sometimes cause cluster instability.

This change fetches the lowest node version associated with a master node and then uses that to install k3s on the worker node.
2025-10-12 20:28:11 -04:00
Jose Diaz-Gonzalez
f8c846471f Merge pull request #8029 from dokku/dependabot/go_modules/plugins/ps/github.com/gofrs/flock-0.13.0
chore(deps): bump github.com/gofrs/flock from 0.12.1 to 0.13.0 in /plugins/ps
2025-10-12 17:52:09 -04:00
Jose Diaz-Gonzalez
17b9b83d86 chore: bump go modules and run go mod tidy 2025-10-12 17:48:02 -04:00
dependabot[bot]
dab661abe1 chore(deps): bump golang.org/x/crypto in /plugins/common
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.42.0 to 0.43.0.
- [Commits](https://github.com/golang/crypto/compare/v0.42.0...v0.43.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.43.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-12 17:47:40 -04:00
dependabot[bot]
e80755aad0 chore(deps): bump github.com/cert-manager/cert-manager
Bumps [github.com/cert-manager/cert-manager](https://github.com/cert-manager/cert-manager) from 1.18.2 to 1.19.0.
- [Release notes](https://github.com/cert-manager/cert-manager/releases)
- [Changelog](https://github.com/cert-manager/cert-manager/blob/master/RELEASE.md)
- [Commits](https://github.com/cert-manager/cert-manager/compare/v1.18.2...v1.19.0)

---
updated-dependencies:
- dependency-name: github.com/cert-manager/cert-manager
  dependency-version: 1.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-12 21:44:37 +00:00
Jose Diaz-Gonzalez
c69e51f433 Merge pull request #8011 from dokku/dependabot/maven/tests/apps/java/org.apache.maven.plugins-maven-dependency-plugin-3.9.0
chore(deps): bump org.apache.maven.plugins:maven-dependency-plugin from 3.8.1 to 3.9.0 in /tests/apps/java
2025-10-12 17:43:16 -04:00
Jose Diaz-Gonzalez
a3d4b45754 Merge pull request #8012 from dokku/dependabot/pip/docs/_build/click-8.3.0
chore(deps): bump click from 8.1.8 to 8.3.0 in /docs/_build
2025-10-12 17:43:11 -04:00
Jose Diaz-Gonzalez
f4f708b9ab Merge pull request #8013 from othercorey/patch-1
Change command to add SSH key with sudo
2025-10-12 17:43:05 -04:00
Jose Diaz-Gonzalez
baa066d8ad Merge pull request #8014 from dokku/dependabot/go_modules/tests/apps/gogrpc/google.golang.org/grpc-1.76.0
chore(deps): bump google.golang.org/grpc from 1.75.1 to 1.76.0 in /tests/apps/gogrpc
2025-10-12 17:42:46 -04:00
Jose Diaz-Gonzalez
8467fee7d9 Merge pull request #8018 from dokku/dependabot/github_actions/github/codeql-action-4
chore(deps): bump github/codeql-action from 3 to 4
2025-10-12 17:42:30 -04:00
Jose Diaz-Gonzalez
b3659f8629 Merge pull request #8019 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-no-tini/golang-1.25.2
chore(deps): bump golang from 1.25.1 to 1.25.2 in /tests/apps/zombies-dockerfile-no-tini
2025-10-12 17:42:22 -04:00
Jose Diaz-Gonzalez
42e7f35c3a Merge pull request #8020 from dokku/dependabot/docker/tests/apps/go-fail-predeploy/golang-1.25.2
chore(deps): bump golang from 1.25.1 to 1.25.2 in /tests/apps/go-fail-predeploy
2025-10-12 17:42:16 -04:00
Jose Diaz-Gonzalez
3cbf46212e Merge pull request #8021 from dokku/dependabot/docker/tests/apps/dockerfile-release/python-3.14.0-bookworm
chore(deps): bump python from 3.13.7-bookworm to 3.14.0-bookworm in /tests/apps/dockerfile-release
2025-10-12 17:42:10 -04:00
Jose Diaz-Gonzalez
2e5e07cd51 Merge pull request #8022 from dokku/dependabot/docker/tests/apps/gogrpc/golang-1.25.2
chore(deps): bump golang from 1.25.1 to 1.25.2 in /tests/apps/gogrpc
2025-10-12 17:42:04 -04:00
Jose Diaz-Gonzalez
d6afc2313c Merge pull request #8024 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-tini/golang-1.25.2
chore(deps): bump golang from 1.25.1 to 1.25.2 in /tests/apps/zombies-dockerfile-tini
2025-10-12 17:41:58 -04:00
Jose Diaz-Gonzalez
ce384fb0c4 Merge pull request #8023 from dokku/dependabot/docker/tests/apps/go-fail-postdeploy/golang-1.25.2
chore(deps): bump golang from 1.25.1 to 1.25.2 in /tests/apps/go-fail-postdeploy
2025-10-12 17:41:45 -04:00
Jose Diaz-Gonzalez
b6dae3e64d Merge pull request #8025 from dokku/dependabot/docker/docs/_build/python-3.14.0-alpine
chore(deps): bump python from 3.13.7-alpine to 3.14.0-alpine in /docs/_build
2025-10-12 17:41:35 -04:00
Jose Diaz-Gonzalez
477cc89485 Merge pull request #8026 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/fluxcd/pkg/kustomize-1.23.0
chore(deps): bump github.com/fluxcd/pkg/kustomize from 1.22.0 to 1.23.0 in /plugins/scheduler-k3s
2025-10-12 17:41:29 -04:00
Jose Diaz-Gonzalez
25069e909a Merge pull request #8027 from dokku/dependabot/docker/tests/apps/dockerfile-entrypoint/ruby-3.4.7
chore(deps): bump ruby from 3.4.6 to 3.4.7 in /tests/apps/dockerfile-entrypoint
2025-10-12 17:41:23 -04:00
Jose Diaz-Gonzalez
9ebeaf32a5 Merge pull request #8030 from dokku/dependabot/bundler/tests/apps/ruby/rack-2.2.20
chore(deps): bump rack from 2.2.19 to 2.2.20 in /tests/apps/ruby
2025-10-12 17:21:46 -04:00
apple
46b20246db 添加 ssl 插件 2025-10-11 17:50:48 +08:00
dependabot[bot]
9839f5c7dd chore(deps): bump rack from 2.2.19 to 2.2.20 in /tests/apps/ruby
Bumps [rack](https://github.com/rack/rack) from 2.2.19 to 2.2.20.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v2.2.19...v2.2.20)

---
updated-dependencies:
- dependency-name: rack
  dependency-version: 2.2.20
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-10 19:10:02 +00:00
dependabot[bot]
e8bc402f76 chore(deps): bump github.com/gofrs/flock in /plugins/ps
Bumps [github.com/gofrs/flock](https://github.com/gofrs/flock) from 0.12.1 to 0.13.0.
- [Release notes](https://github.com/gofrs/flock/releases)
- [Commits](https://github.com/gofrs/flock/compare/v0.12.1...v0.13.0)

---
updated-dependencies:
- dependency-name: github.com/gofrs/flock
  dependency-version: 0.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-10 13:06:24 +00:00
dependabot[bot]
462a913c01 chore(deps): bump ruby in /tests/apps/dockerfile-entrypoint
Bumps ruby from 3.4.6 to 3.4.7.

---
updated-dependencies:
- dependency-name: ruby
  dependency-version: 3.4.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-09 13:06:31 +00:00
apple
6f31504a29 修改docker 安装方式 2025-10-09 13:11:15 +08:00
apple
f0e2fd35bd 忽略 wget ssl 检查 2025-10-09 11:50:32 +08:00
apple
69eee39904 Merge branch 'master' into cn
# Conflicts:
#	common.mk
#	contrib/dependencies.json
2025-10-09 11:40:06 +08:00
dependabot[bot]
5acb9eebde chore(deps): bump github.com/fluxcd/pkg/kustomize
Bumps [github.com/fluxcd/pkg/kustomize](https://github.com/fluxcd/pkg) from 1.22.0 to 1.23.0.
- [Commits](https://github.com/fluxcd/pkg/compare/apis/meta/v1.22.0...kustomize/v1.23.0)

---
updated-dependencies:
- dependency-name: github.com/fluxcd/pkg/kustomize
  dependency-version: 1.23.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-08 13:11:39 +00:00
dependabot[bot]
b84bae6422 chore(deps): bump python in /docs/_build
Bumps python from 3.13.7-alpine to 3.14.0-alpine.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.14.0-alpine
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-08 13:05:24 +00:00
dependabot[bot]
369e675d89 chore(deps): bump golang in /tests/apps/zombies-dockerfile-tini
Bumps golang from 1.25.1 to 1.25.2.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-08 13:05:22 +00:00
dependabot[bot]
74e1014c78 chore(deps): bump golang in /tests/apps/go-fail-postdeploy
Bumps golang from 1.25.1 to 1.25.2.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-08 13:05:22 +00:00
dependabot[bot]
55429ce474 chore(deps): bump golang from 1.25.1 to 1.25.2 in /tests/apps/gogrpc
Bumps golang from 1.25.1 to 1.25.2.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-08 13:05:21 +00:00
dependabot[bot]
b4450e6994 chore(deps): bump python in /tests/apps/dockerfile-release
Bumps python from 3.13.7-bookworm to 3.14.0-bookworm.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.14.0-bookworm
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-08 13:05:19 +00:00
dependabot[bot]
6d99130f67 chore(deps): bump golang in /tests/apps/go-fail-predeploy
Bumps golang from 1.25.1 to 1.25.2.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-08 13:05:17 +00:00
dependabot[bot]
a6bb96b119 chore(deps): bump golang in /tests/apps/zombies-dockerfile-no-tini
Bumps golang from 1.25.1 to 1.25.2.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-08 13:05:14 +00:00
dependabot[bot]
34a58a638c chore(deps): bump github/codeql-action from 3 to 4
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3 to 4.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-08 13:04:04 +00:00
Jose Diaz-Gonzalez
0092c28e74 Merge pull request #8016 from dokku/dependabot/bundler/tests/apps/ruby/rack-2.2.19
chore(deps): bump rack from 2.2.18 to 2.2.19 in /tests/apps/ruby
2025-10-07 19:37:25 -04:00
dependabot[bot]
51f3a3c1e3 chore(deps): bump rack from 2.2.18 to 2.2.19 in /tests/apps/ruby
Bumps [rack](https://github.com/rack/rack) from 2.2.18 to 2.2.19.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v2.2.18...v2.2.19)

---
updated-dependencies:
- dependency-name: rack
  dependency-version: 2.2.19
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-07 20:02:58 +00:00
dependabot[bot]
5d8a61628f chore(deps): bump google.golang.org/grpc in /tests/apps/gogrpc
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.75.1 to 1.76.0.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.75.1...v1.76.0)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.76.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-07 13:02:14 +00:00
othercorey
4fd889ffa5 Change command to add SSH key with sudo 2025-10-07 03:10:13 -05:00
dependabot[bot]
c987311921 chore(deps): bump click from 8.1.8 to 8.3.0 in /docs/_build
Bumps [click](https://github.com/pallets/click) from 8.1.8 to 8.3.0.
- [Release notes](https://github.com/pallets/click/releases)
- [Changelog](https://github.com/pallets/click/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/click/compare/8.1.8...8.3.0)

---
updated-dependencies:
- dependency-name: click
  dependency-version: 8.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-06 13:32:02 +00:00
dependabot[bot]
40afedd485 chore(deps): bump org.apache.maven.plugins:maven-dependency-plugin
Bumps [org.apache.maven.plugins:maven-dependency-plugin](https://github.com/apache/maven-dependency-plugin) from 3.8.1 to 3.9.0.
- [Release notes](https://github.com/apache/maven-dependency-plugin/releases)
- [Commits](https://github.com/apache/maven-dependency-plugin/compare/maven-dependency-plugin-3.8.1...maven-dependency-plugin-3.9.0)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-dependency-plugin
  dependency-version: 3.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-03 13:01:52 +00:00
Jose Diaz-Gonzalez
b9c6fcdaa7 Merge pull request #8009 from dokku/dependabot/go_modules/tests/apps/gogrpc/google.golang.org/protobuf-1.36.10
chore(deps): bump google.golang.org/protobuf from 1.36.9 to 1.36.10 in /tests/apps/gogrpc
2025-10-02 14:42:11 -04:00
Jose Diaz-Gonzalez
058d09977c Merge pull request #8008 from dokku/dependabot/pip/tests/apps/dockerfile-release/django-5.1.13
chore(deps): bump django from 5.1.12 to 5.1.13 in /tests/apps/dockerfile-release
2025-10-02 14:40:58 -04:00
dependabot[bot]
5f43e85d33 chore(deps): bump google.golang.org/protobuf in /tests/apps/gogrpc
Bumps google.golang.org/protobuf from 1.36.9 to 1.36.10.

---
updated-dependencies:
- dependency-name: google.golang.org/protobuf
  dependency-version: 1.36.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-02 13:01:59 +00:00
dependabot[bot]
78ccf6c857 chore(deps): bump django in /tests/apps/dockerfile-release
Bumps [django](https://github.com/django/django) from 5.1.12 to 5.1.13.
- [Commits](https://github.com/django/django/compare/5.1.12...5.1.13)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 5.1.13
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-01 22:38:37 +00:00
Jose Diaz-Gonzalez
daac4c5554 Merge pull request #7994 from dokku/dependabot/docker/plugins/logs/timberio/vector-0.50.0-debian
chore(deps): bump timberio/vector from 0.49.0-debian to 0.50.0-debian in /plugins/logs
2025-10-01 15:25:33 -04:00
Jose Diaz-Gonzalez
a7d59c2cce Merge pull request #8006 from dokku/dependabot/pip/docs/_build/mkdocs-material-9.6.21
chore(deps): bump mkdocs-material from 9.6.20 to 9.6.21 in /docs/_build
2025-10-01 15:22:20 -04:00
dependabot[bot]
9acfcd93fe chore(deps): bump mkdocs-material from 9.6.20 to 9.6.21 in /docs/_build
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.6.20 to 9.6.21.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.20...9.6.21)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-version: 9.6.21
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-01 13:09:33 +00:00
Jose Diaz-Gonzalez
5064058581 Merge pull request #8003 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-3.5.3
chore(deps): bump traefik from 3.5.2 to 3.5.3 in /plugins/traefik-vhosts
2025-09-30 14:07:35 -04:00
dependabot[bot]
183f2ca50c chore(deps): bump traefik from 3.5.2 to 3.5.3 in /plugins/traefik-vhosts
Bumps traefik from 3.5.2 to 3.5.3.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: 3.5.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-30 00:12:28 +00:00
Jose Diaz-Gonzalez
0861c033b1 Merge pull request #7996 from dokku/dependabot/pip/docs/_build/pyyaml-6.0.3
chore(deps): bump pyyaml from 6.0.2 to 6.0.3 in /docs/_build
2025-09-29 19:23:45 -04:00
Jose Diaz-Gonzalez
f6e4951762 Merge pull request #8000 from dokku/dependabot/pip/docs/_build/markupsafe-3.0.3
chore(deps): bump markupsafe from 3.0.2 to 3.0.3 in /docs/_build
2025-09-29 19:22:25 -04:00
Jose Diaz-Gonzalez
faffbbb374 Merge pull request #8001 from dokku/dependabot/pip/docs/_build/beautifulsoup4-4.14.2
chore(deps): bump beautifulsoup4 from 4.13.5 to 4.14.2 in /docs/_build
2025-09-29 19:21:26 -04:00
Jose Diaz-Gonzalez
4aaa84020c Merge pull request #8002 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/go-openapi/jsonpointer-0.22.1
chore(deps): bump github.com/go-openapi/jsonpointer from 0.22.0 to 0.22.1 in /plugins/scheduler-k3s
2025-09-29 19:21:19 -04:00
dependabot[bot]
39c75c6867 chore(deps): bump github.com/go-openapi/jsonpointer
Bumps [github.com/go-openapi/jsonpointer](https://github.com/go-openapi/jsonpointer) from 0.22.0 to 0.22.1.
- [Commits](https://github.com/go-openapi/jsonpointer/compare/v0.22.0...v0.22.1)

---
updated-dependencies:
- dependency-name: github.com/go-openapi/jsonpointer
  dependency-version: 0.22.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-29 18:19:45 +00:00
dependabot[bot]
250560ac0a chore(deps): bump beautifulsoup4 from 4.13.5 to 4.14.2 in /docs/_build
Bumps [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) from 4.13.5 to 4.14.2.

---
updated-dependencies:
- dependency-name: beautifulsoup4
  dependency-version: 4.14.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-29 17:58:50 +00:00
dependabot[bot]
963d5b8781 chore(deps): bump markupsafe from 3.0.2 to 3.0.3 in /docs/_build
Bumps [markupsafe](https://github.com/pallets/markupsafe) from 3.0.2 to 3.0.3.
- [Release notes](https://github.com/pallets/markupsafe/releases)
- [Changelog](https://github.com/pallets/markupsafe/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/markupsafe/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: markupsafe
  dependency-version: 3.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-29 17:30:46 +00:00
Jose Diaz-Gonzalez
d38f84be02 Merge pull request #7998 from bakatz/patch-1
Remove incorrect documentation about --envfile flag for config:export
2025-09-29 02:08:52 -04:00
Ben Katz
12d7cde3d9 Remove incorrect documentation about --envfile flag for config:export 2025-09-26 11:33:03 -04:00
dependabot[bot]
76634676a9 chore(deps): bump pyyaml from 6.0.2 to 6.0.3 in /docs/_build
Bumps [pyyaml](https://github.com/yaml/pyyaml) from 6.0.2 to 6.0.3.
- [Release notes](https://github.com/yaml/pyyaml/releases)
- [Changelog](https://github.com/yaml/pyyaml/blob/6.0.3/CHANGES)
- [Commits](https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3)

---
updated-dependencies:
- dependency-name: pyyaml
  dependency-version: 6.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-26 13:07:44 +00:00
Jose Diaz-Gonzalez
3b87b5655f Merge pull request #7995 from dokku/dependabot/bundler/tests/apps/ruby/rack-2.2.18
chore(deps): bump rack from 2.2.17 to 2.2.18 in /tests/apps/ruby
2025-09-25 15:15:46 -04:00
dependabot[bot]
6f6b620707 chore(deps): bump rack from 2.2.17 to 2.2.18 in /tests/apps/ruby
Bumps [rack](https://github.com/rack/rack) from 2.2.17 to 2.2.18.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v2.2.17...v2.2.18)

---
updated-dependencies:
- dependency-name: rack
  dependency-version: 2.2.18
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-25 17:33:09 +00:00
dependabot[bot]
ae943b5d73 chore(deps): bump timberio/vector in /plugins/logs
Bumps timberio/vector from 0.49.0-debian to 0.50.0-debian.

---
updated-dependencies:
- dependency-name: timberio/vector
  dependency-version: 0.50.0-debian
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-24 13:11:20 +00:00
Jose Diaz-Gonzalez
1d2723cb8a Merge pull request #7992 from dokku/dependabot/github_actions/hadolint/hadolint-action-3.3.0
chore(deps): bump hadolint/hadolint-action from 3.2.0 to 3.3.0
2025-09-22 21:19:26 -04:00
Jose Diaz-Gonzalez
92f17786f9 Merge pull request #7993 from dokku/dependabot/pip/docs/_build/pyparsing-3.2.5
chore(deps): bump pyparsing from 3.2.4 to 3.2.5 in /docs/_build
2025-09-22 21:19:19 -04:00
dependabot[bot]
f69feef8a1 chore(deps): bump pyparsing from 3.2.4 to 3.2.5 in /docs/_build
Bumps [pyparsing](https://github.com/pyparsing/pyparsing) from 3.2.4 to 3.2.5.
- [Release notes](https://github.com/pyparsing/pyparsing/releases)
- [Changelog](https://github.com/pyparsing/pyparsing/blob/master/CHANGES)
- [Commits](https://github.com/pyparsing/pyparsing/compare/3.2.4...3.2.5)

---
updated-dependencies:
- dependency-name: pyparsing
  dependency-version: 3.2.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-22 13:07:43 +00:00
dependabot[bot]
9f33623e49 chore(deps): bump hadolint/hadolint-action from 3.2.0 to 3.3.0
Bumps [hadolint/hadolint-action](https://github.com/hadolint/hadolint-action) from 3.2.0 to 3.3.0.
- [Release notes](https://github.com/hadolint/hadolint-action/releases)
- [Changelog](https://github.com/hadolint/hadolint-action/blob/master/.releaserc)
- [Commits](3fc49fb50d...2332a7b74a)

---
updated-dependencies:
- dependency-name: hadolint/hadolint-action
  dependency-version: 3.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-22 13:04:36 +00:00
Jose Diaz-Gonzalez
dc6c791b69 Merge pull request #7990 from dokku/correct-enter-parsing 2025-09-21 21:52:25 -04:00
Jose Diaz-Gonzalez
c7a16fec87 fix: correct parsing of the --container-id flag for the enter command 2025-09-21 19:17:17 -04:00
Jose Diaz-Gonzalez
920604039b Merge pull request #7987 from dokku/dependabot/docker/tests/apps/dockerfile-entrypoint/ruby-3.4.6
chore(deps): bump ruby from 3.4.5 to 3.4.6 in /tests/apps/dockerfile-entrypoint
2025-09-17 17:15:57 -04:00
dependabot[bot]
f26ba58593 chore(deps): bump ruby in /tests/apps/dockerfile-entrypoint
Bumps ruby from 3.4.5 to 3.4.6.

---
updated-dependencies:
- dependency-name: ruby
  dependency-version: 3.4.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-17 13:06:02 +00:00
Jose Diaz-Gonzalez
591aed5ad5 Merge pull request #7983 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/kubernetes-1.34.1
chore(deps): bump k8s.io/kubernetes from 1.34.0 to 1.34.1 in /plugins/scheduler-k3s
2025-09-15 13:31:22 -04:00
Jose Diaz-Gonzalez
8c93275023 Merge pull request #7984 from dokku/dependabot/pip/docs/_build/mkdocs-material-9.6.20
chore(deps): bump mkdocs-material from 9.6.19 to 9.6.20 in /docs/_build
2025-09-15 13:31:09 -04:00
dependabot[bot]
ee8712c05d chore(deps): bump mkdocs-material from 9.6.19 to 9.6.20 in /docs/_build
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.6.19 to 9.6.20.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.19...9.6.20)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-version: 9.6.20
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-15 17:29:17 +00:00
Jose Diaz-Gonzalez
9ae48607ce Merge pull request #7985 from dokku/dependabot/pip/docs/_build/pyparsing-3.2.4
chore(deps): bump pyparsing from 3.2.3 to 3.2.4 in /docs/_build
2025-09-15 13:25:36 -04:00
dependabot[bot]
61ab420896 chore(deps): bump pyparsing from 3.2.3 to 3.2.4 in /docs/_build
Bumps [pyparsing](https://github.com/pyparsing/pyparsing) from 3.2.3 to 3.2.4.
- [Release notes](https://github.com/pyparsing/pyparsing/releases)
- [Changelog](https://github.com/pyparsing/pyparsing/blob/master/CHANGES)
- [Commits](https://github.com/pyparsing/pyparsing/compare/3.2.3...3.2.4)

---
updated-dependencies:
- dependency-name: pyparsing
  dependency-version: 3.2.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-15 15:10:05 +00:00
dependabot[bot]
23d5354e8b chore(deps): bump k8s.io/kubernetes in /plugins/scheduler-k3s
Bumps [k8s.io/kubernetes](https://github.com/kubernetes/kubernetes) from 1.34.0 to 1.34.1.
- [Release notes](https://github.com/kubernetes/kubernetes/releases)
- [Commits](https://github.com/kubernetes/kubernetes/compare/v1.34.0...v1.34.1)

---
updated-dependencies:
- dependency-name: k8s.io/kubernetes
  dependency-version: 1.34.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-15 13:28:58 +00:00
Dokku Bot
0a79f05ada Release 0.36.7
# History

## 0.36.7

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.36.7/bootstrap.sh
sudo DOKKU_TAG=v0.36.7 bash bootstrap.sh
```

### Bug Fixes

- #7981: @josegonzalez Only install software-properties-common on Ubuntu and older Debian installations
- #7979: @josegonzalez Skip invalid apps when listing applications
- #7977: @kminek Remove server_tokens directive from main nginx config if present (com…
- #7974: @josegonzalez Ensure lsb_release is available on debian systems

### New Features

- #7978: @josegonzalez Add ability to list global cron tasks
- #7975: @josegonzalez Create SecurityContext for k3s scheduler from docker-options

### Dependencies

- #7972: @dependabot[bot] chore(deps): bump k8s.io/kubectl from 0.34.0 to 0.34.1 in /plugins/scheduler-k3s
- #7973: @dependabot[bot] chore(deps): bump helm.sh/helm/v3 from 3.18.6 to 3.19.0 in /plugins/scheduler-k3s
- #7971: @dependabot[bot] chore(deps): bump k8s.io/client-go from 0.34.0 to 0.34.1 in /plugins/scheduler-k3s
- #7970: @dependabot[bot] chore(deps): bump k8s.io/api from 0.34.0 to 0.34.1 in /plugins/scheduler-k3s
- #7966: @dependabot[bot] chore(deps): bump github.com/fluxcd/pkg/kustomize from 1.19.0 to 1.22.0 in /plugins/scheduler-k3s
- #7963: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.75.0 to 1.75.1 in /tests/apps/gogrpc
- #7964: @dependabot[bot] chore(deps): bump traefik from 3.5.1 to 3.5.2 in /plugins/traefik-vhosts
- #7965: @dependabot[bot] chore(deps): bump k8s.io/apimachinery from 0.34.0 to 0.34.1 in /plugins/scheduler-k3s
- #7961: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.41.0 to 0.42.0 in /plugins/common
- #7960: @dependabot[bot] chore(deps): bump google.golang.org/protobuf from 1.36.8 to 1.36.9 in /tests/apps/gogrpc

### Other

- #7968: @josegonzalez chore: bump herokuish version from 0.11.0 to 0.11.3
- #7962: @dependabot[bot] chore(deps): bump django from 5.1.10 to 5.1.12 in /tests/apps/dockerfile-release
2025-09-15 01:15:50 +00:00
Jose Diaz-Gonzalez
eb18a565ae Merge pull request #7981 from dokku/7980-software-properties-common
fix: only install software-properties-common on Ubuntu and older Debian installations
2025-09-14 20:46:41 -04:00
Jose Diaz-Gonzalez
3e52ea9ec6 fix: only install software-properties-common on Ubuntu and older Debian installations
Closes #7980
2025-09-14 20:43:44 -04:00
Jose Diaz-Gonzalez
438c395970 Merge pull request #7979 from dokku/7959-invalid-apps 2025-09-14 06:34:52 -04:00
Jose Diaz-Gonzalez
5f6258989e Merge pull request #7978 from dokku/7732-cron-list-global 2025-09-14 06:34:30 -04:00
Jose Diaz-Gonzalez
1c6927b25e fix: directly write deployed property
The previous method ended up validating the app name when checking if the app was deployed or not, which isn't necessary as that should only be performed at the command-level.
2025-09-14 05:08:23 -04:00
Jose Diaz-Gonzalez
7e748a1cf3 fix: do not list folders in Dokku root that start with an upper-case character
These were never valid app names, so we can avoid listing them altogether as they aren't Dokku apps.
2025-09-14 05:04:27 -04:00
Jose Diaz-Gonzalez
7adeee7086 feat: add ability to list global cron tasks
Closes #7732
2025-09-14 04:38:19 -04:00
Jose Diaz-Gonzalez
8b9b658951 Merge pull request #7977 from kminek/7976-duplicated-server-tokens
Remove server_tokens directive from main nginx config if present (com…
2025-09-14 04:11:54 -04:00
Jose Diaz-Gonzalez
408417fe2e Merge pull request #7975 from dokku/7664-k3s-security-context
Create SecurityContext for k3s scheduler from docker-options
2025-09-14 03:10:52 -04:00
Jose Diaz-Gonzalez
ef798780c6 tests: add test for security context conversions 2025-09-14 02:19:25 -04:00
Grzesiek W
9cfa4acf57 Remove server_tokens directive from main nginx config if present (commented or uncommented) 2025-09-13 20:16:30 +02:00
Jose Diaz-Gonzalez
bcfff18db9 fix: correctly split flags 2025-09-12 19:19:17 -04:00
Jose Diaz-Gonzalez
a1b6d05568 fix: correct template 2025-09-12 19:19:04 -04:00
Jose Diaz-Gonzalez
f90a4061c0 feat: create SecurityContext for k3s scheduler from docker-options
Closes #7664
2025-09-12 18:09:33 -04:00
Jose Diaz-Gonzalez
fa0c9663cf Merge pull request #7974 from dokku/josegonzalez-patch-1
fix: ensure lsb_release is available on debian systems
2025-09-12 17:08:10 -04:00
Jose Diaz-Gonzalez
0fd4f24f1e fix: ensure lsb_release is available on debian systems 2025-09-12 16:19:45 -04:00
Jose Diaz-Gonzalez
4637b95a1b Merge pull request #7972 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/kubectl-0.34.1
chore(deps): bump k8s.io/kubectl from 0.34.0 to 0.34.1 in /plugins/scheduler-k3s
2025-09-12 14:53:46 -04:00
Jose Diaz-Gonzalez
6b12524db0 Merge pull request #7973 from dokku/dependabot/go_modules/plugins/scheduler-k3s/helm.sh/helm/v3-3.19.0
chore(deps): bump helm.sh/helm/v3 from 3.18.6 to 3.19.0 in /plugins/scheduler-k3s
2025-09-12 14:53:38 -04:00
dependabot[bot]
1252651f38 chore(deps): bump helm.sh/helm/v3 in /plugins/scheduler-k3s
Bumps [helm.sh/helm/v3](https://github.com/helm/helm) from 3.18.6 to 3.19.0.
- [Release notes](https://github.com/helm/helm/releases)
- [Commits](https://github.com/helm/helm/compare/v3.18.6...v3.19.0)

---
updated-dependencies:
- dependency-name: helm.sh/helm/v3
  dependency-version: 3.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-12 13:12:33 +00:00
dependabot[bot]
bd0ee3c073 chore(deps): bump k8s.io/kubectl in /plugins/scheduler-k3s
Bumps [k8s.io/kubectl](https://github.com/kubernetes/kubectl) from 0.34.0 to 0.34.1.
- [Commits](https://github.com/kubernetes/kubectl/compare/v0.34.0...v0.34.1)

---
updated-dependencies:
- dependency-name: k8s.io/kubectl
  dependency-version: 0.34.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-12 13:12:24 +00:00
Jose Diaz-Gonzalez
db9c8efc2e Merge pull request #7971 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/client-go-0.34.1
chore(deps): bump k8s.io/client-go from 0.34.0 to 0.34.1 in /plugins/scheduler-k3s
2025-09-11 17:11:53 -04:00
Jose Diaz-Gonzalez
4a60663af8 Merge pull request #7970 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/api-0.34.1
chore(deps): bump k8s.io/api from 0.34.0 to 0.34.1 in /plugins/scheduler-k3s
2025-09-11 17:11:44 -04:00
dependabot[bot]
7d1dd9fa80 chore(deps): bump k8s.io/client-go in /plugins/scheduler-k3s
Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.34.0 to 0.34.1.
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kubernetes/client-go/compare/v0.34.0...v0.34.1)

---
updated-dependencies:
- dependency-name: k8s.io/client-go
  dependency-version: 0.34.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-11 13:13:16 +00:00
dependabot[bot]
0713f7a217 chore(deps): bump k8s.io/api in /plugins/scheduler-k3s
Bumps [k8s.io/api](https://github.com/kubernetes/api) from 0.34.0 to 0.34.1.
- [Commits](https://github.com/kubernetes/api/compare/v0.34.0...v0.34.1)

---
updated-dependencies:
- dependency-name: k8s.io/api
  dependency-version: 0.34.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-11 13:13:09 +00:00
Jose Diaz-Gonzalez
966fd809f2 Merge pull request #7966 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/fluxcd/pkg/kustomize-1.22.0
chore(deps): bump github.com/fluxcd/pkg/kustomize from 1.19.0 to 1.22.0 in /plugins/scheduler-k3s
2025-09-11 01:29:42 -04:00
Jose Diaz-Gonzalez
a1749d26e0 chore: bump go version to 1.25.1 and run go mod tidy 2025-09-10 22:46:09 -04:00
dependabot[bot]
bbd919a730 chore(deps): bump github.com/fluxcd/pkg/kustomize
Bumps [github.com/fluxcd/pkg/kustomize](https://github.com/fluxcd/pkg) from 1.19.0 to 1.22.0.
- [Commits](https://github.com/fluxcd/pkg/compare/apis/meta/v1.19.0...kustomize/v1.22.0)

---
updated-dependencies:
- dependency-name: github.com/fluxcd/pkg/kustomize
  dependency-version: 1.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-10 22:46:09 -04:00
Jose Diaz-Gonzalez
ba89420142 Merge pull request #7968 from dokku/update-herokuish
chore: bump herokuish version from 0.11.0 to 0.11.3
2025-09-10 22:45:51 -04:00
Jose Diaz-Gonzalez
837be622bc chore: bump herokuish version from 0.11.0 to 0.11.3 2025-09-10 22:03:04 -04:00
Jose Diaz-Gonzalez
8beb2cdcbf Merge pull request #7963 from dokku/dependabot/go_modules/tests/apps/gogrpc/google.golang.org/grpc-1.75.1
chore(deps): bump google.golang.org/grpc from 1.75.0 to 1.75.1 in /tests/apps/gogrpc
2025-09-10 13:23:17 -04:00
Jose Diaz-Gonzalez
75dabd9347 Merge pull request #7964 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-3.5.2
chore(deps): bump traefik from 3.5.1 to 3.5.2 in /plugins/traefik-vhosts
2025-09-10 13:23:09 -04:00
Jose Diaz-Gonzalez
51aaa9fcac Merge pull request #7965 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/apimachinery-0.34.1
chore(deps): bump k8s.io/apimachinery from 0.34.0 to 0.34.1 in /plugins/scheduler-k3s
2025-09-10 13:22:58 -04:00
dependabot[bot]
ae85dff049 chore(deps): bump k8s.io/apimachinery in /plugins/scheduler-k3s
Bumps [k8s.io/apimachinery](https://github.com/kubernetes/apimachinery) from 0.34.0 to 0.34.1.
- [Commits](https://github.com/kubernetes/apimachinery/compare/v0.34.0...v0.34.1)

---
updated-dependencies:
- dependency-name: k8s.io/apimachinery
  dependency-version: 0.34.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-10 13:10:54 +00:00
dependabot[bot]
de0f25fdea chore(deps): bump traefik from 3.5.1 to 3.5.2 in /plugins/traefik-vhosts
Bumps traefik from 3.5.1 to 3.5.2.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: 3.5.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-10 13:10:30 +00:00
dependabot[bot]
ceaaadc105 chore(deps): bump google.golang.org/grpc in /tests/apps/gogrpc
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.75.0 to 1.75.1.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.75.0...v1.75.1)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.75.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-10 13:02:22 +00:00
Jose Diaz-Gonzalez
bd7266c85c Merge pull request #7962 from dokku/dependabot/pip/tests/apps/dockerfile-release/django-5.1.12
chore(deps): bump django from 5.1.10 to 5.1.12 in /tests/apps/dockerfile-release
2025-09-09 21:27:52 -04:00
Jose Diaz-Gonzalez
c539fabebc Merge pull request #7961 from dokku/dependabot/go_modules/plugins/common/golang.org/x/crypto-0.42.0
chore(deps): bump golang.org/x/crypto from 0.41.0 to 0.42.0 in /plugins/common
2025-09-09 20:54:15 -04:00
dependabot[bot]
20be1a458d chore(deps): bump django in /tests/apps/dockerfile-release
Bumps [django](https://github.com/django/django) from 5.1.10 to 5.1.12.
- [Commits](https://github.com/django/django/compare/5.1.10...5.1.12)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 5.1.12
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-09 22:39:25 +00:00
Jose Diaz-Gonzalez
3ab5aff4c3 chore: bump go modules and run go mod tidy 2025-09-09 16:32:21 -04:00
Jose Diaz-Gonzalez
8fdc33b11a Merge pull request #7960 from dokku/dependabot/go_modules/tests/apps/gogrpc/google.golang.org/protobuf-1.36.9
chore(deps): bump google.golang.org/protobuf from 1.36.8 to 1.36.9 in /tests/apps/gogrpc
2025-09-09 16:31:46 -04:00
dependabot[bot]
b440d6ea79 chore(deps): bump golang.org/x/crypto in /plugins/common
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.41.0 to 0.42.0.
- [Commits](https://github.com/golang/crypto/compare/v0.41.0...v0.42.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.42.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-09 13:07:23 +00:00
dependabot[bot]
191aae5ff5 chore(deps): bump google.golang.org/protobuf in /tests/apps/gogrpc
Bumps google.golang.org/protobuf from 1.36.8 to 1.36.9.

---
updated-dependencies:
- dependency-name: google.golang.org/protobuf
  dependency-version: 1.36.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-09 13:02:04 +00:00
Dokku Bot
0cecd6061a Release 0.36.6
# History

## 0.36.6

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.36.6/bootstrap.sh
sudo DOKKU_TAG=v0.36.6 bash bootstrap.sh
```

### Bug Fixes

- #7955: @josegonzalez Ensure that the nixpacks bin is installed in /usr/bin/nixpacks in Docker image
- #7953: @josegonzalez Set correct label for nixpacks builder
- #7942: @josegonzalez Ensure the code is copied over to the new app on clone or rebase
- #7941: @josegonzalez Do not generate an https url when there is no SSL certificate
- #7940: @josegonzalez Silence openresty extract warnings during the deploy process

### Tests

- #7954: @josegonzalez Respect DOKKU_DOMAIN when deploying in tests
- #7943: @josegonzalez Remove unused test app
- #7939: @josegonzalez Add test for ensuring run commands work with pack-based builds

### Dependencies

- #7958: @dependabot[bot] chore(deps): bump helm.sh/helm/v3 from 3.18.5 to 3.18.6 in /plugins/scheduler-k3s
- #7952: @dependabot[bot] chore(deps): bump golang.org/x/sync from 0.16.0 to 0.17.0 in /plugins/common
- #7951: @dependabot[bot] chore(deps): bump golang from 1.25.0 to 1.25.1 in /tests/apps/gogrpc
- #7950: @dependabot[bot] chore(deps): bump golang from 1.25.0 to 1.25.1 in /tests/apps/go-fail-postdeploy
- #7949: @dependabot[bot] chore(deps): bump golang from 1.25.0 to 1.25.1 in /tests/apps/zombies-dockerfile-no-tini
- #7947: @dependabot[bot] chore(deps): bump golang from 1.25.0 to 1.25.1 in /tests/apps/zombies-dockerfile-tini
- #7945: @dependabot[bot] chore(deps): bump golang from 1.25.0 to 1.25.1 in /tests/apps/go-fail-predeploy
- #7946: @dependabot[bot] chore(deps): bump mkdocs-material from 9.6.18 to 9.6.19 in /docs/_build
2025-09-08 21:28:23 +00:00
Jose Diaz-Gonzalez
f9fda93ba9 Merge pull request #7955 from dokku/nixpacks-bin
Ensure that the nixpacks bin is installed in /usr/bin/nixpacks in Docker image
2025-09-08 15:46:11 -04:00
Jose Diaz-Gonzalez
e0464c6525 Merge pull request #7958 from dokku/dependabot/go_modules/plugins/scheduler-k3s/helm.sh/helm/v3-3.18.6
chore(deps): bump helm.sh/helm/v3 from 3.18.5 to 3.18.6 in /plugins/scheduler-k3s
2025-09-08 14:31:02 -04:00
Jose Diaz-Gonzalez
0fc7768960 Merge pull request #7952 from dokku/dependabot/go_modules/plugins/common/golang.org/x/sync-0.17.0
chore(deps): bump golang.org/x/sync from 0.16.0 to 0.17.0 in /plugins/common
2025-09-08 14:30:00 -04:00
Jose Diaz-Gonzalez
79ea869aa8 Merge pull request #7954 from dokku/test-remote
Respect DOKKU_DOMAIN when deploying in tests
2025-09-08 14:29:52 -04:00
Jose Diaz-Gonzalez
5631d1eeaf fix: bind BIN_DIR to /usr/bin 2025-09-08 14:29:47 -04:00
dependabot[bot]
f155eae135 chore(deps): bump helm.sh/helm/v3 in /plugins/scheduler-k3s
Bumps [helm.sh/helm/v3](https://github.com/helm/helm) from 3.18.5 to 3.18.6.
- [Release notes](https://github.com/helm/helm/releases)
- [Commits](https://github.com/helm/helm/compare/v3.18.5...v3.18.6)

---
updated-dependencies:
- dependency-name: helm.sh/helm/v3
  dependency-version: 3.18.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 13:17:36 +00:00
Jose Diaz-Gonzalez
704e9fffd1 Merge pull request #7951 from dokku/dependabot/docker/tests/apps/gogrpc/golang-1.25.1
chore(deps): bump golang from 1.25.0 to 1.25.1 in /tests/apps/gogrpc
2025-09-08 04:32:10 -04:00
Jose Diaz-Gonzalez
849eca85ec Merge pull request #7950 from dokku/dependabot/docker/tests/apps/go-fail-postdeploy/golang-1.25.1
chore(deps): bump golang from 1.25.0 to 1.25.1 in /tests/apps/go-fail-postdeploy
2025-09-08 04:32:02 -04:00
Jose Diaz-Gonzalez
b4b4be9282 Merge pull request #7949 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-no-tini/golang-1.25.1
chore(deps): bump golang from 1.25.0 to 1.25.1 in /tests/apps/zombies-dockerfile-no-tini
2025-09-08 04:31:53 -04:00
Jose Diaz-Gonzalez
8a15b9f560 Merge pull request #7947 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-tini/golang-1.25.1
chore(deps): bump golang from 1.25.0 to 1.25.1 in /tests/apps/zombies-dockerfile-tini
2025-09-08 04:31:37 -04:00
Jose Diaz-Gonzalez
54d01b8851 Merge pull request #7945 from dokku/dependabot/docker/tests/apps/go-fail-predeploy/golang-1.25.1
chore(deps): bump golang from 1.25.0 to 1.25.1 in /tests/apps/go-fail-predeploy
2025-09-08 04:31:29 -04:00
Jose Diaz-Gonzalez
e46df8beea Merge pull request #7946 from dokku/dependabot/pip/docs/_build/mkdocs-material-9.6.19
chore(deps): bump mkdocs-material from 9.6.18 to 9.6.19 in /docs/_build
2025-09-08 04:30:18 -04:00
Jose Diaz-Gonzalez
65dbe32e69 chore: bump go modules and run go mod tidy 2025-09-08 04:29:51 -04:00
Jose Diaz-Gonzalez
5efa641d55 fix: ensure that the nixpacks bin is installed in /usr/bin/nixpacks in Docker image 2025-09-08 04:25:33 -04:00
Jose Diaz-Gonzalez
ff4af54920 tests: respect DOKKU_DOMAIN when deploying in tests 2025-09-08 04:24:35 -04:00
Jose Diaz-Gonzalez
4fd1f658a5 Merge pull request #7953 from dokku/nixpacks-label
Set correct label for nixpacks builder
2025-09-08 04:21:37 -04:00
Jose Diaz-Gonzalez
fa4e711d46 fix: set correct label for nixpacks builder 2025-09-08 04:20:50 -04:00
dependabot[bot]
b6c793d637 chore(deps): bump golang.org/x/sync in /plugins/common
Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.16.0 to 0.17.0.
- [Commits](https://github.com/golang/sync/compare/v0.16.0...v0.17.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sync
  dependency-version: 0.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 08:16:55 +00:00
dependabot[bot]
ad8ece9ad3 chore(deps): bump golang from 1.25.0 to 1.25.1 in /tests/apps/gogrpc
Bumps golang from 1.25.0 to 1.25.1.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 08:16:14 +00:00
dependabot[bot]
8fa67ea607 chore(deps): bump golang in /tests/apps/go-fail-postdeploy
Bumps golang from 1.25.0 to 1.25.1.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 08:15:40 +00:00
dependabot[bot]
97080a397a chore(deps): bump golang in /tests/apps/zombies-dockerfile-no-tini
Bumps golang from 1.25.0 to 1.25.1.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 08:15:27 +00:00
dependabot[bot]
4852cb501e chore(deps): bump golang in /tests/apps/zombies-dockerfile-tini
Bumps golang from 1.25.0 to 1.25.1.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 08:14:08 +00:00
dependabot[bot]
b39c1ea6b2 chore(deps): bump mkdocs-material from 9.6.18 to 9.6.19 in /docs/_build
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.6.18 to 9.6.19.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.18...9.6.19)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-version: 9.6.19
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 08:13:52 +00:00
dependabot[bot]
d656c4ce62 chore(deps): bump golang in /tests/apps/go-fail-predeploy
Bumps golang from 1.25.0 to 1.25.1.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 08:13:28 +00:00
Jose Diaz-Gonzalez
b03062a880 Merge pull request #7943 from dokku/drop-disabled-test
Remove unused test app
2025-09-08 03:59:56 -04:00
Jose Diaz-Gonzalez
215104f096 tests: remove unused test app
This was disabled 12 years ago...
2025-09-08 03:59:37 -04:00
Jose Diaz-Gonzalez
85d4a058b8 Merge pull request #7942 from dokku/7706-redeploy-on-clone-and-rename 2025-09-08 03:33:26 -04:00
Jose Diaz-Gonzalez
6952ecd3b3 fix: ignore the VHOST file 2025-09-08 02:09:31 -04:00
Jose Diaz-Gonzalez
63892ed74a fix: ignore the VHOST file 2025-09-08 02:08:33 -04:00
Jose Diaz-Gonzalez
03c25dae55 fix: ensure the code is copied over to the new app on clone or rebase
Closes #7706
2025-09-08 00:19:55 -04:00
Jose Diaz-Gonzalez
1d75e9dbbe Merge pull request #7941 from dokku/7817-https-port-dockerfile
Do not generate an https url when there is no SSL certificate
2025-09-07 23:09:01 -04:00
Jose Diaz-Gonzalez
345ad6e0d0 fix: correct lint issue 2025-09-07 22:15:29 -04:00
Jose Diaz-Gonzalez
bf7e5a7312 tests: add a test for apps that detect https:443:443 port mappings without an ssl cert 2025-09-07 22:06:24 -04:00
Jose Diaz-Gonzalez
7345bda611 fix: properly generate urls for port 443 for non-https schemes 2025-09-07 22:05:47 -04:00
Jose Diaz-Gonzalez
ca32172e1d fix: do not generate https urls when there is no certificate available 2025-09-07 22:04:57 -04:00
Jose Diaz-Gonzalez
aa5c365e93 fix: prefer the scheme specified in the port map 2025-09-07 22:04:20 -04:00
Jose Diaz-Gonzalez
52e4e90819 refactor: change SCHEME argument to DEFAULT_SCHEME to make it more apparent that it is a fallback 2025-09-07 22:03:46 -04:00
Jose Diaz-Gonzalez
f1be90b74b fix: use https scheme for any tcp/443 EXPOSE directive 2025-09-07 22:01:17 -04:00
Jose Diaz-Gonzalez
6e7936a074 Merge pull request #7939 from dokku/7863-run-in-pack
Add test for ensuring run commands work with pack-based builds
2025-09-07 21:07:20 -04:00
Jose Diaz-Gonzalez
8eb0f04eaf Merge pull request #7940 from dokku/7826-silence-warnings
Silence openresty extract warnings during the deploy process
2025-09-07 20:37:16 -04:00
Jose Diaz-Gonzalez
d0fd6ac0a1 fix: silence openresty extract warnings during the deploy process
Closes #7826
2025-09-07 20:35:06 -04:00
Jose Diaz-Gonzalez
90b29ff6e2 tests: add test for ensuring run commands work with pack-based builds
Closes #7863
2025-09-07 20:13:12 -04:00
Dokku Bot
9363f3d865 Release 0.36.5
# History

## 0.36.5

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.36.5/bootstrap.sh
sudo DOKKU_TAG=v0.36.5 bash bootstrap.sh
```

### New Features

- #7937: @josegonzalez Add support for Debian Trixie
2025-09-07 20:32:06 +00:00
Jose Diaz-Gonzalez
a2c2be8f5e Merge pull request #7937 from dokku/7877-trixie-support
Add support for Debian Trixie
2025-09-07 16:30:44 -04:00
Jose Diaz-Gonzalez
b6680e0495 feat: add support for Debian Trixie
Closes #7877
2025-09-07 16:29:31 -04:00
Dokku Bot
11f694e182 Release 0.36.4
# History

## 0.36.4

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.36.4/bootstrap.sh
sudo DOKKU_TAG=v0.36.4 bash bootstrap.sh
```

### Bug Fixes

- #7914: @josegonzalez Fix nginx configuration building in k3s scheduler

### Dependencies

- #7935: @dependabot[bot] chore(deps): update markdown requirement from <3.9,>=3.2.1 to >=3.2.1,<3.10 in /docs/_build
- #7936: @dependabot[bot] chore(deps): bump github.com/go-openapi/jsonpointer from 0.21.2 to 0.22.0 in /plugins/scheduler-k3s
- #7931: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.11.28 to 2.11.29 in /plugins/scheduler-k3s
- #7932: @dependabot[bot] chore(deps): bump actions/setup-python from 5 to 6
- #7933: @dependabot[bot] chore(deps): bump actions/setup-node from 4 to 5
- #7934: @dependabot[bot] chore(deps): bump hadolint/hadolint-action from 3.1.0 to 3.2.0
- #7920: @dependabot[bot] chore(deps): bump github.com/spf13/pflag from 1.0.9 to 1.0.10 in /plugins/common
- #7887: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.38.0 to 1.38.2 in /plugins/common
- #7847: @dependabot[bot] chore(deps): bump timberio/vector from 0.48.0-debian to 0.49.0-debian in /plugins/logs
- #7890: @dependabot[bot] chore(deps): bump k8s.io/kubernetes from 1.33.2 to 1.34.0 in /plugins/scheduler-k3s
- #7881: @dependabot[bot] chore(deps): bump byjg/easy-haproxy from 4.5.0 to 4.6.0 in /plugins/haproxy-vhosts
- #7880: @dependabot[bot] chore(deps): bump beautifulsoup4 from 4.13.4 to 4.13.5 in /docs/_build
- #7888: @dependabot[bot] chore(deps): bump soupsieve from 2.7 to 2.8 in /docs/_build
- #7902: @dependabot[bot] chore(deps): bump github.com/spf13/pflag from 1.0.7 to 1.0.9 in /plugins/common
- #7891: @dependabot[bot] chore(deps): bump k8s.io/kubectl from 0.33.3 to 0.34.0 in /plugins/scheduler-k3s
- #7895: @dependabot[bot] chore(deps): bump traefik from 3.5.0 to 3.5.1 in /plugins/traefik-vhosts
2025-09-05 20:04:26 +00:00
Jose Diaz-Gonzalez
b6d2a7764b Merge pull request #7935 from dokku/dependabot/pip/docs/_build/markdown-gte-3.2.1-and-lt-3.10
chore(deps): update markdown requirement from <3.9,>=3.2.1 to >=3.2.1,<3.10 in /docs/_build
2025-09-05 15:00:26 -04:00
Jose Diaz-Gonzalez
975f3411eb Merge pull request #7936 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/go-openapi/jsonpointer-0.22.0
chore(deps): bump github.com/go-openapi/jsonpointer from 0.21.2 to 0.22.0 in /plugins/scheduler-k3s
2025-09-05 15:00:19 -04:00
dependabot[bot]
d881a897a6 chore(deps): bump github.com/go-openapi/jsonpointer
Bumps [github.com/go-openapi/jsonpointer](https://github.com/go-openapi/jsonpointer) from 0.21.2 to 0.22.0.
- [Commits](https://github.com/go-openapi/jsonpointer/compare/v0.21.2...v0.22.0)

---
updated-dependencies:
- dependency-name: github.com/go-openapi/jsonpointer
  dependency-version: 0.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-05 13:09:42 +00:00
dependabot[bot]
a3570b3ca2 chore(deps): update markdown requirement in /docs/_build
Updates the requirements on [markdown](https://github.com/Python-Markdown/markdown) to permit the latest version.
- [Release notes](https://github.com/Python-Markdown/markdown/releases)
- [Changelog](https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md)
- [Commits](https://github.com/Python-Markdown/markdown/compare/3.2.1...3.9.0)

---
updated-dependencies:
- dependency-name: markdown
  dependency-version: '3.9'
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-05 13:05:56 +00:00
Jose Diaz-Gonzalez
43e70d6bdb Merge pull request #7931 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/traefik/traefik/v2-2.11.29
chore(deps): bump github.com/traefik/traefik/v2 from 2.11.28 to 2.11.29 in /plugins/scheduler-k3s
2025-09-04 14:56:28 -04:00
Jose Diaz-Gonzalez
e7718a11b6 Merge pull request #7932 from dokku/dependabot/github_actions/actions/setup-python-6
chore(deps): bump actions/setup-python from 5 to 6
2025-09-04 14:56:18 -04:00
Jose Diaz-Gonzalez
485bb7a699 Merge pull request #7933 from dokku/dependabot/github_actions/actions/setup-node-5
chore(deps): bump actions/setup-node from 4 to 5
2025-09-04 14:56:07 -04:00
Jose Diaz-Gonzalez
69fde612b5 Merge pull request #7934 from dokku/dependabot/github_actions/hadolint/hadolint-action-3.2.0
chore(deps): bump hadolint/hadolint-action from 3.1.0 to 3.2.0
2025-09-04 14:56:00 -04:00
dependabot[bot]
bfc486743d chore(deps): bump hadolint/hadolint-action from 3.1.0 to 3.2.0
Bumps [hadolint/hadolint-action](https://github.com/hadolint/hadolint-action) from 3.1.0 to 3.2.0.
- [Release notes](https://github.com/hadolint/hadolint-action/releases)
- [Changelog](https://github.com/hadolint/hadolint-action/blob/master/.releaserc)
- [Commits](54c9adbab1...3fc49fb50d)

---
updated-dependencies:
- dependency-name: hadolint/hadolint-action
  dependency-version: 3.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-04 14:36:11 +00:00
dependabot[bot]
a9334bca8a chore(deps): bump actions/setup-node from 4 to 5
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 5.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-04 13:59:54 +00:00
dependabot[bot]
9704d3ef09 chore(deps): bump actions/setup-python from 5 to 6
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5 to 6.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-04 13:59:48 +00:00
dependabot[bot]
781721026e chore(deps): bump github.com/traefik/traefik/v2
Bumps [github.com/traefik/traefik/v2](https://github.com/traefik/traefik) from 2.11.28 to 2.11.29.
- [Release notes](https://github.com/traefik/traefik/releases)
- [Changelog](https://github.com/traefik/traefik/blob/v2.11.29/CHANGELOG.md)
- [Commits](https://github.com/traefik/traefik/compare/v2.11.28...v2.11.29)

---
updated-dependencies:
- dependency-name: github.com/traefik/traefik/v2
  dependency-version: 2.11.29
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-04 09:51:52 +00:00
Jose Diaz-Gonzalez
0d560af740 Merge pull request #7920 from dokku/dependabot/go_modules/plugins/common/github.com/spf13/pflag-1.0.10
chore(deps): bump github.com/spf13/pflag from 1.0.9 to 1.0.10 in /plugins/common
2025-09-04 02:11:28 -04:00
Jose Diaz-Gonzalez
11a3babcee chore: bump go modules and run go mod tidy 2025-09-04 00:03:11 -04:00
Jose Diaz-Gonzalez
dba9793968 Merge pull request #7914 from dokku/k3s-cleanup-ingress-nginx
Fix nginx configuration building in k3s scheduler
2025-09-04 00:02:09 -04:00
dependabot[bot]
2f6c0ed1e6 chore(deps): bump github.com/spf13/pflag in /plugins/common
Bumps [github.com/spf13/pflag](https://github.com/spf13/pflag) from 1.0.9 to 1.0.10.
- [Release notes](https://github.com/spf13/pflag/releases)
- [Commits](https://github.com/spf13/pflag/compare/v1.0.9...v1.0.10)

---
updated-dependencies:
- dependency-name: github.com/spf13/pflag
  dependency-version: 1.0.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-04 02:04:13 +00:00
Jose Diaz-Gonzalez
68529c087a Merge pull request #7887 from dokku/dependabot/go_modules/plugins/common/github.com/onsi/gomega-1.38.2
chore(deps): bump github.com/onsi/gomega from 1.38.0 to 1.38.2 in /plugins/common
2025-09-03 20:42:04 -04:00
Jose Diaz-Gonzalez
ae99f491fa fix: drop x-forwarded- properties from k3s scheduler
These shadow existing values managed by k3s itself, causing issues where the same header is injected with multiple values, which some frameworks do not support as they use the header directly without parsing to construct urls.
2025-09-03 20:38:01 -04:00
Jose Diaz-Gonzalez
9182b272f4 fix: split up proxy-buffers into annotation properties
The values derive from the same nginx source, so they also need a modifier in order to fit into the ingress-nginx scheme.
2025-09-03 20:36:33 -04:00
Jose Diaz-Gonzalez
865063300f feat: allow Critical annotations to be injected into ingresses
Dokku needs this in order to construct certain rules that aren't supported by ingress-nginx annotations.
2025-09-03 20:35:44 -04:00
Jose Diaz-Gonzalez
1e879cf4f7 Merge pull request #7847 from dokku/dependabot/docker/plugins/logs/timberio/vector-0.49.0-debian
chore(deps): bump timberio/vector from 0.48.0-debian to 0.49.0-debian in /plugins/logs
2025-09-03 16:05:43 -04:00
Jose Diaz-Gonzalez
64e457e6db chore: bump go modules and run go mod tidy 2025-09-03 16:00:52 -04:00
dependabot[bot]
0e39bc502b chore(deps): bump github.com/onsi/gomega in /plugins/common
Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.38.0 to 1.38.2.
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/gomega/compare/v1.38.0...v1.38.2)

---
updated-dependencies:
- dependency-name: github.com/onsi/gomega
  dependency-version: 1.38.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-03 16:00:14 -04:00
Jose Diaz-Gonzalez
d22f45885a Merge pull request #7890 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/kubernetes-1.34.0
chore(deps): bump k8s.io/kubernetes from 1.33.2 to 1.34.0 in /plugins/scheduler-k3s
2025-09-03 15:59:14 -04:00
Jose Diaz-Gonzalez
dfc19cc069 Merge pull request #7881 from dokku/dependabot/docker/plugins/haproxy-vhosts/byjg/easy-haproxy-4.6.0
chore(deps): bump byjg/easy-haproxy from 4.5.0 to 4.6.0 in /plugins/haproxy-vhosts
2025-09-03 01:38:31 -04:00
Jose Diaz-Gonzalez
7cd283364d Merge pull request #7880 from dokku/dependabot/pip/docs/_build/beautifulsoup4-4.13.5
chore(deps): bump beautifulsoup4 from 4.13.4 to 4.13.5 in /docs/_build
2025-09-03 01:38:13 -04:00
Jose Diaz-Gonzalez
54edcdb587 Merge pull request #7888 from dokku/dependabot/pip/docs/_build/soupsieve-2.8
chore(deps): bump soupsieve from 2.7 to 2.8 in /docs/_build
2025-09-03 01:37:56 -04:00
Jose Diaz-Gonzalez
c6b5bc07c5 Merge pull request #7902 from dokku/dependabot/go_modules/plugins/common/github.com/spf13/pflag-1.0.9
chore(deps): bump github.com/spf13/pflag from 1.0.7 to 1.0.9 in /plugins/common
2025-09-03 01:37:40 -04:00
dependabot[bot]
53f4ec3e9d chore(deps): bump k8s.io/kubernetes in /plugins/scheduler-k3s
Bumps [k8s.io/kubernetes](https://github.com/kubernetes/kubernetes) from 1.33.2 to 1.34.0.
- [Release notes](https://github.com/kubernetes/kubernetes/releases)
- [Commits](https://github.com/kubernetes/kubernetes/compare/v1.33.2...v1.34.0)

---
updated-dependencies:
- dependency-name: k8s.io/kubernetes
  dependency-version: 1.34.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-03 04:46:23 +00:00
Jose Diaz-Gonzalez
bc8f20837e Merge pull request #7891 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/kubectl-0.34.0
chore(deps): bump k8s.io/kubectl from 0.33.3 to 0.34.0 in /plugins/scheduler-k3s
2025-09-03 00:37:42 -04:00
Jose Diaz-Gonzalez
61c6e276b6 chore: bump go modules and run go mod tidy 2025-09-03 00:24:09 -04:00
Jose Diaz-Gonzalez
25bff83df9 Merge pull request #7895 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-3.5.1
chore(deps): bump traefik from 3.5.0 to 3.5.1 in /plugins/traefik-vhosts
2025-09-03 00:22:27 -04:00
dependabot[bot]
d058712cb3 chore(deps): bump github.com/spf13/pflag in /plugins/common
Bumps [github.com/spf13/pflag](https://github.com/spf13/pflag) from 1.0.7 to 1.0.9.
- [Release notes](https://github.com/spf13/pflag/releases)
- [Commits](https://github.com/spf13/pflag/compare/v1.0.7...v1.0.9)

---
updated-dependencies:
- dependency-name: github.com/spf13/pflag
  dependency-version: 1.0.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-02 00:15:34 +00:00
dependabot[bot]
b876d1f989 chore(deps): bump traefik from 3.5.0 to 3.5.1 in /plugins/traefik-vhosts
Bumps traefik from 3.5.0 to 3.5.1.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: 3.5.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-01 22:49:27 +00:00
dependabot[bot]
d01ed8901d chore(deps): bump k8s.io/kubectl in /plugins/scheduler-k3s
Bumps [k8s.io/kubectl](https://github.com/kubernetes/kubectl) from 0.33.3 to 0.34.0.
- [Commits](https://github.com/kubernetes/kubectl/compare/v0.33.3...v0.34.0)

---
updated-dependencies:
- dependency-name: k8s.io/kubectl
  dependency-version: 0.34.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-28 14:12:44 +00:00
dependabot[bot]
64ff78d22f chore(deps): bump soupsieve from 2.7 to 2.8 in /docs/_build
Bumps [soupsieve](https://github.com/facelessuser/soupsieve) from 2.7 to 2.8.
- [Release notes](https://github.com/facelessuser/soupsieve/releases)
- [Commits](https://github.com/facelessuser/soupsieve/compare/2.7...2.8)

---
updated-dependencies:
- dependency-name: soupsieve
  dependency-version: '2.8'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-28 13:41:32 +00:00
dependabot[bot]
7d2f316745 chore(deps): bump byjg/easy-haproxy in /plugins/haproxy-vhosts
Bumps byjg/easy-haproxy from 4.5.0 to 4.6.0.

---
updated-dependencies:
- dependency-name: byjg/easy-haproxy
  dependency-version: 4.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-26 01:45:02 +00:00
dependabot[bot]
ce7d9a1efd chore(deps): bump beautifulsoup4 from 4.13.4 to 4.13.5 in /docs/_build
Bumps [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) from 4.13.4 to 4.13.5.

---
updated-dependencies:
- dependency-name: beautifulsoup4
  dependency-version: 4.13.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-26 00:56:01 +00:00
Dokku Bot
1fa72e39f6 Release 0.36.3
# History

## 0.36.3

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.36.3/bootstrap.sh
sudo DOKKU_TAG=v0.36.3 bash bootstrap.sh
```

### New Features

- #7878: @josegonzalez Allow specifying base64-encoded values in vector-sink DSN urls

### Dependencies

- #7873: @dependabot[bot] chore(deps): bump github.com/go-openapi/jsonpointer from 0.21.1 to 0.21.2 in /plugins/scheduler-k3s
- #7874: @dependabot[bot] chore(deps): bump k8s.io/api from 0.33.3 to 0.33.4 in /plugins/scheduler-k3s
- #7875: @dependabot[bot] chore(deps): bump mkdocs-material from 9.6.17 to 9.6.18 in /docs/_build
2025-08-23 22:42:15 +00:00
Jose Diaz-Gonzalez
10f6b7d0a1 Merge pull request #7873 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/go-openapi/jsonpointer-0.21.2
chore(deps): bump github.com/go-openapi/jsonpointer from 0.21.1 to 0.21.2 in /plugins/scheduler-k3s
2025-08-23 18:20:10 -04:00
Jose Diaz-Gonzalez
880c9e4ff7 Merge pull request #7874 from dokku/dependabot/go_modules/plugins/scheduler-k3s/k8s.io/api-0.33.4
chore(deps): bump k8s.io/api from 0.33.3 to 0.33.4 in /plugins/scheduler-k3s
2025-08-23 18:20:00 -04:00
Jose Diaz-Gonzalez
8ccab3d57d Merge pull request #7875 from dokku/dependabot/pip/docs/_build/mkdocs-material-9.6.18
chore(deps): bump mkdocs-material from 9.6.17 to 9.6.18 in /docs/_build
2025-08-23 18:19:38 -04:00
Jose Diaz-Gonzalez
68d5b5c986 Merge pull request #7878 from dokku/7758-base64-encoded-vector-values
Allow specifying base64-encoded values in vector-sink DSN urls
2025-08-23 18:19:26 -04:00
Jose Diaz-Gonzalez
3f12ce2e8d refactor: simplify test 2025-08-23 16:15:00 -04:00
Jose Diaz-Gonzalez
fd61fdd2ab fix: ensure the vector values are only set for the vector chart 2025-08-23 16:14:51 -04:00
Jose Diaz-Gonzalez
9c41bed78b feat: allow specifying base64-encoded values in vector-sink DSN urls
This will allow Vector templating to work when using Kubernetes as the scheduler.
2025-08-23 15:46:57 -04:00
dependabot[bot]
13eb377b1d chore(deps): bump mkdocs-material from 9.6.17 to 9.6.18 in /docs/_build
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.6.17 to 9.6.18.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.17...9.6.18)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-version: 9.6.18
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-22 13:58:40 +00:00
dependabot[bot]
b36a7b9764 chore(deps): bump k8s.io/api in /plugins/scheduler-k3s
Bumps [k8s.io/api](https://github.com/kubernetes/api) from 0.33.3 to 0.33.4.
- [Commits](https://github.com/kubernetes/api/compare/v0.33.3...v0.33.4)

---
updated-dependencies:
- dependency-name: k8s.io/api
  dependency-version: 0.33.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-22 13:24:21 +00:00
dependabot[bot]
4c0a3bcedf chore(deps): bump github.com/go-openapi/jsonpointer
Bumps [github.com/go-openapi/jsonpointer](https://github.com/go-openapi/jsonpointer) from 0.21.1 to 0.21.2.
- [Commits](https://github.com/go-openapi/jsonpointer/compare/v0.21.1...v0.21.2)

---
updated-dependencies:
- dependency-name: github.com/go-openapi/jsonpointer
  dependency-version: 0.21.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-22 13:24:15 +00:00
Dokku Bot
d4484d0373 Release 0.36.2
# History

## 0.36.2

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.36.2/bootstrap.sh
sudo DOKKU_TAG=v0.36.2 bash bootstrap.sh
```

### Bug Fixes

- #7872: @josegonzalez Correct issues when scaling non-web processes for the scheduler-k3s plugin

### Refactors

- #7871: @josegonzalez Remove public exposure of DOKKU_APP_TYPE in favor of builder detected property

### Dependencies

- #7868: @dependabot[bot] chore(deps): bump grunt-cli from 1.4.3 to 1.5.0 in /tests/apps/multi
- #7869: @dependabot[bot] chore(deps): bump bower from 1.8.12 to 1.8.14 in /tests/apps/multi
- #7870: @dependabot[bot] chore(deps): bump tmp from 0.2.4 to 0.2.5 in /tests/apps/multi
- #7867: @dependabot[bot] chore(deps): bump grunt from 1.5.3 to 1.6.1 in /tests/apps/multi
- #7866: @dependabot[bot] chore(deps): bump github.com/fluxcd/pkg/kustomize from 1.18.0 to 1.19.0 in /plugins/scheduler-k3s
- #7862: @dependabot[bot] chore(deps): bump google.golang.org/protobuf from 1.36.7 to 1.36.8 in /tests/apps/gogrpc

### Other

- #7864: @josegonzalez chore(deps): add dependabot entries for plugins/scheduler-k3s and tests/apps/multi
2025-08-22 12:03:49 +00:00
dependabot[bot]
2b0f2fc014 chore(deps): bump timberio/vector in /plugins/logs
Bumps timberio/vector from 0.48.0-debian to 0.49.0-debian.

---
updated-dependencies:
- dependency-name: timberio/vector
  dependency-version: 0.49.0-debian
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-22 12:02:52 +00:00
Jose Diaz-Gonzalez
d9c520216a Merge pull request #7868 from dokku/dependabot/npm_and_yarn/tests/apps/multi/grunt-cli-1.5.0 2025-08-22 08:01:33 -04:00
Jose Diaz-Gonzalez
7d5e0868f4 Merge pull request #7869 from dokku/dependabot/npm_and_yarn/tests/apps/multi/bower-1.8.14 2025-08-22 08:01:20 -04:00
Jose Diaz-Gonzalez
86ce579680 Merge pull request #7872 from dokku/fix-scaling-k3s 2025-08-22 08:01:06 -04:00
dependabot[bot]
7104d203bd chore(deps): bump bower from 1.8.12 to 1.8.14 in /tests/apps/multi
Bumps [bower](https://github.com/bower/bower) from 1.8.12 to 1.8.14.
- [Release notes](https://github.com/bower/bower/releases)
- [Changelog](https://github.com/bower/bower/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bower/bower/compare/v1.8.12...1.8.14)

---
updated-dependencies:
- dependency-name: bower
  dependency-version: 1.8.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-22 07:06:45 +00:00
dependabot[bot]
32cd56faa5 chore(deps): bump grunt-cli from 1.4.3 to 1.5.0 in /tests/apps/multi
Bumps [grunt-cli](https://github.com/gruntjs/grunt-cli) from 1.4.3 to 1.5.0.
- [Release notes](https://github.com/gruntjs/grunt-cli/releases)
- [Changelog](https://github.com/gruntjs/grunt-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/gruntjs/grunt-cli/compare/v1.4.3...v1.5.0)

---
updated-dependencies:
- dependency-name: grunt-cli
  dependency-version: 1.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-22 07:06:44 +00:00
Jose Diaz-Gonzalez
360cbcf8b9 Merge pull request #7870 from dokku/dependabot/npm_and_yarn/tests/apps/multi/tmp-0.2.5
chore(deps): bump tmp from 0.2.4 to 0.2.5 in /tests/apps/multi
2025-08-22 03:05:52 -04:00
Jose Diaz-Gonzalez
dd61cf9e8d Merge pull request #7867 from dokku/dependabot/npm_and_yarn/tests/apps/multi/grunt-1.6.1
chore(deps): bump grunt from 1.5.3 to 1.6.1 in /tests/apps/multi
2025-08-22 03:04:45 -04:00
Jose Diaz-Gonzalez
b8e55331e1 Merge pull request #7866 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/fluxcd/pkg/kustomize-1.19.0
chore(deps): bump github.com/fluxcd/pkg/kustomize from 1.18.0 to 1.19.0 in /plugins/scheduler-k3s
2025-08-22 03:04:26 -04:00
Jose Diaz-Gonzalez
0a3f7262a4 chore: move comment around 2025-08-22 02:30:19 -04:00
Jose Diaz-Gonzalez
434a111976 fix: skip Deployment and ScaledObject generation for cron tasks 2025-08-22 02:29:00 -04:00
Jose Diaz-Gonzalez
cfd7b84c5e tests: correct target scope for kustomization 2025-08-22 02:22:43 -04:00
Jose Diaz-Gonzalez
4593547e35 feat: add log message when kustomize is being applied 2025-08-22 02:01:04 -04:00
Jose Diaz-Gonzalez
ef2d014ed6 chore: remove extra debug message 2025-08-22 01:52:58 -04:00
Jose Diaz-Gonzalez
882ca8781b fix: implement scheduler-is-deployed for scheduler-k3s 2025-08-22 01:51:38 -04:00
Jose Diaz-Gonzalez
5737286ac5 Merge pull request #7871 from dokku/remove-dokku-app-type
Remove public exposure of DOKKU_APP_TYPE in favor of builder detected property
2025-08-22 01:26:54 -04:00
Jose Diaz-Gonzalez
390a2254a0 fix: do not skip generating certain templates when non-web processes are encountered 2025-08-22 01:24:53 -04:00
Jose Diaz-Gonzalez
5d5d56c560 refactor: remove public exposure of DOKKU_APP_TYPE in favor of builder detected property
The DOKKU_APP_TYPE has long since ceased to be the correct way to specify the builder for the application. It's only usage has been during the detection phase, specifically to ensure that the herokuish plugin injects the correct docker arguments during the build. As such, it is safe to migrate away to a property in a patch release.

Users that seek to set a specific builder should use 'dokku builder:set $APP selected' instead.

Refs #7863
2025-08-21 23:59:41 -04:00
dependabot[bot]
cfc25bc9da chore(deps): bump tmp from 0.2.4 to 0.2.5 in /tests/apps/multi
Bumps [tmp](https://github.com/raszi/node-tmp) from 0.2.4 to 0.2.5.
- [Changelog](https://github.com/raszi/node-tmp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/raszi/node-tmp/compare/v0.2.4...v0.2.5)

---
updated-dependencies:
- dependency-name: tmp
  dependency-version: 0.2.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-22 01:31:08 +00:00
dependabot[bot]
62099db5fe chore(deps): bump grunt from 1.5.3 to 1.6.1 in /tests/apps/multi
Bumps [grunt](https://github.com/gruntjs/grunt) from 1.5.3 to 1.6.1.
- [Release notes](https://github.com/gruntjs/grunt/releases)
- [Changelog](https://github.com/gruntjs/grunt/blob/main/CHANGELOG)
- [Commits](https://github.com/gruntjs/grunt/compare/v1.5.3...v1.6.1)

---
updated-dependencies:
- dependency-name: grunt
  dependency-version: 1.6.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-22 01:30:50 +00:00
dependabot[bot]
2381069096 chore(deps): bump github.com/fluxcd/pkg/kustomize
Bumps [github.com/fluxcd/pkg/kustomize](https://github.com/fluxcd/pkg) from 1.18.0 to 1.19.0.
- [Commits](https://github.com/fluxcd/pkg/compare/apis/meta/v1.18.0...kustomize/v1.19.0)

---
updated-dependencies:
- dependency-name: github.com/fluxcd/pkg/kustomize
  dependency-version: 1.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-22 01:26:23 +00:00
Jose Diaz-Gonzalez
637221f450 Merge pull request #7862 from dokku/dependabot/go_modules/tests/apps/gogrpc/google.golang.org/protobuf-1.36.8
chore(deps): bump google.golang.org/protobuf from 1.36.7 to 1.36.8 in /tests/apps/gogrpc
2025-08-21 21:24:43 -04:00
Jose Diaz-Gonzalez
7f14bb22b0 Merge pull request #7864 from dokku/dependabot-update
chore(deps): add dependabot entries for plugins/scheduler-k3s and tests/apps/multi
2025-08-21 21:24:30 -04:00
Jose Diaz-Gonzalez
a3b99c5d0e chore(deps): add dependabot entries for plugins/scheduler-k3s and tests/apps/multi 2025-08-21 21:15:17 -04:00
dependabot[bot]
17f71e1269 chore(deps): bump google.golang.org/protobuf in /tests/apps/gogrpc
Bumps google.golang.org/protobuf from 1.36.7 to 1.36.8.

---
updated-dependencies:
- dependency-name: google.golang.org/protobuf
  dependency-version: 1.36.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-21 13:23:28 +00:00
Dokku Bot
f4cf0e15b9 Release 0.36.1
# History

## 0.36.1

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.36.1/bootstrap.sh
sudo DOKKU_TAG=v0.36.1 bash bootstrap.sh
```

### Bug Fixes

- #7846: @josegonzalez Correct issue in parsing escaped plus signs in vector sink values
- #7841: @leksyib14 Fix handling of equals sign in vector sink values
- #7844: @josegonzalez Do not change permissions on config directory symlinks

### Tests

- #7848: @josegonzalez Ensure tests properly fetch data from json output
- #7845: @josegonzalez Use the official github actions arm64 runner

### Dependencies

- #7861: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.74.2 to 1.75.0 in /tests/apps/gogrpc
- #7860: @dependabot[bot] chore(deps): bump flask from 3.1.1 to 3.1.2 in /tests/apps/python-flask
- #7859: @dependabot[bot] chore(deps): bump flask from 3.1.1 to 3.1.2 in /tests/apps/multi
- #7856: @dependabot[bot] chore(deps): bump mkdocs-material from 9.6.16 to 9.6.17 in /docs/_build
- #7857: @dependabot[bot] chore(deps): bump python from 3.13.6-alpine to 3.13.7-alpine in /docs/_build
- #7858: @dependabot[bot] chore(deps): bump python from 3.13.6-bookworm to 3.13.7-bookworm in /tests/apps/dockerfile-release
- #7855: @dependabot[bot] chore(deps): bump org.eclipse.jetty:jetty-servlet from 11.0.25 to 11.0.26 in /tests/apps/java
- #7849: @dependabot[bot] chore(deps): bump golang from 1.24.6 to 1.25.0 in /tests/apps/zombies-dockerfile-tini
- #7850: @dependabot[bot] chore(deps): bump golang from 1.24.6 to 1.25.0 in /tests/apps/go-fail-predeploy
- #7851: @dependabot[bot] chore(deps): bump golang from 1.24.6 to 1.25.0 in /tests/apps/go-fail-postdeploy
- #7852: @dependabot[bot] chore(deps): bump golang from 1.24.6 to 1.25.0 in /tests/apps/gogrpc
- #7853: @dependabot[bot] chore(deps): bump golang from 1.24.6 to 1.25.0 in /tests/apps/zombies-dockerfile-no-tini
- #7842: @dependabot[bot] chore(deps): bump actions/checkout from 4 to 5
- #7821: @dependabot[bot] chore(deps): bump traefik from 3.4.4 to 3.5.0 in /plugins/traefik-vhosts
- #7843: @josegonzalez Bump go modules
- #7824: @dependabot[bot] chore(deps): bump mkdocs-material from 9.6.15 to 9.6.16 in /docs/_build
- #7823: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.16 to 10.16.1 in /docs/_build
- #7831: @dependabot[bot] chore(deps): bump google.golang.org/protobuf from 1.36.6 to 1.36.7 in /tests/apps/gogrpc
- #7839: @dependabot[bot] chore(deps): bump python from 3.13.5-bookworm to 3.13.6-bookworm in /tests/apps/dockerfile-release
- #7838: @dependabot[bot] chore(deps): bump python from 3.13.5-alpine to 3.13.6-alpine in /docs/_build
- #7837: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.40.0 to 0.41.0 in /plugins/common
- #7836: @dependabot[bot] chore(deps): bump golang from 1.24.5 to 1.24.6 in /tests/apps/zombies-dockerfile-tini
- #7835: @dependabot[bot] chore(deps): bump golang from 1.24.5 to 1.24.6 in /tests/apps/zombies-dockerfile-no-tini
- #7834: @dependabot[bot] chore(deps): bump golang from 1.24.5 to 1.24.6 in /tests/apps/go-fail-postdeploy
- #7833: @dependabot[bot] chore(deps): bump golang from 1.24.5 to 1.24.6 in /tests/apps/gogrpc
- #7832: @dependabot[bot] chore(deps): bump golang from 1.24.5 to 1.24.6 in /tests/apps/go-fail-predeploy
- #7828: @dependabot[bot] chore(deps): bump actions/download-artifact from 4 to 5

### Other

- #7854: @dependabot[bot] chore(deps): bump helm.sh/helm/v3 from 3.18.4 to 3.18.5 in /plugins/scheduler-k3s
- #7825: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.11.26 to 2.11.28 in /plugins/scheduler-k3s
- #7830: @dependabot[bot] chore(deps): bump tmp from 0.2.1 to 0.2.4 in /tests/apps/multi
- #7829: @dependabot[bot] chore(deps): bump github.com/go-acme/lego/v4 from 4.24.0 to 4.25.2 in /plugins/scheduler-k3s
2025-08-21 05:33:05 +00:00
Jose Diaz-Gonzalez
3705b5f847 Merge pull request #7861 from dokku/dependabot/go_modules/tests/apps/gogrpc/google.golang.org/grpc-1.75.0
chore(deps): bump google.golang.org/grpc from 1.74.2 to 1.75.0 in /tests/apps/gogrpc
2025-08-20 21:55:50 -04:00
Jose Diaz-Gonzalez
ac4f576951 Merge pull request #7860 from dokku/dependabot/pip/tests/apps/python-flask/flask-3.1.2
chore(deps): bump flask from 3.1.1 to 3.1.2 in /tests/apps/python-flask
2025-08-20 21:55:43 -04:00
Jose Diaz-Gonzalez
b790fd745a Merge pull request #7859 from dokku/dependabot/pip/tests/apps/multi/flask-3.1.2
chore(deps): bump flask from 3.1.1 to 3.1.2 in /tests/apps/multi
2025-08-20 21:55:31 -04:00
dependabot[bot]
c8d7fb0aed chore(deps): bump google.golang.org/grpc in /tests/apps/gogrpc
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.74.2 to 1.75.0.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.74.2...v1.75.0)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.75.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-20 13:46:20 +00:00
dependabot[bot]
5d4ac8179a chore(deps): bump flask from 3.1.1 to 3.1.2 in /tests/apps/python-flask
Bumps [flask](https://github.com/pallets/flask) from 3.1.1 to 3.1.2.
- [Release notes](https://github.com/pallets/flask/releases)
- [Changelog](https://github.com/pallets/flask/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/flask/compare/3.1.1...3.1.2)

---
updated-dependencies:
- dependency-name: flask
  dependency-version: 3.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-20 13:35:57 +00:00
dependabot[bot]
097da0436e chore(deps): bump flask from 3.1.1 to 3.1.2 in /tests/apps/multi
Bumps [flask](https://github.com/pallets/flask) from 3.1.1 to 3.1.2.
- [Release notes](https://github.com/pallets/flask/releases)
- [Changelog](https://github.com/pallets/flask/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/flask/compare/3.1.1...3.1.2)

---
updated-dependencies:
- dependency-name: flask
  dependency-version: 3.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-20 13:17:59 +00:00
Jose Diaz-Gonzalez
b7b5fa4f3c Merge pull request #7856 from dokku/dependabot/pip/docs/_build/mkdocs-material-9.6.17
chore(deps): bump mkdocs-material from 9.6.16 to 9.6.17 in /docs/_build
2025-08-18 15:57:44 -04:00
Jose Diaz-Gonzalez
cd70c5279f Merge pull request #7857 from dokku/dependabot/docker/docs/_build/python-3.13.7-alpine
chore(deps): bump python from 3.13.6-alpine to 3.13.7-alpine in /docs/_build
2025-08-18 15:57:33 -04:00
Jose Diaz-Gonzalez
86be96ad24 Merge pull request #7858 from dokku/dependabot/docker/tests/apps/dockerfile-release/python-3.13.7-bookworm
chore(deps): bump python from 3.13.6-bookworm to 3.13.7-bookworm in /tests/apps/dockerfile-release
2025-08-18 15:57:27 -04:00
dependabot[bot]
a95f077496 chore(deps): bump python in /tests/apps/dockerfile-release
Bumps python from 3.13.6-bookworm to 3.13.7-bookworm.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.13.7-bookworm
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-18 19:01:19 +00:00
dependabot[bot]
bf6c784b91 chore(deps): bump python in /docs/_build
Bumps python from 3.13.6-alpine to 3.13.7-alpine.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.13.7-alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-18 18:43:45 +00:00
dependabot[bot]
1cc6c1bc3e chore(deps): bump mkdocs-material from 9.6.16 to 9.6.17 in /docs/_build
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.6.16 to 9.6.17.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.16...9.6.17)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-version: 9.6.17
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-18 17:20:49 +00:00
Jose Diaz-Gonzalez
b75c7f3b8c Merge pull request #7855 from dokku/dependabot/maven/tests/apps/java/org.eclipse.jetty-jetty-servlet-11.0.26
chore(deps): bump org.eclipse.jetty:jetty-servlet from 11.0.25 to 11.0.26 in /tests/apps/java
2025-08-16 01:45:28 -04:00
Jose Diaz-Gonzalez
6525f147c6 Merge pull request #7848 from dokku/fix-k3s-tests
Ensure tests properly fetch data from json output
2025-08-16 01:45:15 -04:00
dependabot[bot]
11bf30d744 chore(deps): bump org.eclipse.jetty:jetty-servlet in /tests/apps/java
Bumps org.eclipse.jetty:jetty-servlet from 11.0.25 to 11.0.26.

---
updated-dependencies:
- dependency-name: org.eclipse.jetty:jetty-servlet
  dependency-version: 11.0.26
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-15 13:12:35 +00:00
Jose Diaz-Gonzalez
2aabb209d9 Merge pull request #7849 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-tini/golang-1.25.0
chore(deps): bump golang from 1.24.6 to 1.25.0 in /tests/apps/zombies-dockerfile-tini
2025-08-14 17:28:16 -04:00
Jose Diaz-Gonzalez
bd03e45860 Merge pull request #7850 from dokku/dependabot/docker/tests/apps/go-fail-predeploy/golang-1.25.0
chore(deps): bump golang from 1.24.6 to 1.25.0 in /tests/apps/go-fail-predeploy
2025-08-14 17:28:04 -04:00
Jose Diaz-Gonzalez
f4d2437922 Merge pull request #7851 from dokku/dependabot/docker/tests/apps/go-fail-postdeploy/golang-1.25.0
chore(deps): bump golang from 1.24.6 to 1.25.0 in /tests/apps/go-fail-postdeploy
2025-08-14 17:27:58 -04:00
Jose Diaz-Gonzalez
8b5f134946 Merge pull request #7852 from dokku/dependabot/docker/tests/apps/gogrpc/golang-1.25.0
chore(deps): bump golang from 1.24.6 to 1.25.0 in /tests/apps/gogrpc
2025-08-14 17:27:39 -04:00
Jose Diaz-Gonzalez
3f0cc989d0 Merge pull request #7853 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-no-tini/golang-1.25.0
chore(deps): bump golang from 1.24.6 to 1.25.0 in /tests/apps/zombies-dockerfile-no-tini
2025-08-14 17:27:33 -04:00
Jose Diaz-Gonzalez
ed0832370d Merge pull request #7854 from dokku/dependabot/go_modules/plugins/scheduler-k3s/helm.sh/helm/v3-3.18.5
chore(deps): bump helm.sh/helm/v3 from 3.18.4 to 3.18.5 in /plugins/scheduler-k3s
2025-08-14 17:27:26 -04:00
dependabot[bot]
a55d5a10e0 chore(deps): bump helm.sh/helm/v3 in /plugins/scheduler-k3s
Bumps [helm.sh/helm/v3](https://github.com/helm/helm) from 3.18.4 to 3.18.5.
- [Release notes](https://github.com/helm/helm/releases)
- [Commits](https://github.com/helm/helm/compare/v3.18.4...v3.18.5)

---
updated-dependencies:
- dependency-name: helm.sh/helm/v3
  dependency-version: 3.18.5
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-14 17:17:39 +00:00
dependabot[bot]
07695e9aac chore(deps): bump golang in /tests/apps/zombies-dockerfile-no-tini
Bumps golang from 1.24.6 to 1.25.0.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-14 14:02:46 +00:00
dependabot[bot]
e28dd15881 chore(deps): bump golang from 1.24.6 to 1.25.0 in /tests/apps/gogrpc
Bumps golang from 1.24.6 to 1.25.0.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-14 13:40:21 +00:00
dependabot[bot]
3421d1082c chore(deps): bump golang in /tests/apps/go-fail-postdeploy
Bumps golang from 1.24.6 to 1.25.0.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-14 13:31:49 +00:00
dependabot[bot]
bfb424dc09 chore(deps): bump golang in /tests/apps/go-fail-predeploy
Bumps golang from 1.24.6 to 1.25.0.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-14 13:10:18 +00:00
dependabot[bot]
fe47ebd906 chore(deps): bump golang in /tests/apps/zombies-dockerfile-tini
Bumps golang from 1.24.6 to 1.25.0.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-14 13:04:49 +00:00
Jose Diaz-Gonzalez
f2e421daba fix: ensure tests properly fetch data from json output
Without this pathing update, the fetched data would sometimes also pull in containerStatus info for newer k8s versions.
2025-08-13 13:50:57 -04:00
Jose Diaz-Gonzalez
6ec9bc800d Merge pull request #7846 from dokku/fix-logs-tests
Correct issue in parsing escaped plus signs in vector sink values
2025-08-12 23:30:05 -04:00
Jose Diaz-Gonzalez
b759230411 fix: correct issue in parsing escaped plus signs in vector sink values 2025-08-12 22:05:16 -04:00
Jose Diaz-Gonzalez
82829ab84c Merge pull request #7845 from dokku/official-runners
Use the official github actions arm64 runner
2025-08-12 21:58:23 -04:00
Jose Diaz-Gonzalez
94eb2d0d8b ci: use the official github actions arm64 runner 2025-08-12 20:36:43 -04:00
Jose Diaz-Gonzalez
54b7ab616a Merge pull request #7841 from leksyib14/master
Fix handling of equals sign in vector sink values
2025-08-12 20:33:50 -04:00
Jose Diaz-Gonzalez
b0c2912453 fix: use newer qson to add support for escaped = (equals) signs
Equal signs should be escaped - %3D - in order to be used in values.
2025-08-12 20:15:27 -04:00
Jose Diaz-Gonzalez
3eeb9be292 chore: add trailing newline 2025-08-12 19:35:44 -04:00
leksyib14
c44d729831 fix: vector sink format issue 2025-08-12 19:35:44 -04:00
Jose Diaz-Gonzalez
e5280dbe34 Merge pull request #7842 from dokku/dependabot/github_actions/actions/checkout-5
chore(deps): bump actions/checkout from 4 to 5
2025-08-12 19:27:45 -04:00
Jose Diaz-Gonzalez
64f4314df3 Merge pull request #7844 from dokku/7308-ignore-symlinks
Do not change permissions on config directory symlinks
2025-08-12 16:36:59 -04:00
Jose Diaz-Gonzalez
dc35a7876c fix: do not change permissions on config directory symlinks
When running in docker, the 'config' directory can be a symlink, which causes issues during plugin installation.

Refs #7308
2025-08-11 23:46:14 -04:00
dependabot[bot]
a82c79d5b5 chore(deps): bump actions/checkout from 4 to 5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-12 02:57:31 +00:00
Jose Diaz-Gonzalez
d3054c4908 Merge pull request #7821 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-3.5.0
chore(deps): bump traefik from 3.4.4 to 3.5.0 in /plugins/traefik-vhosts
2025-08-11 22:57:07 -04:00
Jose Diaz-Gonzalez
9ea08636d4 Merge pull request #7843 from dokku/bump-go-modules
Bump go modules
2025-08-11 22:56:29 -04:00
Jose Diaz-Gonzalez
33e559adf6 fix: correct issues in linting 2025-08-11 22:44:17 -04:00
Jose Diaz-Gonzalez
2aa319a81a chore: bump go modules and run go mod tidy 2025-08-11 22:39:53 -04:00
Jose Diaz-Gonzalez
2f196e5c9c fix: pass in correct arguments 2025-08-11 22:31:29 -04:00
Jose Diaz-Gonzalez
38426ba304 docs: update history correctly 2025-08-11 22:31:29 -04:00
Jose Diaz-Gonzalez
38beed755b Merge pull request #7825 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/traefik/traefik/v2-2.11.28
chore(deps): bump github.com/traefik/traefik/v2 from 2.11.26 to 2.11.28 in /plugins/scheduler-k3s
2025-08-08 17:30:19 -04:00
Jose Diaz-Gonzalez
6bc410204e Merge pull request #7824 from dokku/dependabot/pip/docs/_build/mkdocs-material-9.6.16
chore(deps): bump mkdocs-material from 9.6.15 to 9.6.16 in /docs/_build
2025-08-08 17:30:10 -04:00
Jose Diaz-Gonzalez
abcc7f00e1 Merge pull request #7823 from dokku/dependabot/pip/docs/_build/pymdown-extensions-10.16.1
chore(deps): bump pymdown-extensions from 10.16 to 10.16.1 in /docs/_build
2025-08-08 17:30:04 -04:00
Jose Diaz-Gonzalez
0690265f71 Merge pull request #7830 from dokku/dependabot/npm_and_yarn/tests/apps/multi/tmp-0.2.4
chore(deps): bump tmp from 0.2.1 to 0.2.4 in /tests/apps/multi
2025-08-08 17:29:38 -04:00
Jose Diaz-Gonzalez
cdb2d35adb Merge pull request #7831 from dokku/dependabot/go_modules/tests/apps/gogrpc/google.golang.org/protobuf-1.36.7
chore(deps): bump google.golang.org/protobuf from 1.36.6 to 1.36.7 in /tests/apps/gogrpc
2025-08-08 17:29:31 -04:00
Jose Diaz-Gonzalez
3deee63036 Merge pull request #7839 from dokku/dependabot/docker/tests/apps/dockerfile-release/python-3.13.6-bookworm
chore(deps): bump python from 3.13.5-bookworm to 3.13.6-bookworm in /tests/apps/dockerfile-release
2025-08-08 17:29:21 -04:00
Jose Diaz-Gonzalez
bef36c3b7c Merge pull request #7838 from dokku/dependabot/docker/docs/_build/python-3.13.6-alpine
chore(deps): bump python from 3.13.5-alpine to 3.13.6-alpine in /docs/_build
2025-08-08 17:29:15 -04:00
Jose Diaz-Gonzalez
12e6c71fb7 Merge pull request #7837 from dokku/dependabot/go_modules/plugins/common/golang.org/x/crypto-0.41.0
chore(deps): bump golang.org/x/crypto from 0.40.0 to 0.41.0 in /plugins/common
2025-08-08 17:29:09 -04:00
Jose Diaz-Gonzalez
a05ef80d64 Merge pull request #7836 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-tini/golang-1.24.6
chore(deps): bump golang from 1.24.5 to 1.24.6 in /tests/apps/zombies-dockerfile-tini
2025-08-08 17:29:04 -04:00
Jose Diaz-Gonzalez
9887134a4e Merge pull request #7835 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-no-tini/golang-1.24.6
chore(deps): bump golang from 1.24.5 to 1.24.6 in /tests/apps/zombies-dockerfile-no-tini
2025-08-08 17:28:56 -04:00
Jose Diaz-Gonzalez
38a21b8c2f Merge pull request #7834 from dokku/dependabot/docker/tests/apps/go-fail-postdeploy/golang-1.24.6
chore(deps): bump golang from 1.24.5 to 1.24.6 in /tests/apps/go-fail-postdeploy
2025-08-08 17:28:37 -04:00
Jose Diaz-Gonzalez
e8dc3c650a Merge pull request #7833 from dokku/dependabot/docker/tests/apps/gogrpc/golang-1.24.6
chore(deps): bump golang from 1.24.5 to 1.24.6 in /tests/apps/gogrpc
2025-08-08 17:28:29 -04:00
Jose Diaz-Gonzalez
38db727e2f Merge pull request #7832 from dokku/dependabot/docker/tests/apps/go-fail-predeploy/golang-1.24.6
chore(deps): bump golang from 1.24.5 to 1.24.6 in /tests/apps/go-fail-predeploy
2025-08-08 17:28:19 -04:00
Jose Diaz-Gonzalez
de6f998fbc Merge pull request #7829 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/go-acme/lego/v4-4.25.2
chore(deps): bump github.com/go-acme/lego/v4 from 4.24.0 to 4.25.2 in /plugins/scheduler-k3s
2025-08-08 17:27:58 -04:00
Jose Diaz-Gonzalez
2138a882a0 Merge pull request #7828 from dokku/dependabot/github_actions/actions/download-artifact-5
chore(deps): bump actions/download-artifact from 4 to 5
2025-08-08 17:27:42 -04:00
dependabot[bot]
063750948d chore(deps): bump python in /tests/apps/dockerfile-release
Bumps python from 3.13.5-bookworm to 3.13.6-bookworm.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.13.6-bookworm
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-08 13:44:17 +00:00
dependabot[bot]
51cdcab328 chore(deps): bump python in /docs/_build
Bumps python from 3.13.5-alpine to 3.13.6-alpine.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.13.6-alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-08 13:10:45 +00:00
dependabot[bot]
db0ba7ad89 chore(deps): bump golang.org/x/crypto in /plugins/common
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.40.0 to 0.41.0.
- [Commits](https://github.com/golang/crypto/compare/v0.40.0...v0.41.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.41.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-08 13:08:47 +00:00
dependabot[bot]
2597ec2c3d chore(deps): bump golang in /tests/apps/zombies-dockerfile-tini
Bumps golang from 1.24.5 to 1.24.6.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-07 14:06:48 +00:00
dependabot[bot]
b3bbb30a6b chore(deps): bump golang in /tests/apps/zombies-dockerfile-no-tini
Bumps golang from 1.24.5 to 1.24.6.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-07 14:04:12 +00:00
dependabot[bot]
0a56782780 chore(deps): bump golang in /tests/apps/go-fail-postdeploy
Bumps golang from 1.24.5 to 1.24.6.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-07 13:57:00 +00:00
dependabot[bot]
201da01ae7 chore(deps): bump golang from 1.24.5 to 1.24.6 in /tests/apps/gogrpc
Bumps golang from 1.24.5 to 1.24.6.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-07 13:40:42 +00:00
dependabot[bot]
abf62bdf1f chore(deps): bump golang in /tests/apps/go-fail-predeploy
Bumps golang from 1.24.5 to 1.24.6.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-07 13:21:51 +00:00
dependabot[bot]
1b5332cd45 chore(deps): bump google.golang.org/protobuf in /tests/apps/gogrpc
Bumps google.golang.org/protobuf from 1.36.6 to 1.36.7.

---
updated-dependencies:
- dependency-name: google.golang.org/protobuf
  dependency-version: 1.36.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-07 13:11:17 +00:00
dependabot[bot]
083cf3ac90 chore(deps): bump tmp from 0.2.1 to 0.2.4 in /tests/apps/multi
Bumps [tmp](https://github.com/raszi/node-tmp) from 0.2.1 to 0.2.4.
- [Changelog](https://github.com/raszi/node-tmp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/raszi/node-tmp/compare/v0.2.1...v0.2.4)

---
updated-dependencies:
- dependency-name: tmp
  dependency-version: 0.2.4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-06 18:39:07 +00:00
dependabot[bot]
bdf87e32e8 chore(deps): bump github.com/go-acme/lego/v4 in /plugins/scheduler-k3s
Bumps [github.com/go-acme/lego/v4](https://github.com/go-acme/lego) from 4.24.0 to 4.25.2.
- [Release notes](https://github.com/go-acme/lego/releases)
- [Changelog](https://github.com/go-acme/lego/blob/master/CHANGELOG.md)
- [Commits](https://github.com/go-acme/lego/compare/v4.24.0...v4.25.2)

---
updated-dependencies:
- dependency-name: github.com/go-acme/lego/v4
  dependency-version: 4.25.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-06 17:29:38 +00:00
dependabot[bot]
410f1b3d23 chore(deps): bump actions/download-artifact from 4 to 5
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-06 13:44:17 +00:00
dependabot[bot]
e57a141b36 chore(deps): bump github.com/traefik/traefik/v2
Bumps [github.com/traefik/traefik/v2](https://github.com/traefik/traefik) from 2.11.26 to 2.11.28.
- [Release notes](https://github.com/traefik/traefik/releases)
- [Changelog](https://github.com/traefik/traefik/blob/master/CHANGELOG.md)
- [Commits](https://github.com/traefik/traefik/compare/v2.11.26...v2.11.28)

---
updated-dependencies:
- dependency-name: github.com/traefik/traefik/v2
  dependency-version: 2.11.28
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-01 18:09:39 +00:00
dependabot[bot]
9b8faf2b27 chore(deps): bump mkdocs-material from 9.6.15 to 9.6.16 in /docs/_build
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.6.15 to 9.6.16.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.15...9.6.16)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-version: 9.6.16
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-28 18:20:59 +00:00
dependabot[bot]
1ae63ebe01 chore(deps): bump pymdown-extensions in /docs/_build
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.16 to 10.16.1.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.16...10.16.1)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-version: 10.16.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-28 18:12:12 +00:00
dependabot[bot]
548e891004 chore(deps): bump traefik from 3.4.4 to 3.5.0 in /plugins/traefik-vhosts
Bumps traefik from 3.4.4 to 3.5.0.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: 3.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-24 13:43:41 +00:00
Dokku Bot
9df8b7c25e Release 0.36.0
# History

## 0.36.0

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.36.0/bootstrap.sh
sudo DOKKU_TAG=v0.36.0 bash bootstrap.sh
```

See the [0.36.0 migration guide](/docs/appendices/0.36.0-migration-guide.md) for more information on migrating to 0.36.0.
2025-07-24 03:21:55 +00:00
Jose Diaz-Gonzalez
95b237c3c7 Merge pull request #7820 from dokku/ignore-brew-doctor-warnings
Ignore brew doctor warnings when releasing Dokku as a homebrew formula
2025-07-23 22:37:29 -04:00
Jose Diaz-Gonzalez
0a0368864d fix: ignore brew doctor warnings when releasing Dokku as a homebrew formula 2025-07-23 22:37:08 -04:00
Jose Diaz-Gonzalez
203af51f02 Merge pull request #7775 from dokku/dependabot/go_modules/plugins/cron/mvdan.cc/sh/v3-3.12.0
chore(deps): bump mvdan.cc/sh/v3 from 3.11.0 to 3.12.0 in /plugins/cron
2025-07-23 22:30:14 -04:00
Jose Diaz-Gonzalez
98e8a9bd67 chore: bump modules 2025-07-23 22:26:41 -04:00
dependabot[bot]
29cf81c45e chore(deps): bump mvdan.cc/sh/v3 from 3.11.0 to 3.12.0 in /plugins/cron
Bumps [mvdan.cc/sh/v3](https://github.com/mvdan/sh) from 3.11.0 to 3.12.0.
- [Release notes](https://github.com/mvdan/sh/releases)
- [Changelog](https://github.com/mvdan/sh/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mvdan/sh/compare/v3.11.0...v3.12.0)

---
updated-dependencies:
- dependency-name: mvdan.cc/sh/v3
  dependency-version: 3.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-24 02:24:58 +00:00
Jose Diaz-Gonzalez
aff910c85a Merge pull request #7815 from dokku/dependabot/go_modules/plugins/config/github.com/onsi/gomega-1.38.0
chore(deps): bump github.com/onsi/gomega from 1.37.0 to 1.38.0 in /plugins/config
2025-07-23 22:23:41 -04:00
Jose Diaz-Gonzalez
4ac363cdb2 chore: bump modules 2025-07-23 22:23:15 -04:00
Jose Diaz-Gonzalez
f011631c67 Merge pull request #7810 from dokku/dependabot/go_modules/plugins/config/github.com/spf13/pflag-1.0.7
chore(deps): bump github.com/spf13/pflag from 1.0.6 to 1.0.7 in /plugins/config
2025-07-23 22:18:17 -04:00
Jose Diaz-Gonzalez
d26b5de742 chore: bump modules 2025-07-23 22:17:19 -04:00
dependabot[bot]
a4078e97bd chore(deps): bump github.com/spf13/pflag in /plugins/config
Bumps [github.com/spf13/pflag](https://github.com/spf13/pflag) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/spf13/pflag/releases)
- [Commits](https://github.com/spf13/pflag/compare/v1.0.6...v1.0.7)

---
updated-dependencies:
- dependency-name: github.com/spf13/pflag
  dependency-version: 1.0.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-23 22:16:19 -04:00
Jose Diaz-Gonzalez
dc959d6a41 Merge pull request #7783 from dokku/dependabot/docker/tests/apps/go-fail-postdeploy/golang-1.24.5
chore(deps): bump golang from 1.24.4 to 1.24.5 in /tests/apps/go-fail-postdeploy
2025-07-23 22:15:29 -04:00
Jose Diaz-Gonzalez
61bab89189 Merge pull request #7772 from dokku/dependabot/docker/plugins/logs/timberio/vector-0.48.0-debian
chore(deps): bump timberio/vector from 0.47.0-debian to 0.48.0-debian in /plugins/logs
2025-07-23 22:15:09 -04:00
Jose Diaz-Gonzalez
3a0d0c182c Merge pull request #7763 from dokku/dependabot/pip/docs/_build/pymdown-extensions-10.16
chore(deps): bump pymdown-extensions from 10.15 to 10.16 in /docs/_build
2025-07-23 22:14:57 -04:00
Jose Diaz-Gonzalez
19f37b537a Merge pull request #7771 from dokku/dependabot/pip/docs/_build/mkdocs-material-9.6.15
chore(deps): bump mkdocs-material from 9.6.14 to 9.6.15 in /docs/_build
2025-07-23 22:14:48 -04:00
Jose Diaz-Gonzalez
9e44195694 Merge pull request #7754 from dokku/dependabot/pip/tests/apps/lambda-python/requests-2.32.4
chore(deps): bump requests from 2.32.0 to 2.32.4 in /tests/apps/lambda-python
2025-07-23 22:14:29 -04:00
Jose Diaz-Gonzalez
f45ad26429 Merge pull request #7768 from dokku/dependabot/bundler/tests/apps/ruby/thin-2.0.1
chore(deps): bump thin from 1.8.2 to 2.0.1 in /tests/apps/ruby
2025-07-23 22:14:13 -04:00
dependabot[bot]
86351887f4 chore(deps): bump pymdown-extensions from 10.15 to 10.16 in /docs/_build
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.15 to 10.16.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.15...10.16)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-version: '10.16'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-24 02:14:07 +00:00
Jose Diaz-Gonzalez
8f99cd5f2b Merge pull request #7753 from dokku/dependabot/pip/docs/_build/zipp-3.23.0
chore(deps): bump zipp from 3.22.0 to 3.23.0 in /docs/_build
2025-07-23 22:13:43 -04:00
Jose Diaz-Gonzalez
dc67a5cb5b Merge pull request #7757 from dokku/dependabot/docker/docs/_build/python-3.13.5-alpine
chore(deps): bump python from 3.13.4-alpine to 3.13.5-alpine in /docs/_build
2025-07-23 22:13:16 -04:00
Jose Diaz-Gonzalez
e971ca3686 Merge pull request #7756 from dokku/dependabot/docker/tests/apps/dockerfile-release/python-3.13.5-bookworm
chore(deps): bump python from 3.13.4-bookworm to 3.13.5-bookworm in /tests/apps/dockerfile-release
2025-07-23 22:13:08 -04:00
Jose Diaz-Gonzalez
46e22ba573 Merge pull request #7766 from dokku/dependabot/docker/plugins/caddy-vhosts/lucaslorentz/caddy-docker-proxy-2.10
chore(deps): bump lucaslorentz/caddy-docker-proxy from 2.9 to 2.10 in /plugins/caddy-vhosts
2025-07-23 22:12:45 -04:00
Jose Diaz-Gonzalez
f1aba77b1b Merge pull request #7765 from dokku/dependabot/pip/docs/_build/pygments-2.19.2
chore(deps): bump pygments from 2.19.1 to 2.19.2 in /docs/_build
2025-07-23 22:12:21 -04:00
Jose Diaz-Gonzalez
05e6de4fe2 Merge pull request #7784 from dokku/dependabot/docker/tests/apps/gogrpc/golang-1.24.5
chore(deps): bump golang from 1.24.4 to 1.24.5 in /tests/apps/gogrpc
2025-07-23 22:12:05 -04:00
Jose Diaz-Gonzalez
7e108de502 Merge pull request #7785 from dokku/dependabot/docker/tests/apps/go-fail-predeploy/golang-1.24.5
chore(deps): bump golang from 1.24.4 to 1.24.5 in /tests/apps/go-fail-predeploy
2025-07-23 22:11:58 -04:00
Jose Diaz-Gonzalez
074de26cbd Merge pull request #7786 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-tini/golang-1.24.5
chore(deps): bump golang from 1.24.4 to 1.24.5 in /tests/apps/zombies-dockerfile-tini
2025-07-23 22:11:52 -04:00
Jose Diaz-Gonzalez
05637fa64b Merge pull request #7787 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-no-tini/golang-1.24.5
chore(deps): bump golang from 1.24.4 to 1.24.5 in /tests/apps/zombies-dockerfile-no-tini
2025-07-23 22:11:45 -04:00
Jose Diaz-Gonzalez
ebf20e9236 Merge pull request #7792 from dokku/dependabot/docker/tests/apps/dockerfile-entrypoint/ruby-3.4.5
chore(deps): bump ruby from 3.4.4 to 3.4.5 in /tests/apps/dockerfile-entrypoint
2025-07-23 22:11:36 -04:00
Jose Diaz-Gonzalez
35d7597a25 Merge pull request #7814 from dokku/dependabot/go_modules/tests/apps/gogrpc/google.golang.org/grpc-1.74.2
chore(deps): bump google.golang.org/grpc from 1.73.0 to 1.74.2 in /tests/apps/gogrpc
2025-07-23 22:11:14 -04:00
Jose Diaz-Gonzalez
f91b7154d4 Merge pull request #7819 from dokku/dependabot/npm_and_yarn/tests/apps/multi/brace-expansion-1.1.12
chore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /tests/apps/multi
2025-07-23 22:10:43 -04:00
Jose Diaz-Gonzalez
fdbdbd50fc Merge pull request #7791 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-3.4.4
chore(deps): bump traefik from 3.4.1 to 3.4.4 in /plugins/traefik-vhosts
2025-07-23 22:10:04 -04:00
dependabot[bot]
9ffa564abd chore(deps): bump github.com/onsi/gomega in /plugins/config
Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.37.0 to 1.38.0.
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/gomega/compare/v1.37.0...v1.38.0)

---
updated-dependencies:
- dependency-name: github.com/onsi/gomega
  dependency-version: 1.38.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-24 02:08:39 +00:00
Jose Diaz-Gonzalez
a9df9cfd86 Merge pull request #7790 from dokku/dependabot/go_modules/plugins/common/golang.org/x/crypto-0.40.0
chore(deps): bump golang.org/x/crypto from 0.39.0 to 0.40.0 in /plugins/common
2025-07-23 22:08:12 -04:00
Jose Diaz-Gonzalez
d226b02a49 chore: bump modules 2025-07-23 22:06:48 -04:00
dependabot[bot]
fa9b5308cd chore(deps): bump golang.org/x/crypto in /plugins/common
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.39.0 to 0.40.0.
- [Commits](https://github.com/golang/crypto/compare/v0.39.0...v0.40.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.40.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-24 02:04:31 +00:00
dependabot[bot]
60d8a667af chore(deps): bump brace-expansion in /tests/apps/multi
Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.11 to 1.1.12.
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](https://github.com/juliangruber/brace-expansion/compare/1.1.11...v1.1.12)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 1.1.12
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-24 02:03:56 +00:00
Jose Diaz-Gonzalez
328aa3779c Merge pull request #7750 from dokku/0.36-release
Release 0.36.0
2025-07-23 22:02:58 -04:00
Jose Diaz-Gonzalez
b1b43f487c Merge pull request #7818 from dokku/drop-ubuntu-20-04
Drop support for Ubuntu 20.04
2025-07-23 21:55:40 -04:00
Jose Diaz-Gonzalez
344cb39a44 chore: drop support for Ubuntu 20.04
This is no longer supported upstream by Canonical.
2025-07-23 21:55:23 -04:00
Jose Diaz-Gonzalez
bcefa92f30 Merge pull request #7776 from dokku/k3s-kustomize
Add kustomize support for applying helm charts
2025-07-23 21:48:32 -04:00
Jose Diaz-Gonzalez
245263d2ad docs: add documentation for Kustomize usage 2025-07-23 20:59:28 -04:00
Jose Diaz-Gonzalez
dd7589323e feat: implement fetching the process-specific kustomize root path 2025-07-23 20:47:46 -04:00
Jose Diaz-Gonzalez
4aed599d8c fix: do not run helm in dry-run mode when trace-mode is enabled 2025-07-23 20:47:31 -04:00
Jose Diaz-Gonzalez
cd275138f3 fix: actually use helper to inject template 2025-07-23 20:46:47 -04:00
Jose Diaz-Gonzalez
476cc6045f fix: add resources to injected template 2025-07-23 20:46:37 -04:00
Jose Diaz-Gonzalez
553378085f fix: ensure the rendered.yaml file is written into the secure filesystem 2025-07-23 20:35:02 -04:00
Jose Diaz-Gonzalez
2958f906e4 chore: update and move comment in rendered template 2025-07-23 20:28:40 -04:00
Jose Diaz-Gonzalez
68f909b91d fix: only process web-related templates when there is a web section embedded in the template 2025-07-23 20:16:49 -04:00
Jose Diaz-Gonzalez
78bde7f817 feat: add more context for warning about not having an autoscaling config 2025-07-23 20:15:08 -04:00
Jose Diaz-Gonzalez
e7964ee99d chore: remove debug code 2025-07-23 18:52:43 -04:00
Jose Diaz-Gonzalez
8f44a57158 fix: return the initial manifests if there is no kustomize root path 2025-07-23 18:52:43 -04:00
Jose Diaz-Gonzalez
d33393d3fd feat: debug failed global helm chart installations by checking all pod logs 2025-07-23 18:40:43 -04:00
Jose Diaz-Gonzalez
7595351b1d debug: check on what pods are running in the cert-manager namespace 2025-07-23 18:40:43 -04:00
Jose Diaz-Gonzalez
3edddac0c1 fix: create the data directory 2025-07-23 18:40:43 -04:00
Jose Diaz-Gonzalez
0a86ffe01b fix: add missing scheduler-k3s directory 2025-07-23 18:40:43 -04:00
Jose Diaz-Gonzalez
563365b712 fix: add name to app-json trigger code and some formatting 2025-07-23 18:40:43 -04:00
Jose Diaz-Gonzalez
b6fdd4511c fix: add validation to input for common trigger functions 2025-07-23 18:40:43 -04:00
Jose Diaz-Gonzalez
b24035c80a refactor: use a common implementation to move files into place in golang core-post-deploy implementations 2025-07-23 18:40:43 -04:00
Jose Diaz-Gonzalez
58c6b137b0 refactor: use a common implementation to extract kustomize files 2025-07-23 18:40:43 -04:00
Jose Diaz-Gonzalez
fd6e56cc5f fix: correct kustomize root path check 2025-07-23 18:40:43 -04:00
Jose Diaz-Gonzalez
d0ffd7d9f9 feat: stub out kustomize renderer
The process-specific kustomize root path is not currently set, but will be soon.
2025-07-23 18:40:43 -04:00
Jose Diaz-Gonzalez
272327af89 chore: add docs to the ChartInput type 2025-07-23 18:40:43 -04:00
Jose Diaz-Gonzalez
e83ba595aa fix: correct issues with passing a KustomizeRenderer 2025-07-23 18:40:43 -04:00
Jose Diaz-Gonzalez
04917b72d4 fix: ensure the directories are deleted 2025-07-23 18:40:43 -04:00
Jose Diaz-Gonzalez
e0617b209d feat: extract kustomize directory from repo during deploys 2025-07-23 18:40:43 -04:00
Jose Diaz-Gonzalez
1b4e02eb62 feat: create a KustomizeRenderer
The KustomizeRenderer is used to invoke Kustomize to the generated renderer.yaml.
2025-07-23 18:34:53 -04:00
Jose Diaz-Gonzalez
5ae6c1c845 feat: add the ability to specify a kustomize-root-path
This will default to `config/kustomize`, though may change to `.dokku/kustomize` in the future.
2025-07-23 18:34:53 -04:00
Jose Diaz-Gonzalez
e034421ea9 fix: ensure the InstallChart function also attaches the debug renderer 2025-07-23 18:34:53 -04:00
Jose Diaz-Gonzalez
1cbaabdda0 Merge pull request #7816 from dokku/common-core-triggers
Use helper go functions to handle extracting files from a repository
2025-07-23 18:34:40 -04:00
Jose Diaz-Gonzalez
577f46153f refactor: use helper go functions to handle extracting files from a repository
This standardizes the extraction code and makes it easier to reuse in future implementations of file extraction.

Additionally, this adds a way to extract folders from codebases.
2025-07-23 18:16:16 -04:00
Jose Diaz-Gonzalez
3116880b75 Merge pull request #7812 from CiTroNaK/feat/dokku-caddy-label-key
Allow specifying a custom top-level label key for the caddy proxy
2025-07-23 15:54:55 -04:00
Jose Diaz-Gonzalez
5961306813 Merge pull request #7811 from slava-sh/fix-6939
Fix issue deploying from a tar file
2025-07-23 15:54:29 -04:00
Petr Hlavicka
acf2c854d2 test 2025-07-23 14:49:15 -04:00
Petr Hlavicka
bf3b2d396b update docs 2025-07-23 14:49:15 -04:00
Petr Hlavicka
3c6796bd7b use it 2025-07-23 14:49:15 -04:00
Petr Hlavicka
22c3d34877 add get function 2025-07-23 14:49:15 -04:00
Petr Hlavicka
b151192394 enable key 2025-07-23 14:49:15 -04:00
Slava Shklyaev
fb405c64ab Fix #6939 2025-07-23 14:46:21 -04:00
dependabot[bot]
3826f40c6f chore(deps): bump google.golang.org/grpc in /tests/apps/gogrpc
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.73.0 to 1.74.2.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.73.0...v1.74.2)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.74.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-23 13:36:29 +00:00
dependabot[bot]
0156cffe0f chore(deps): bump ruby in /tests/apps/dockerfile-entrypoint
Bumps ruby from 3.4.4 to 3.4.5.

---
updated-dependencies:
- dependency-name: ruby
  dependency-version: 3.4.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-16 13:14:31 +00:00
dependabot[bot]
a19741aba9 chore(deps): bump traefik from 3.4.1 to 3.4.4 in /plugins/traefik-vhosts
Bumps traefik from 3.4.1 to 3.4.4.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: 3.4.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-14 16:40:20 +00:00
dependabot[bot]
85eca2167b chore(deps): bump golang in /tests/apps/zombies-dockerfile-no-tini
Bumps golang from 1.24.4 to 1.24.5.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-09 14:21:04 +00:00
dependabot[bot]
431e43ac6d chore(deps): bump golang in /tests/apps/zombies-dockerfile-tini
Bumps golang from 1.24.4 to 1.24.5.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-09 13:49:22 +00:00
dependabot[bot]
936706e880 chore(deps): bump golang in /tests/apps/go-fail-predeploy
Bumps golang from 1.24.4 to 1.24.5.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-09 13:43:50 +00:00
dependabot[bot]
1ecf975b53 chore(deps): bump golang from 1.24.4 to 1.24.5 in /tests/apps/gogrpc
Bumps golang from 1.24.4 to 1.24.5.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-09 13:12:52 +00:00
dependabot[bot]
7859145409 chore(deps): bump golang in /tests/apps/go-fail-postdeploy
Bumps golang from 1.24.4 to 1.24.5.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-09 13:06:49 +00:00
Jose Diaz-Gonzalez
77694de6ff Merge pull request #7782 from dokku/k3s-update-dependencies
Update golang dependencies in scheduler-k3s plugin
2025-07-08 23:48:00 -04:00
Jose Diaz-Gonzalez
83de73ccdb chore(deps): update golang dependencies in scheduler-k3s plugin 2025-07-08 22:56:48 -04:00
Jose Diaz-Gonzalez
d8938ebf77 Merge pull request #7781 from dokku/fix-gitignore
Update gitignore to remove compiled triggers from repo
2025-07-08 22:35:02 -04:00
Jose Diaz-Gonzalez
2d4039ab69 chore: update gitignore to remove compiled triggers from repo 2025-07-08 22:34:30 -04:00
Jose Diaz-Gonzalez
e584e336f8 Merge pull request #7780 from dokku/devcontainer-enter
Export the devcontainer environment to allow docker exec to work
2025-07-08 22:33:10 -04:00
Jose Diaz-Gonzalez
27b5fd93fd feat: export the devcontainer environment to allow docker exec to work
This will allow Dokku developers access to the devcontainer on their preferred terminal vs just the built-in one in VSCode.
2025-07-08 22:32:46 -04:00
Jose Diaz-Gonzalez
249df86dfd Merge pull request #7779 from dokku/update-golang
feat: update golang to 1.24
2025-07-08 22:12:43 -04:00
Jose Diaz-Gonzalez
ff01c3df7b Merge pull request #7777 from coorasse/patch-1
Fix typo in 0.36.0 migration guide
2025-07-08 21:54:23 -04:00
Jose Diaz-Gonzalez
2c30c03ef7 fix: non-constant format string in call to fmt.Printf 2025-07-08 21:28:57 -04:00
Jose Diaz-Gonzalez
93f12c59e6 feat: update golang to 1.24 2025-07-08 21:14:33 -04:00
Alessandro Rodi
3cc29ff016 Update 0.36.0-migration-guide.md 2025-07-08 14:01:03 +02:00
Jose Diaz-Gonzalez
b336e3633d Merge pull request #7773 from dokku/7665-chart-override
Use values.yaml correctly within internal Kubernetes Helm Chart
2025-07-05 22:45:26 -04:00
Jose Diaz-Gonzalez
4a891f74bd fix: correct scope for capability checks 2025-07-04 06:09:03 -04:00
Jose Diaz-Gonzalez
27dbae3703 fix: correct scope for capability checks 2025-07-04 04:24:09 -04:00
Jose Diaz-Gonzalez
f7800adb68 fix: correct scope for capability checks 2025-07-04 04:24:09 -04:00
Jose Diaz-Gonzalez
c472c2a3c7 refactor use chart values directly instead of attempting to template out cron-job and keda files 2025-07-04 04:24:09 -04:00
Jose Diaz-Gonzalez
1b95e01ea3 fix: move range 2025-07-04 04:24:09 -04:00
Jose Diaz-Gonzalez
6da9be2d65 refactor: use chart values directly instead of attempting to template out cron-job and keda files 2025-07-04 04:24:09 -04:00
Jose Diaz-Gonzalez
fd2fb6c605 Merge pull request #7774 from dokku/7728-remove-ansi-escape
Remove ansi escape characters that dropped the remote: prefix in deploy output
2025-07-04 04:22:56 -04:00
Jose Diaz-Gonzalez
04b2643b4f chore: remove ansi escape characters that dropped the remote: prefix in deploy output
Closes #7728
2025-07-04 02:36:42 -04:00
Jose Diaz-Gonzalez
c4d700c1b0 Merge pull request #7769 from devopswithnaman/fix/registry-error-handling
Improve error handling in docker operations
2025-07-04 02:05:03 -04:00
Jose Diaz-Gonzalez
2bcfea9b2b Merge pull request #7442 from turicas/fix/domains-semantics
Update how domains:clear works and add domains:reset command
2025-07-02 02:26:11 -04:00
Naman gandhi
8b07e92391 fix(registry): improve error handling in docker operations
- Replace boolean return values with proper error handling in dockerTag and dockerPush functions
- Add detailed error context including Docker command exit codes and stderr output
- Remove TODO comments and improve error messages for better debugging
- Fix error message formatting in defer function

This addresses the TODO comments for better error handling and provides
users with actionable error information when Docker registry operations fail.

Closes: #XXXX
2025-07-02 01:34:15 -04:00
Jose Diaz-Gonzalez
a2ac21130a docs: add migration note 2025-07-02 01:22:05 -04:00
Jose Diaz-Gonzalez
ea6adbbf56 fix: add missing trigger and use helper function for clearing vhost 2025-07-02 01:21:57 -04:00
Jose Diaz-Gonzalez
b11c72d0ae tests: update test logic 2025-07-02 01:17:57 -04:00
Jose Diaz-Gonzalez
77970a6b0d chore: revert doc change 2025-07-02 01:17:09 -04:00
Jose Diaz-Gonzalez
6a0701fa65 chore: revert doc change 2025-07-02 01:15:27 -04:00
Jose Diaz-Gonzalez
a062e283fe chore: revert doc change 2025-07-02 01:14:30 -04:00
Jose Diaz-Gonzalez
624acb8e18 chore: revert doc change 2025-07-02 01:12:35 -04:00
Álvaro Justen (@turicas)
67311264d7 Implement domains:reset 2025-07-01 20:11:48 -04:00
Álvaro Justen (@turicas)
b97086a8bd domains:clear now removes ALL app domains 2025-07-01 20:11:48 -04:00
dependabot[bot]
ce0da53f86 chore(deps): bump timberio/vector in /plugins/logs
Bumps timberio/vector from 0.47.0-debian to 0.48.0-debian.

---
updated-dependencies:
- dependency-name: timberio/vector
  dependency-version: 0.48.0-debian
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-01 14:23:48 +00:00
dependabot[bot]
1a27cdd0ea chore(deps): bump mkdocs-material from 9.6.14 to 9.6.15 in /docs/_build
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.6.14 to 9.6.15.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.14...9.6.15)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-version: 9.6.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-01 13:52:26 +00:00
Jose Diaz-Gonzalez
7b45131486 Merge pull request #7499 from nonZero/custom-nginx-command
feat(nginx-vhosts): add support for custom nginx service command
2025-06-30 18:56:58 -04:00
Jose Diaz-Gonzalez
06de81b61b refactor: allow custom nginx command to be set as an nginx property
This avoids adding a new environment variable in favor of a script that can be called both globally as well as on a per-app basis.
2025-06-30 03:29:43 -04:00
Udi Oron
a331d27945 feat(nginx-vhosts): add support for custom nginx service command 2025-06-30 03:22:07 -04:00
Jose Diaz-Gonzalez
926176bbb6 Merge pull request #7504 from dokku/7396-scale-without-restart
Only redeploy formations that have had their values changed
2025-06-30 03:04:31 -04:00
Jose Diaz-Gonzalez
5cd86d23e6 tests: add tests for scaling without restarting untouched process types 2025-06-30 01:48:09 -04:00
dependabot[bot]
8e178f5895 chore(deps): bump thin from 1.8.2 to 2.0.1 in /tests/apps/ruby
Bumps [thin](https://github.com/macournoyer/thin) from 1.8.2 to 2.0.1.
- [Release notes](https://github.com/macournoyer/thin/releases)
- [Changelog](https://github.com/macournoyer/thin/blob/master/CHANGELOG)
- [Commits](https://github.com/macournoyer/thin/compare/v1.8.2...v2.0.1)

---
updated-dependencies:
- dependency-name: thin
  dependency-version: 2.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-24 13:07:11 +00:00
dependabot[bot]
9496b9cfaf chore(deps): bump lucaslorentz/caddy-docker-proxy
Bumps lucaslorentz/caddy-docker-proxy from 2.9 to 2.10.

---
updated-dependencies:
- dependency-name: lucaslorentz/caddy-docker-proxy
  dependency-version: '2.10'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-23 15:57:00 +00:00
dependabot[bot]
6fc2d42fe0 chore(deps): bump pygments from 2.19.1 to 2.19.2 in /docs/_build
Bumps [pygments](https://github.com/pygments/pygments) from 2.19.1 to 2.19.2.
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)
- [Commits](https://github.com/pygments/pygments/compare/2.19.1...2.19.2)

---
updated-dependencies:
- dependency-name: pygments
  dependency-version: 2.19.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-23 15:07:43 +00:00
Jose Diaz-Gonzalez
1eb41f32dc feat: only redeploy formations that have had their values changed
Rather than redeploy every formation, only deploy formations that have had their values changed from the defaults.

This still doesn't handle the case where we touch existing processes when scaling _up_, but should decrease the number of services touched otherwise during scaling.

Also note that there are no tests for this new behavior yet (tests incoming).

Refs #7396
2025-06-23 04:42:09 -04:00
Jose Diaz-Gonzalez
bc75bffed2 Merge pull request #7762 from dokku/fix-buildpack-tests
Reference new packeto buildpack urls
2025-06-23 04:41:37 -04:00
Jose Diaz-Gonzalez
944d808bc6 Merge pull request #7579 from dokku/6872-stop-all
Stop all app containers when calling ps:stop
2025-06-23 04:41:25 -04:00
Jose Diaz-Gonzalez
885178eed5 feat: turn warnings to failures when running validation against an app.json file 2025-06-23 01:03:10 -04:00
Jose Diaz-Gonzalez
7e37f9dc79 fix: add missing trigger 2025-06-23 00:22:38 -04:00
Jose Diaz-Gonzalez
7cd077a79b debug: stream stdout/stderr 2025-06-19 21:19:24 -04:00
Jose Diaz-Gonzalez
7c2df65514 fix: reference new packeto buildpack urls
See https://blog.paketo.io/posts/paketo-gcr-registry-sunset/ for details.
2025-06-19 21:17:58 -04:00
Jose Diaz-Gonzalez
2324cb888b refactor: check for extracted file and add logging message 2025-06-19 20:53:20 -04:00
Jose Diaz-Gonzalez
4ae9cca6f1 feat: implement app-json-is-valid plugin trigger 2025-06-19 02:20:02 -04:00
Jose Diaz-Gonzalez
ed851fe399 refactor: warn when invalid cron entries might be written 2025-06-19 01:11:29 -04:00
Jose Diaz-Gonzalez
776013b0f4 fix: write the cron config after the app.json has been deleted
Without this, we try to write the config for the app even though it doesn't exist anymore, causing issues with deleting apps with invalid cron configs.
2025-06-19 01:09:15 -04:00
Jose Diaz-Gonzalez
6f0039ebf1 fix: add missing source 2025-06-18 23:51:39 -04:00
Jose Diaz-Gonzalez
8d0c35f133 Merge pull request #7761 from largemouth/master
Fix struct name in comment
2025-06-18 12:13:09 -04:00
largemouth
bc61d106e4 chore: fix struct name in comment
Signed-off-by: largemouth <largemouth@aliyun.com>
2025-06-17 18:11:21 +08:00
Jose Diaz-Gonzalez
d0208b0ecc Merge pull request #7759 from olleolleolle/patch-1
Drop mention of dokkufy gem archived in 2017
2025-06-16 01:52:17 -04:00
Jose Diaz-Gonzalez
5df1d77c04 Merge branch 'master' into patch-1 2025-06-16 01:52:05 -04:00
Jose Diaz-Gonzalez
29dc0b5980 Merge pull request #7760 from olleolleolle/patch-2
Drop dokku-client gem, homepage 404s
2025-06-16 01:51:30 -04:00
Olle Jonsson
a4983f8d7d clients.md: Drop dokku-client gem, homepage 404s 2025-06-15 23:41:54 +02:00
Olle Jonsson
ecf852567c clients.md: Drop mention of dokkufy gem archived in 2017 2025-06-15 23:37:20 +02:00
dependabot[bot]
f9f931b2b6 chore(deps): bump python in /docs/_build
Bumps python from 3.13.4-alpine to 3.13.5-alpine.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.13.5-alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-13 14:01:53 +00:00
dependabot[bot]
024715fbf1 chore(deps): bump python in /tests/apps/dockerfile-release
Bumps python from 3.13.4-bookworm to 3.13.5-bookworm.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.13.5-bookworm
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-13 13:50:23 +00:00
Jose Diaz-Gonzalez
73be6989ff fix: ensure invalid cron triggers fail a deploy 2025-06-10 23:55:06 -04:00
Jose Diaz-Gonzalez
67003ed469 fix: skip cron entries that are missing a command or a schedule 2025-06-10 23:39:35 -04:00
Jose Diaz-Gonzalez
2758b3cc47 chore: rename trigger function 2025-06-10 23:36:10 -04:00
Jose Diaz-Gonzalez
36da77a2ff fix: write cron in pre-delete phase 2025-06-10 21:46:07 -04:00
Jose Diaz-Gonzalez
b663f71878 feat: only write cron entries when working on docker-local scheduler 2025-06-10 21:45:08 -04:00
Jose Diaz-Gonzalez
398a78b2f6 refactor: move cron-write to scheduler-cron-write 2025-06-10 21:45:08 -04:00
Jose Diaz-Gonzalez
2dea993804 fix: also stop k8s cron tasks when calling ps:stop 2025-06-10 21:45:08 -04:00
Jose Diaz-Gonzalez
7b0d3b14bc fix: stop all app containers when calling ps:stop
Closes #6872
2025-06-10 21:45:08 -04:00
Jose Diaz-Gonzalez
0d6199d0cb Merge pull request #7755 from olleolleolle/patch-1
Update checkout action version in github actions documentation
2025-06-10 21:43:56 -04:00
Dokku Bot
56d65bfaba Release 0.35.20
# History

## 0.35.20

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.35.20/bootstrap.sh
sudo DOKKU_TAG=v0.35.20 bash bootstrap.sh
```

### Bug Fixes

- #7726: @josegonzalez Ensure compose projects are spawned from the /tmp directory
- #7725: @josegonzalez Uninstall hashicorp tap to fix formula releases

### Dependencies

- #7735: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.72.2 to 1.73.0 in /tests/apps/gogrpc
- #7737: @dependabot[bot] chore(deps): bump python from 3.13.3-alpine to 3.13.4-alpine in /docs/_build
- #7738: @dependabot[bot] chore(deps): bump python from 3.13.3-bookworm to 3.13.4-bookworm in /tests/apps/dockerfile-release
- #7745: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.38.0 to 0.39.0 in /plugins/common
- #7740: @dependabot[bot] chore(deps): bump golang from 1.24.3 to 1.24.4 in /tests/apps/gogrpc
- #7741: @dependabot[bot] chore(deps): bump golang from 1.24.3 to 1.24.4 in /tests/apps/go-fail-postdeploy
- #7742: @dependabot[bot] chore(deps): bump golang from 1.24.3 to 1.24.4 in /tests/apps/zombies-dockerfile-tini
- #7743: @dependabot[bot] chore(deps): bump golang from 1.24.3 to 1.24.4 in /tests/apps/go-fail-predeploy
- #7744: @dependabot[bot] chore(deps): bump golang from 1.24.3 to 1.24.4 in /tests/apps/zombies-dockerfile-no-tini
- #7730: @dependabot[bot] chore(deps): bump traefik from 3.4.0 to 3.4.1 in /plugins/traefik-vhosts
- #7729: @dependabot[bot] chore(deps): bump zipp from 3.21.0 to 3.22.0 in /docs/_build
- #7727: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.72.1 to 1.72.2 in /tests/apps/gogrpc

### Other

- #7746: @dependabot[bot] chore(deps): bump django from 5.0.14 to 5.1.10 in /tests/apps/dockerfile-release
- #7731: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.11.24 to 2.11.25 in /plugins/scheduler-k3s
2025-06-11 00:46:02 +00:00
Olle Jonsson
d83978760e [docs] github-actions.md: use latest Checkout action version 2025-06-10 19:33:47 +02:00
dependabot[bot]
3e08a71a95 chore(deps): bump requests in /tests/apps/lambda-python
Bumps [requests](https://github.com/psf/requests) from 2.32.0 to 2.32.4.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.32.0...v2.32.4)

---
updated-dependencies:
- dependency-name: requests
  dependency-version: 2.32.4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-10 08:19:59 +00:00
Jose Diaz-Gonzalez
5ca09b0081 Merge pull request #7577 from dokku/6872-stop-handling
Migrate DOKKU_DOCKER_STOP_TIMEOUT to ps setting
2025-06-09 13:10:42 -04:00
Jose Diaz-Gonzalez
5e1f177d1c chore: revert local 2025-06-09 11:39:00 -04:00
Jose Diaz-Gonzalez
86a6b2e246 fix: reference correct variable 2025-06-09 11:39:00 -04:00
Jose Diaz-Gonzalez
3a16724fbe docs: correct commands 2025-06-09 11:39:00 -04:00
Jose Diaz-Gonzalez
5d1a3fb079 fix: add missing ps-get-property 2025-06-09 11:39:00 -04:00
Jose Diaz-Gonzalez
f0bf7aa0b6 fix: also migrate one more usage 2025-06-09 11:39:00 -04:00
Jose Diaz-Gonzalez
4942ebaec1 refactor: remove use of config plugin from scheduler plugin 2025-06-09 11:39:00 -04:00
Jose Diaz-Gonzalez
9beab4d50d refactor: migrate DOKKU_DOCKER_STOP_TIMEOUT to ps setting 2025-06-09 11:39:00 -04:00
Jose Diaz-Gonzalez
758d9f8a83 feat: add config-unset trigger 2025-06-09 11:39:00 -04:00
dependabot[bot]
dd45bebc3e chore(deps): bump zipp from 3.22.0 to 3.23.0 in /docs/_build
Bumps [zipp](https://github.com/jaraco/zipp) from 3.22.0 to 3.23.0.
- [Release notes](https://github.com/jaraco/zipp/releases)
- [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/zipp/compare/v3.22.0...v3.23.0)

---
updated-dependencies:
- dependency-name: zipp
  dependency-version: 3.23.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-09 14:28:03 +00:00
Jose Diaz-Gonzalez
0263d37d43 Merge pull request #7578 from dokku/6953-cron-maintenance
Add ability to set maintenance mode for all cron tasks running for an app
2025-06-09 01:05:08 -04:00
Jose Diaz-Gonzalez
d0b87936db docs: fix typo 2025-06-08 22:35:17 -04:00
Jose Diaz-Gonzalez
0f4b5d4305 fix: continue including maintenance mode cron tasks in the cron:list subcommand 2025-06-08 22:34:47 -04:00
Jose Diaz-Gonzalez
c0eb12f572 feat: add ability to set maintenance mode for all cron tasks running for an app
Closes #6953
2025-06-08 22:34:47 -04:00
Jose Diaz-Gonzalez
cc395b54dd Merge pull request #7621 from dokku/dependabot/npm_and_yarn/tests/apps/nodejs-express/express-5.1.0
chore(deps): bump express from 4.21.2 to 5.1.0 in /tests/apps/nodejs-express
2025-06-08 22:33:50 -04:00
Jose Diaz-Gonzalez
80f35370ab chore: bump nodejs from 4.2.x to 18.x.x 2025-06-08 20:08:10 -04:00
dependabot[bot]
98e7f467b7 chore(deps): bump express from 4.21.2 to 5.1.0 in /tests/apps/nodejs-express
Dependabot couldn't find the original pull request head commit, f30b38c741b6433fafe368d09d886d93b81a5830.
2025-06-08 20:07:13 -04:00
Jose Diaz-Gonzalez
d3ae9360ce Merge pull request #7628 from dokku/dependabot/npm_and_yarn/tests/apps/nodejs-express-noappjson/express-5.1.0
chore(deps): bump express from 4.21.2 to 5.1.0 in /tests/apps/nodejs-express-noappjson
2025-06-08 20:06:59 -04:00
Jose Diaz-Gonzalez
b44ccae796 chore: bump nodejs from 4.2.x to 18.x.x 2025-06-08 19:30:39 -04:00
dependabot[bot]
1060189d78 chore(deps): bump express in /tests/apps/nodejs-express-noappjson
Bumps [express](https://github.com/expressjs/express) from 4.21.2 to 5.1.0.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.21.2...v5.1.0)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-08 18:21:28 -04:00
Jose Diaz-Gonzalez
8eb8760a46 Merge pull request #7749 from dokku/update-herokuish 2025-06-08 06:57:34 -04:00
Jose Diaz-Gonzalez
1486c5e170 Merge pull request #7748 from dokku/update-docker-container-healthchecker
chore: update docker-container-healthchecker from 0.11.5 to 0.14.0
2025-06-08 02:16:16 -04:00
Jose Diaz-Gonzalez
10b31fcd4a chore: update herokuish from 0.10.3 to 0.11.0 2025-06-08 01:31:01 -04:00
Jose Diaz-Gonzalez
82f3613ed7 chore: update docker-container-healthchecker from 0.11.5 to 0.14.0 2025-06-08 01:29:12 -04:00
Jose Diaz-Gonzalez
3354effff0 Merge pull request #7746 from dokku/dependabot/pip/tests/apps/dockerfile-release/django-5.1.10
chore(deps): bump django from 5.0.14 to 5.1.10 in /tests/apps/dockerfile-release
2025-06-07 23:35:19 -04:00
Jose Diaz-Gonzalez
3557de3485 Merge pull request #7735 from dokku/dependabot/go_modules/tests/apps/gogrpc/google.golang.org/grpc-1.73.0
chore(deps): bump google.golang.org/grpc from 1.72.2 to 1.73.0 in /tests/apps/gogrpc
2025-06-07 23:32:05 -04:00
Jose Diaz-Gonzalez
5c3eea3ccb Merge pull request #7737 from dokku/dependabot/docker/docs/_build/python-3.13.4-alpine
chore(deps): bump python from 3.13.3-alpine to 3.13.4-alpine in /docs/_build
2025-06-07 23:31:59 -04:00
Jose Diaz-Gonzalez
220443fc99 Merge pull request #7738 from dokku/dependabot/docker/tests/apps/dockerfile-release/python-3.13.4-bookworm
chore(deps): bump python from 3.13.3-bookworm to 3.13.4-bookworm in /tests/apps/dockerfile-release
2025-06-07 23:31:48 -04:00
Jose Diaz-Gonzalez
47f46fd930 Merge pull request #7745 from dokku/dependabot/go_modules/plugins/common/golang.org/x/crypto-0.39.0
chore(deps): bump golang.org/x/crypto from 0.38.0 to 0.39.0 in /plugins/common
2025-06-07 23:29:49 -04:00
Jose Diaz-Gonzalez
bf6da2d971 chore: bump go modules 2025-06-07 22:48:13 -04:00
dependabot[bot]
ff5970e1ac chore(deps): bump golang.org/x/crypto in /plugins/common
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.38.0 to 0.39.0.
- [Commits](https://github.com/golang/crypto/compare/v0.38.0...v0.39.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.39.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-07 22:16:15 -04:00
Jose Diaz-Gonzalez
343e19fcc7 Merge pull request #7740 from dokku/dependabot/docker/tests/apps/gogrpc/golang-1.24.4
chore(deps): bump golang from 1.24.3 to 1.24.4 in /tests/apps/gogrpc
2025-06-07 22:15:32 -04:00
Jose Diaz-Gonzalez
6d38d0c04d Merge pull request #7741 from dokku/dependabot/docker/tests/apps/go-fail-postdeploy/golang-1.24.4
chore(deps): bump golang from 1.24.3 to 1.24.4 in /tests/apps/go-fail-postdeploy
2025-06-07 22:15:18 -04:00
Jose Diaz-Gonzalez
a0eb35f989 Merge pull request #7742 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-tini/golang-1.24.4
chore(deps): bump golang from 1.24.3 to 1.24.4 in /tests/apps/zombies-dockerfile-tini
2025-06-07 22:14:45 -04:00
Jose Diaz-Gonzalez
603717eaa4 Merge pull request #7743 from dokku/dependabot/docker/tests/apps/go-fail-predeploy/golang-1.24.4
chore(deps): bump golang from 1.24.3 to 1.24.4 in /tests/apps/go-fail-predeploy
2025-06-07 22:14:19 -04:00
Jose Diaz-Gonzalez
ec84e66722 Merge pull request #7744 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-no-tini/golang-1.24.4
chore(deps): bump golang from 1.24.3 to 1.24.4 in /tests/apps/zombies-dockerfile-no-tini
2025-06-07 22:13:58 -04:00
dependabot[bot]
df7194667e chore(deps): bump django in /tests/apps/dockerfile-release
Bumps [django](https://github.com/django/django) from 5.0.14 to 5.1.10.
- [Commits](https://github.com/django/django/compare/5.0.14...5.1.10)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 5.1.10
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-06 16:04:14 +00:00
dependabot[bot]
eeb686b4fe chore(deps): bump golang in /tests/apps/zombies-dockerfile-no-tini
Bumps golang from 1.24.3 to 1.24.4.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-06 13:57:21 +00:00
dependabot[bot]
3869395513 chore(deps): bump golang in /tests/apps/go-fail-predeploy
Bumps golang from 1.24.3 to 1.24.4.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-06 13:37:47 +00:00
dependabot[bot]
0306a4a018 chore(deps): bump golang in /tests/apps/zombies-dockerfile-tini
Bumps golang from 1.24.3 to 1.24.4.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-06 13:13:30 +00:00
dependabot[bot]
094ddfec46 chore(deps): bump golang from 1.24.3 to 1.24.4 in /tests/apps/gogrpc
Bumps golang from 1.24.3 to 1.24.4.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-06 13:10:36 +00:00
dependabot[bot]
2151dbecd6 chore(deps): bump golang in /tests/apps/go-fail-postdeploy
Bumps golang from 1.24.3 to 1.24.4.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-06 13:10:36 +00:00
dependabot[bot]
c8775fb10b chore(deps): bump python in /tests/apps/dockerfile-release
Bumps python from 3.13.3-bookworm to 3.13.4-bookworm.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.13.4-bookworm
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-05 14:09:33 +00:00
dependabot[bot]
a85777ff02 chore(deps): bump python in /docs/_build
Bumps python from 3.13.3-alpine to 3.13.4-alpine.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.13.4-alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-05 14:07:00 +00:00
dependabot[bot]
918431f075 chore(deps): bump google.golang.org/grpc in /tests/apps/gogrpc
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.72.2 to 1.73.0.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.72.2...v1.73.0)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.73.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-05 13:27:29 +00:00
Jose Diaz-Gonzalez
a24ed084b1 Merge pull request #7731 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/traefik/traefik/v2-2.11.25
chore(deps): bump github.com/traefik/traefik/v2 from 2.11.24 to 2.11.25 in /plugins/scheduler-k3s
2025-06-01 22:52:55 -04:00
Jose Diaz-Gonzalez
1c851d7b17 Merge pull request #7730 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-3.4.1
chore(deps): bump traefik from 3.4.0 to 3.4.1 in /plugins/traefik-vhosts
2025-06-01 22:52:40 -04:00
Jose Diaz-Gonzalez
4a19bfebc4 Merge pull request #7729 from dokku/dependabot/pip/docs/_build/zipp-3.22.0
chore(deps): bump zipp from 3.21.0 to 3.22.0 in /docs/_build
2025-06-01 22:52:33 -04:00
dependabot[bot]
034c139777 chore(deps): bump github.com/traefik/traefik/v2
Bumps [github.com/traefik/traefik/v2](https://github.com/traefik/traefik) from 2.11.24 to 2.11.25.
- [Release notes](https://github.com/traefik/traefik/releases)
- [Changelog](https://github.com/traefik/traefik/blob/v2.11.25/CHANGELOG.md)
- [Commits](https://github.com/traefik/traefik/compare/v2.11.24...v2.11.25)

---
updated-dependencies:
- dependency-name: github.com/traefik/traefik/v2
  dependency-version: 2.11.25
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-28 14:26:38 +00:00
dependabot[bot]
67f60c0859 chore(deps): bump traefik from 3.4.0 to 3.4.1 in /plugins/traefik-vhosts
Bumps traefik from 3.4.0 to 3.4.1.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: 3.4.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-28 13:27:46 +00:00
dependabot[bot]
8ad62e204a chore(deps): bump zipp from 3.21.0 to 3.22.0 in /docs/_build
Bumps [zipp](https://github.com/jaraco/zipp) from 3.21.0 to 3.22.0.
- [Release notes](https://github.com/jaraco/zipp/releases)
- [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/zipp/compare/v3.21.0...v3.22.0)

---
updated-dependencies:
- dependency-name: zipp
  dependency-version: 3.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-27 13:20:18 +00:00
Jose Diaz-Gonzalez
070485eb08 Merge pull request #7727 from dokku/dependabot/go_modules/tests/apps/gogrpc/google.golang.org/grpc-1.72.2
chore(deps): bump google.golang.org/grpc from 1.72.1 to 1.72.2 in /tests/apps/gogrpc
2025-05-26 11:55:50 -04:00
dependabot[bot]
194678c7ba chore(deps): bump google.golang.org/grpc in /tests/apps/gogrpc
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.72.1 to 1.72.2.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.72.1...v1.72.2)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.72.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 13:41:43 +00:00
Jose Diaz-Gonzalez
ca30bd4d7b Merge pull request #7726 from dokku/7705-compose-context
Ensure compose projects are spawned from the /tmp directory
2025-05-25 01:36:29 -04:00
Jose Diaz-Gonzalez
6ce10b5be6 fix: ensure compose projects are spawned from the /tmp directory
A recent update to compose executes a stat call in the current working directory, which may have incorrect permissions for execution once the user is changed to the dokku user. This change forces all compose commands to execute in the /tmp directory by using a helper function to execute compose up/down.

Closes #7705
2025-05-24 23:31:41 -04:00
Jose Diaz-Gonzalez
41ac56e54b Merge pull request #7725 from dokku/josegonzalez-patch-1
Uninstall hashicorp tap to fix formula releases
2025-05-24 23:00:44 -04:00
Jose Diaz-Gonzalez
6b8127ae84 fix: uninstall hashicorp tap to fix formula releases 2025-05-24 23:00:30 -04:00
Dokku Bot
f2e14cdddc Release 0.35.19
# History

## 0.35.19

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.35.19/bootstrap.sh
sudo DOKKU_TAG=v0.35.19 bash bootstrap.sh
```

### Bug Fixes

- #7686: @josegonzalez Untap aws/tap to correct issues in formula release

### Documentation

- #7707: @swrobel Remove duplicate hostname plugin
- #7687: @d9i Fix cron key in app.json docs
- #7677: @plafue Add continuous integration example for woodpecker ci

### Tests

- #7585: @josegonzalez Add test to prove Dokku respects the Procfile when deploying from an image
- #7678: @josegonzalez Revert "fix: update CID count in ps tests"

### Dependencies

- #7692: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.37.0 to 0.38.0 in /plugins/common
- #7626: @dependabot[bot] chore(deps): bump express from 4.21.2 to 5.1.0 in /tests/apps/dockerfile
- #7693: @dependabot[bot] chore(deps): bump traefik from 3.3.5 to 3.4.0 in /plugins/traefik-vhosts
- #7694: @dependabot[bot] chore(deps): bump golang from 1.24.2 to 1.24.3 in /tests/apps/go-fail-postdeploy
- #7695: @dependabot[bot] chore(deps): bump node from 23-alpine to 24-alpine in /tests/apps/dockerfile-procfile-bad
- #7696: @dependabot[bot] chore(deps): bump golang from 1.24.2 to 1.24.3 in /tests/apps/gogrpc
- #7697: @dependabot[bot] chore(deps): bump golang from 1.24.2 to 1.24.3 in /tests/apps/go-fail-predeploy
- #7698: @dependabot[bot] chore(deps): bump node from 23-alpine to 24-alpine in /tests/apps/dockerfile-procfile
- #7699: @dependabot[bot] chore(deps): bump golang from 1.24.2 to 1.24.3 in /tests/apps/zombies-dockerfile-no-tini
- #7700: @dependabot[bot] chore(deps): bump golang from 1.24.2 to 1.24.3 in /tests/apps/zombies-dockerfile-tini
- #7701: @dependabot[bot] chore(deps): bump node from 23-alpine to 24-alpine in /tests/apps/dockerfile
- #7702: @dependabot[bot] chore(deps): bump node from 23-alpine to 24-alpine in /tests/apps/dockerfile-app-json-formations
- #7704: @dependabot[bot] chore(deps): bump rack from 2.2.13 to 2.2.14 in /tests/apps/ruby
- #7711: @dependabot[bot] chore(deps): bump flask from 3.1.0 to 3.1.1 in /tests/apps/multi
- #7712: @dependabot[bot] chore(deps): bump flask from 3.1.0 to 3.1.1 in /tests/apps/python-flask
- #7713: @dependabot[bot] chore(deps): bump pyyaml-env-tag from 0.1 to 1.1 in /docs/_build
- #7714: @dependabot[bot] chore(deps): bump mkdocs-material from 9.6.12 to 9.6.14 in /docs/_build
- #7715: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.72.0 to 1.72.1 in /tests/apps/gogrpc
- #7716: @dependabot[bot] chore(deps): bump ruby from 3.4.3 to 3.4.4 in /tests/apps/dockerfile-entrypoint
- #7718: @dependabot[bot] chore(deps): bump timberio/vector from 0.46.1-debian to 0.47.0-debian in /plugins/logs
- #7703: @dependabot[bot] chore(deps): bump node from 23-alpine to 24-alpine in /tests/apps/dockerfile-noexpose
- #7688: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.14.3 to 10.15 in /docs/_build
- #7689: @dependabot[bot] chore(deps): bump importlib-metadata from 8.6.1 to 8.7.0 in /docs/_build
- #7671: @dependabot[bot] chore(deps): bump golang.org/x/net from 0.36.0 to 0.38.0 in /tests/apps/gogrpc
- #7681: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.71.1 to 1.72.0 in /tests/apps/gogrpc
- #7680: @dependabot[bot] chore(deps): bump soupsieve from 2.6 to 2.7 in /docs/_build
- #7682: @dependabot[bot] chore(deps): bump packaging from 24.2 to 25.0 in /docs/_build
- #7673: @dependabot[bot] chore(deps): bump golang.org/x/net from 0.37.0 to 0.38.0 in /plugins/common
- #7675: @dependabot[bot] chore(deps): bump byjg/easy-haproxy from 4.4.0 to 4.5.0 in /plugins/haproxy-vhosts
- #7676: @dependabot[bot] chore(deps): bump mkdocs-material from 9.6.11 to 9.6.12 in /docs/_build

### Other

- #7723: @josegonzalez Revert "chore(deps): bump helm.sh/helm/v3 from 3.14.2 to 3.17.3 in /plugins/scheduler-k3s"
- #7645: @dependabot[bot] chore(deps): bump helm.sh/helm/v3 from 3.14.2 to 3.17.3 in /plugins/scheduler-k3s
- #7717: @dependabot[bot] chore(deps): bump setuptools from 70.0.0 to 78.1.1 in /tests/apps/dockerfile-release
- #7719: @d1ceward Fix: Add missing `systemctl` path detection in nginx-vhost plugin
- #7679: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.11.15 to 2.11.24 in /plugins/scheduler-k3s
2025-05-25 02:10:56 +00:00
Jose Diaz-Gonzalez
3ae19a8364 Merge pull request #7585 from dokku/7226-ps-rebuild-image-respect
Add test to prove Dokku respects the Procfile when deploying from an image
2025-05-24 22:07:29 -04:00
Jose Diaz-Gonzalez
6c4a0cbb34 Merge pull request #7692 from dokku/dependabot/go_modules/plugins/common/golang.org/x/crypto-0.38.0
chore(deps): bump golang.org/x/crypto from 0.37.0 to 0.38.0 in /plugins/common
2025-05-24 22:01:20 -04:00
Jose Diaz-Gonzalez
71324ba5c1 Merge pull request #7707 from swrobel/patch-3
Remove duplicate hostname plugin
2025-05-24 20:09:12 -04:00
Jose Diaz-Gonzalez
69c3c62577 chore: bump go modules 2025-05-24 20:04:31 -04:00
dependabot[bot]
3cf05b40de chore(deps): bump golang.org/x/crypto in /plugins/common
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.37.0 to 0.38.0.
- [Commits](https://github.com/golang/crypto/compare/v0.37.0...v0.38.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.38.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-24 20:01:04 -04:00
Jose Diaz-Gonzalez
40f9d9a318 Merge pull request #7626 from dokku/dependabot/npm_and_yarn/tests/apps/dockerfile/express-5.1.0
chore(deps): bump express from 4.21.2 to 5.1.0 in /tests/apps/dockerfile
2025-05-24 20:00:18 -04:00
Jose Diaz-Gonzalez
4644c594f0 Merge pull request #7723 from dokku/revert-7645-dependabot/go_modules/plugins/scheduler-k3s/helm.sh/helm/v3-3.17.3
Revert "chore(deps): bump helm.sh/helm/v3 from 3.14.2 to 3.17.3 in /plugins/scheduler-k3s"
2025-05-24 19:59:55 -04:00
Jose Diaz-Gonzalez
06cf2ebecf Revert "chore(deps): bump helm.sh/helm/v3 from 3.14.2 to 3.17.3 in /plugins/scheduler-k3s" 2025-05-24 19:59:47 -04:00
Jose Diaz-Gonzalez
77825342f5 Merge pull request #7645 from dokku/dependabot/go_modules/plugins/scheduler-k3s/helm.sh/helm/v3-3.17.3
chore(deps): bump helm.sh/helm/v3 from 3.14.2 to 3.17.3 in /plugins/scheduler-k3s
2025-05-24 19:59:37 -04:00
Jose Diaz-Gonzalez
9ff17a93c1 Merge pull request #7693 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-3.4.0
chore(deps): bump traefik from 3.3.5 to 3.4.0 in /plugins/traefik-vhosts
2025-05-24 19:59:14 -04:00
Jose Diaz-Gonzalez
85c857bbe0 Merge pull request #7694 from dokku/dependabot/docker/tests/apps/go-fail-postdeploy/golang-1.24.3
chore(deps): bump golang from 1.24.2 to 1.24.3 in /tests/apps/go-fail-postdeploy
2025-05-24 19:59:08 -04:00
Jose Diaz-Gonzalez
6806007060 Merge pull request #7695 from dokku/dependabot/docker/tests/apps/dockerfile-procfile-bad/node-24-alpine
chore(deps): bump node from 23-alpine to 24-alpine in /tests/apps/dockerfile-procfile-bad
2025-05-24 19:59:00 -04:00
Jose Diaz-Gonzalez
693bca5709 Merge pull request #7696 from dokku/dependabot/docker/tests/apps/gogrpc/golang-1.24.3
chore(deps): bump golang from 1.24.2 to 1.24.3 in /tests/apps/gogrpc
2025-05-24 19:58:53 -04:00
Jose Diaz-Gonzalez
2a88463919 Merge pull request #7697 from dokku/dependabot/docker/tests/apps/go-fail-predeploy/golang-1.24.3
chore(deps): bump golang from 1.24.2 to 1.24.3 in /tests/apps/go-fail-predeploy
2025-05-24 19:58:44 -04:00
Jose Diaz-Gonzalez
be63a22d2f Merge pull request #7698 from dokku/dependabot/docker/tests/apps/dockerfile-procfile/node-24-alpine
chore(deps): bump node from 23-alpine to 24-alpine in /tests/apps/dockerfile-procfile
2025-05-24 19:58:38 -04:00
Jose Diaz-Gonzalez
f86d6975ad Merge pull request #7699 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-no-tini/golang-1.24.3
chore(deps): bump golang from 1.24.2 to 1.24.3 in /tests/apps/zombies-dockerfile-no-tini
2025-05-24 19:58:31 -04:00
Jose Diaz-Gonzalez
fd0ca02038 Merge pull request #7700 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-tini/golang-1.24.3
chore(deps): bump golang from 1.24.2 to 1.24.3 in /tests/apps/zombies-dockerfile-tini
2025-05-24 19:58:23 -04:00
Jose Diaz-Gonzalez
863566f1a0 Merge pull request #7701 from dokku/dependabot/docker/tests/apps/dockerfile/node-24-alpine
chore(deps): bump node from 23-alpine to 24-alpine in /tests/apps/dockerfile
2025-05-24 19:58:16 -04:00
Jose Diaz-Gonzalez
74c1d25692 Merge pull request #7702 from dokku/dependabot/docker/tests/apps/dockerfile-app-json-formations/node-24-alpine
chore(deps): bump node from 23-alpine to 24-alpine in /tests/apps/dockerfile-app-json-formations
2025-05-24 19:58:10 -04:00
Jose Diaz-Gonzalez
a633502675 Merge pull request #7704 from dokku/dependabot/bundler/tests/apps/ruby/rack-2.2.14
chore(deps): bump rack from 2.2.13 to 2.2.14 in /tests/apps/ruby
2025-05-24 19:58:04 -04:00
Jose Diaz-Gonzalez
ceacae003a Merge pull request #7711 from dokku/dependabot/pip/tests/apps/multi/flask-3.1.1
chore(deps): bump flask from 3.1.0 to 3.1.1 in /tests/apps/multi
2025-05-24 19:57:48 -04:00
Jose Diaz-Gonzalez
bc4226990f Merge pull request #7712 from dokku/dependabot/pip/tests/apps/python-flask/flask-3.1.1
chore(deps): bump flask from 3.1.0 to 3.1.1 in /tests/apps/python-flask
2025-05-24 19:57:41 -04:00
Jose Diaz-Gonzalez
e0470b7641 Merge pull request #7713 from dokku/dependabot/pip/docs/_build/pyyaml-env-tag-1.1
chore(deps): bump pyyaml-env-tag from 0.1 to 1.1 in /docs/_build
2025-05-24 19:57:29 -04:00
Jose Diaz-Gonzalez
919916ea23 Merge pull request #7714 from dokku/dependabot/pip/docs/_build/mkdocs-material-9.6.14
chore(deps): bump mkdocs-material from 9.6.12 to 9.6.14 in /docs/_build
2025-05-24 19:57:22 -04:00
Jose Diaz-Gonzalez
e137178765 Merge pull request #7715 from dokku/dependabot/go_modules/tests/apps/gogrpc/google.golang.org/grpc-1.72.1
chore(deps): bump google.golang.org/grpc from 1.72.0 to 1.72.1 in /tests/apps/gogrpc
2025-05-24 19:57:15 -04:00
Jose Diaz-Gonzalez
112b77bb01 Merge pull request #7716 from dokku/dependabot/docker/tests/apps/dockerfile-entrypoint/ruby-3.4.4
chore(deps): bump ruby from 3.4.3 to 3.4.4 in /tests/apps/dockerfile-entrypoint
2025-05-24 19:57:08 -04:00
Jose Diaz-Gonzalez
50d7ec3d29 Merge pull request #7717 from dokku/dependabot/pip/tests/apps/dockerfile-release/setuptools-78.1.1
chore(deps): bump setuptools from 70.0.0 to 78.1.1 in /tests/apps/dockerfile-release
2025-05-24 19:56:57 -04:00
Jose Diaz-Gonzalez
ad9490efcb Merge pull request #7718 from dokku/dependabot/docker/plugins/logs/timberio/vector-0.47.0-debian
chore(deps): bump timberio/vector from 0.46.1-debian to 0.47.0-debian in /plugins/logs
2025-05-24 19:54:23 -04:00
Jose Diaz-Gonzalez
e45977e763 Merge pull request #7703 from dokku/dependabot/docker/tests/apps/dockerfile-noexpose/node-24-alpine
chore(deps): bump node from 23-alpine to 24-alpine in /tests/apps/dockerfile-noexpose
2025-05-24 02:43:31 -04:00
Jose Diaz-Gonzalez
9c80367706 Merge pull request #7719 from d1ceward/hotfix/use_correct_systemctl_path
Fix: Add missing `systemctl` path detection in nginx-vhost plugin
2025-05-24 02:23:08 -04:00
Fabien LEFEBVRE (d1ceward)
1f2ef9874d Fix retrieval of systemctl path in nginx-vhosts plugin 2025-05-22 11:15:06 +02:00
dependabot[bot]
0701a091ef chore(deps): bump timberio/vector in /plugins/logs
Bumps timberio/vector from 0.46.1-debian to 0.47.0-debian.

---
updated-dependencies:
- dependency-name: timberio/vector
  dependency-version: 0.47.0-debian
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-21 13:30:25 +00:00
dependabot[bot]
b6aeb4a028 chore(deps): bump setuptools in /tests/apps/dockerfile-release
Bumps [setuptools](https://github.com/pypa/setuptools) from 70.0.0 to 78.1.1.
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v70.0.0...v78.1.1)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-version: 78.1.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 20:20:26 +00:00
dependabot[bot]
5cadeb52bf chore(deps): bump ruby in /tests/apps/dockerfile-entrypoint
Bumps ruby from 3.4.3 to 3.4.4.

---
updated-dependencies:
- dependency-name: ruby
  dependency-version: 3.4.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-16 13:31:33 +00:00
dependabot[bot]
597db38489 chore(deps): bump google.golang.org/grpc in /tests/apps/gogrpc
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.72.0 to 1.72.1.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.72.0...v1.72.1)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.72.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-15 13:04:56 +00:00
dependabot[bot]
cfe9997452 chore(deps): bump mkdocs-material from 9.6.12 to 9.6.14 in /docs/_build
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.6.12 to 9.6.14.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.12...9.6.14)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-version: 9.6.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-14 13:49:51 +00:00
dependabot[bot]
8badedd49f chore(deps): bump pyyaml-env-tag from 0.1 to 1.1 in /docs/_build
Bumps [pyyaml-env-tag](https://github.com/waylan/pyyaml-env-tag) from 0.1 to 1.1.
- [Commits](https://github.com/waylan/pyyaml-env-tag/compare/0.1...1.1)

---
updated-dependencies:
- dependency-name: pyyaml-env-tag
  dependency-version: '1.1'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-14 13:49:44 +00:00
dependabot[bot]
5ed42b364f chore(deps): bump flask from 3.1.0 to 3.1.1 in /tests/apps/python-flask
Bumps [flask](https://github.com/pallets/flask) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/pallets/flask/releases)
- [Changelog](https://github.com/pallets/flask/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/flask/compare/3.1.0...3.1.1)

---
updated-dependencies:
- dependency-name: flask
  dependency-version: 3.1.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-13 20:26:33 +00:00
dependabot[bot]
f52bc35465 chore(deps): bump flask from 3.1.0 to 3.1.1 in /tests/apps/multi
Bumps [flask](https://github.com/pallets/flask) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/pallets/flask/releases)
- [Changelog](https://github.com/pallets/flask/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/flask/compare/3.1.0...3.1.1)

---
updated-dependencies:
- dependency-name: flask
  dependency-version: 3.1.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-13 20:26:32 +00:00
Stefan Wrobel
82d1264634 Remove duplicate hostname plugin 2025-05-09 15:33:35 -07:00
dependabot[bot]
61cfdc4a55 chore(deps): bump rack from 2.2.13 to 2.2.14 in /tests/apps/ruby
Bumps [rack](https://github.com/rack/rack) from 2.2.13 to 2.2.14.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v2.2.13...v2.2.14)

---
updated-dependencies:
- dependency-name: rack
  dependency-version: 2.2.14
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-08 19:25:44 +00:00
dependabot[bot]
3cfbe4aa83 chore(deps): bump node in /tests/apps/dockerfile-noexpose
Bumps node from 23-alpine to 24-alpine.

---
updated-dependencies:
- dependency-name: node
  dependency-version: 24-alpine
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-07 14:36:44 +00:00
dependabot[bot]
842c801b46 chore(deps): bump node in /tests/apps/dockerfile-app-json-formations
Bumps node from 23-alpine to 24-alpine.

---
updated-dependencies:
- dependency-name: node
  dependency-version: 24-alpine
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-07 14:28:34 +00:00
dependabot[bot]
ca7332957a chore(deps): bump node in /tests/apps/dockerfile
Bumps node from 23-alpine to 24-alpine.

---
updated-dependencies:
- dependency-name: node
  dependency-version: 24-alpine
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-07 14:21:24 +00:00
dependabot[bot]
09024baefe chore(deps): bump golang in /tests/apps/zombies-dockerfile-tini
Bumps golang from 1.24.2 to 1.24.3.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-07 14:03:10 +00:00
dependabot[bot]
2824665652 chore(deps): bump golang in /tests/apps/zombies-dockerfile-no-tini
Bumps golang from 1.24.2 to 1.24.3.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-07 14:02:34 +00:00
dependabot[bot]
611c35110e chore(deps): bump node in /tests/apps/dockerfile-procfile
Bumps node from 23-alpine to 24-alpine.

---
updated-dependencies:
- dependency-name: node
  dependency-version: 24-alpine
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-07 13:37:28 +00:00
dependabot[bot]
14c74db96f chore(deps): bump golang in /tests/apps/go-fail-predeploy
Bumps golang from 1.24.2 to 1.24.3.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-07 13:17:21 +00:00
dependabot[bot]
f2f6618177 chore(deps): bump golang from 1.24.2 to 1.24.3 in /tests/apps/gogrpc
Bumps golang from 1.24.2 to 1.24.3.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-07 13:12:18 +00:00
dependabot[bot]
3ee983b98b chore(deps): bump node in /tests/apps/dockerfile-procfile-bad
Bumps node from 23-alpine to 24-alpine.

---
updated-dependencies:
- dependency-name: node
  dependency-version: 24-alpine
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-07 13:09:15 +00:00
dependabot[bot]
4a477c7dd5 chore(deps): bump golang in /tests/apps/go-fail-postdeploy
Bumps golang from 1.24.2 to 1.24.3.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-07 13:05:29 +00:00
dependabot[bot]
b0b4bdc74e chore(deps): bump traefik from 3.3.5 to 3.4.0 in /plugins/traefik-vhosts
Bumps traefik from 3.3.5 to 3.4.0.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: 3.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-06 13:55:40 +00:00
Jose Diaz-Gonzalez
7fae00435b Merge pull request #7688 from dokku/dependabot/pip/docs/_build/pymdown-extensions-10.15
chore(deps): bump pymdown-extensions from 10.14.3 to 10.15 in /docs/_build
2025-04-28 23:46:40 -04:00
Jose Diaz-Gonzalez
870a5b4095 Merge pull request #7689 from dokku/dependabot/pip/docs/_build/importlib-metadata-8.7.0
chore(deps): bump importlib-metadata from 8.6.1 to 8.7.0 in /docs/_build
2025-04-28 23:46:34 -04:00
Jose Diaz-Gonzalez
7ecbc27ea3 Merge pull request #7687 from d9i/apps-json-docs-fix
Fix cron key in app.json docs
2025-04-28 23:45:51 -04:00
dependabot[bot]
ee6945525e chore(deps): bump importlib-metadata from 8.6.1 to 8.7.0 in /docs/_build
Bumps [importlib-metadata](https://github.com/python/importlib_metadata) from 8.6.1 to 8.7.0.
- [Release notes](https://github.com/python/importlib_metadata/releases)
- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)
- [Commits](https://github.com/python/importlib_metadata/compare/v8.6.1...v8.7.0)

---
updated-dependencies:
- dependency-name: importlib-metadata
  dependency-version: 8.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-28 14:19:19 +00:00
dependabot[bot]
5f241919a3 chore(deps): bump pymdown-extensions in /docs/_build
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.14.3 to 10.15.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.14.3...10.15)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-version: '10.15'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-28 14:17:26 +00:00
Dara Kharabi
fe3ef4e1f6 add correct cron key in docs 2025-04-27 14:49:02 -04:00
Jose Diaz-Gonzalez
523759e650 Merge pull request #7686 from dokku/josegonzalez-patch-1
Untap aws/tap to correct issues in formula release
2025-04-26 16:54:14 -04:00
Jose Diaz-Gonzalez
b7c7dd5b91 fix: untap aws/tap to correct issues in formula release 2025-04-26 16:54:00 -04:00
Jose Diaz-Gonzalez
5db8b32021 Merge pull request #7671 from dokku/dependabot/go_modules/tests/apps/gogrpc/golang.org/x/net-0.38.0
chore(deps): bump golang.org/x/net from 0.36.0 to 0.38.0 in /tests/apps/gogrpc
2025-04-26 16:52:38 -04:00
dependabot[bot]
1485ef7e2d chore(deps): bump golang.org/x/net in /tests/apps/gogrpc
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.36.0 to 0.38.0.
- [Commits](https://github.com/golang/net/compare/v0.36.0...v0.38.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.38.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-26 18:45:18 +00:00
dependabot[bot]
f100477484 chore(deps): bump helm.sh/helm/v3 in /plugins/scheduler-k3s
Bumps [helm.sh/helm/v3](https://github.com/helm/helm) from 3.14.2 to 3.17.3.
- [Release notes](https://github.com/helm/helm/releases)
- [Commits](https://github.com/helm/helm/compare/v3.14.2...v3.17.3)

---
updated-dependencies:
- dependency-name: helm.sh/helm/v3
  dependency-version: 3.17.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-26 18:45:10 +00:00
Jose Diaz-Gonzalez
b210e4bc35 Merge pull request #7681 from dokku/dependabot/go_modules/tests/apps/gogrpc/google.golang.org/grpc-1.72.0
chore(deps): bump google.golang.org/grpc from 1.71.1 to 1.72.0 in /tests/apps/gogrpc
2025-04-26 14:44:12 -04:00
Jose Diaz-Gonzalez
f14c67f247 Merge pull request #7679 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/traefik/traefik/v2-2.11.24
chore(deps): bump github.com/traefik/traefik/v2 from 2.11.15 to 2.11.24 in /plugins/scheduler-k3s
2025-04-26 14:43:47 -04:00
Jose Diaz-Gonzalez
4f8cd30a21 Merge pull request #7680 from dokku/dependabot/pip/docs/_build/soupsieve-2.7
chore(deps): bump soupsieve from 2.6 to 2.7 in /docs/_build
2025-04-26 14:43:21 -04:00
Jose Diaz-Gonzalez
ab671132f9 Merge pull request #7682 from dokku/dependabot/pip/docs/_build/packaging-25.0
chore(deps): bump packaging from 24.2 to 25.0 in /docs/_build
2025-04-26 14:43:08 -04:00
dependabot[bot]
013b2b62d7 chore(deps): bump packaging from 24.2 to 25.0 in /docs/_build
Bumps [packaging](https://github.com/pypa/packaging) from 24.2 to 25.0.
- [Release notes](https://github.com/pypa/packaging/releases)
- [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pypa/packaging/compare/24.2...25.0)

---
updated-dependencies:
- dependency-name: packaging
  dependency-version: '25.0'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-21 14:01:17 +00:00
dependabot[bot]
8c19fcf54a chore(deps): bump google.golang.org/grpc in /tests/apps/gogrpc
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.71.1 to 1.72.0.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.71.1...v1.72.0)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.72.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-21 13:57:57 +00:00
dependabot[bot]
5d111795b5 chore(deps): bump soupsieve from 2.6 to 2.7 in /docs/_build
Bumps [soupsieve](https://github.com/facelessuser/soupsieve) from 2.6 to 2.7.
- [Release notes](https://github.com/facelessuser/soupsieve/releases)
- [Commits](https://github.com/facelessuser/soupsieve/compare/2.6...2.7)

---
updated-dependencies:
- dependency-name: soupsieve
  dependency-version: '2.7'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-21 13:57:16 +00:00
dependabot[bot]
7decbc7e6c chore(deps): bump github.com/traefik/traefik/v2
Bumps [github.com/traefik/traefik/v2](https://github.com/traefik/traefik) from 2.11.15 to 2.11.24.
- [Release notes](https://github.com/traefik/traefik/releases)
- [Changelog](https://github.com/traefik/traefik/blob/v2.11.24/CHANGELOG.md)
- [Commits](https://github.com/traefik/traefik/compare/v2.11.15...v2.11.24)

---
updated-dependencies:
- dependency-name: github.com/traefik/traefik/v2
  dependency-version: 2.11.24
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-18 19:34:26 +00:00
Jose Diaz-Gonzalez
ea26b9ba4a Merge pull request #7673 from dokku/dependabot/go_modules/plugins/common/golang.org/x/net-0.38.0
chore(deps): bump golang.org/x/net from 0.37.0 to 0.38.0 in /plugins/common
2025-04-18 00:27:06 -04:00
Jose Diaz-Gonzalez
d2abbb002a Merge pull request #7678 from dokku/revert-7669-josegonzalez-patch-1
Revert "fix: update CID count in ps tests"
2025-04-17 23:50:56 -04:00
Jose Diaz-Gonzalez
b4c3c6fb71 Revert "fix: update CID count in ps tests" 2025-04-17 23:50:36 -04:00
Jose Diaz-Gonzalez
6f9f65bf4d chore: bump go modules 2025-04-17 23:20:27 -04:00
dependabot[bot]
9bd20715f9 chore(deps): bump golang.org/x/net in /plugins/common
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.37.0 to 0.38.0.
- [Commits](https://github.com/golang/net/compare/v0.37.0...v0.38.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.38.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-17 23:18:44 -04:00
Jose Diaz-Gonzalez
5aa81a3461 Merge pull request #7675 from dokku/dependabot/docker/plugins/haproxy-vhosts/byjg/easy-haproxy-4.5.0
chore(deps): bump byjg/easy-haproxy from 4.4.0 to 4.5.0 in /plugins/haproxy-vhosts
2025-04-17 23:17:47 -04:00
Jose Diaz-Gonzalez
b236e4c97b Merge pull request #7676 from dokku/dependabot/pip/docs/_build/mkdocs-material-9.6.12
chore(deps): bump mkdocs-material from 9.6.11 to 9.6.12 in /docs/_build
2025-04-17 23:17:21 -04:00
Jose Diaz-Gonzalez
8627439479 Merge pull request #7677 from plafue/woodpecker-ci-deployment-docs
Add continuous integration example for woodpecker ci
2025-04-17 18:05:25 -04:00
plafü
2b531fdbb2 docs: add continuous integration example with woodpecker ci 2025-04-17 16:04:34 +02:00
dependabot[bot]
7048164e25 chore(deps): bump mkdocs-material from 9.6.11 to 9.6.12 in /docs/_build
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.6.11 to 9.6.12.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.11...9.6.12)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-version: 9.6.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-17 13:59:51 +00:00
dependabot[bot]
5d79c895f8 chore(deps): bump byjg/easy-haproxy in /plugins/haproxy-vhosts
Bumps byjg/easy-haproxy from 4.4.0 to 4.5.0.

---
updated-dependencies:
- dependency-name: byjg/easy-haproxy
  dependency-version: 4.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-17 13:10:48 +00:00
Dokku Bot
5d822fd8a9 Release 0.35.18
# History

## 0.35.18

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.35.18/bootstrap.sh
sudo DOKKU_TAG=v0.35.18 bash bootstrap.sh
```

### Bug Fixes

- #7669: @josegonzalez fix: update CID count in ps tests

### Dependencies

- #7668: @dependabot[bot] chore(deps): bump timberio/vector from 0.43.1-debian to 0.46.1-debian in /plugins/logs
- #7670: @dependabot[bot] chore(deps): bump beautifulsoup4 from 4.13.3 to 4.13.4 in /docs/_build
- #7630: @dependabot[bot] chore(deps): bump express from 4.21.2 to 5.1.0 in /tests/apps/gitsubmodules
- #7666: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.36.0 to 0.37.0 in /plugins/common
- #7618: @dependabot[bot] chore(deps): bump express from 4.21.2 to 5.1.0 in /tests/apps/.websocket.disabled
- #7620: @dependabot[bot] chore(deps): bump express from 4.21.2 to 5.1.0 in /tests/apps/dockerfile-procfile-bad
- #7622: @dependabot[bot] chore(deps): bump express from 4.21.2 to 5.1.0 in /tests/apps/dockerfile-procfile
- #7629: @dependabot[bot] chore(deps): bump express from 5.0.1 to 5.1.0 in /tests/apps/checks-root
- #7623: @dependabot[bot] chore(deps): bump express from 4.21.2 to 5.1.0 in /tests/apps/dockerfile-noexpose
- #7627: @dependabot[bot] chore(deps): bump express from 4.21.2 to 5.1.0 in /tests/apps/nodejs-express-noprocfile
- #7631: @dependabot[bot] chore(deps): bump express from 4.21.2 to 5.1.0 in /tests/apps/dockerfile-app-json-formations
- #7667: @dependabot[bot] chore(deps): bump ruby from 3.4.2 to 3.4.3 in /tests/apps/dockerfile-entrypoint

### Other

- #7661: @josegonzalez chore: bump dokku-event-listener from 0.17.0 to 0.17.2
- #7660: @josegonzalez chore: bump plugn from 0.15.3 to 0.16.0
- #7659: @josegonzalez chore: bump gliderlabs-sigil from 0.11.0 to 0.11.4
- #7656: @josegonzalez chore: bump netrc from 0.10.0 to 0.10.2
- #7655: @josegonzalez chore: bump lambda-builder from 0.8.0 to 0.9.1
- #7663: @josegonzalez chore: bump herokuish from 0.10.2 to 0.10.3
- #7662: @josegonzalez chore: bump dokku-update from 0.9.4 to 0.9.6
- #7658: @josegonzalez chore: bump sshcommand from 0.19.0 to 0.20.0
- #7657: @josegonzalez chore: bump procfile-util from 0.19.0 to 0.20.3
- #7654: @josegonzalez chore: bump docker-image-builder from 0.8.0 to 0.8.1
- #7653: @josegonzalez chore: bump docker-container-healthchecker from 0.11.0 to 0.11.5
2025-04-16 21:08:15 +00:00
dependabot[bot]
2e070e63b7 chore(deps): bump express from 4.21.2 to 5.1.0 in /tests/apps/dockerfile
Bumps [express](https://github.com/expressjs/express) from 4.21.2 to 5.1.0.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.21.2...v5.1.0)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-16 15:46:22 +00:00
Jose Diaz-Gonzalez
9e7a34e950 Merge pull request #7668 from dokku/dependabot/docker/plugins/logs/timberio/vector-0.46.1-debian
chore(deps): bump timberio/vector from 0.43.1-debian to 0.46.1-debian in /plugins/logs
2025-04-16 11:45:15 -04:00
Jose Diaz-Gonzalez
bb17d06f22 Merge pull request #7670 from dokku/dependabot/pip/docs/_build/beautifulsoup4-4.13.4
chore(deps): bump beautifulsoup4 from 4.13.3 to 4.13.4 in /docs/_build
2025-04-16 11:43:45 -04:00
Jose Diaz-Gonzalez
41c86ac8b6 Merge pull request #7669 from dokku/josegonzalez-patch-1
fix: update CID count in ps tests
2025-04-16 11:43:28 -04:00
dependabot[bot]
9aba7a35be chore(deps): bump beautifulsoup4 from 4.13.3 to 4.13.4 in /docs/_build
Bumps [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) from 4.13.3 to 4.13.4.

---
updated-dependencies:
- dependency-name: beautifulsoup4
  dependency-version: 4.13.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-16 13:27:44 +00:00
Jose Diaz-Gonzalez
0b817f0313 fix: update CID count in ps tests
Docker updated the output of inspect so now it's there 6 times, not 7.
2025-04-15 22:35:35 -04:00
Jose Diaz-Gonzalez
eb20fff0ac Merge pull request #7630 from dokku/dependabot/npm_and_yarn/tests/apps/gitsubmodules/express-5.1.0
chore(deps): bump express from 4.21.2 to 5.1.0 in /tests/apps/gitsubmodules
2025-04-15 20:49:51 -04:00
Jose Diaz-Gonzalez
7975c05395 Merge pull request #7666 from dokku/dependabot/go_modules/plugins/common/golang.org/x/crypto-0.37.0
chore(deps): bump golang.org/x/crypto from 0.36.0 to 0.37.0 in /plugins/common
2025-04-15 20:47:35 -04:00
Jose Diaz-Gonzalez
1b65295161 Merge pull request #7618 from dokku/dependabot/npm_and_yarn/tests/apps/dot-websocket.disabled/express-5.1.0
chore(deps): bump express from 4.21.2 to 5.1.0 in /tests/apps/.websocket.disabled
2025-04-15 20:31:50 -04:00
Jose Diaz-Gonzalez
9525db0f35 Merge pull request #7620 from dokku/dependabot/npm_and_yarn/tests/apps/dockerfile-procfile-bad/express-5.1.0
chore(deps): bump express from 4.21.2 to 5.1.0 in /tests/apps/dockerfile-procfile-bad
2025-04-15 20:31:42 -04:00
Jose Diaz-Gonzalez
d40e28e340 Merge pull request #7622 from dokku/dependabot/npm_and_yarn/tests/apps/dockerfile-procfile/express-5.1.0
chore(deps): bump express from 4.21.2 to 5.1.0 in /tests/apps/dockerfile-procfile
2025-04-15 20:31:19 -04:00
Jose Diaz-Gonzalez
c288001abf Merge pull request #7629 from dokku/dependabot/npm_and_yarn/tests/apps/checks-root/express-5.1.0
chore(deps): bump express from 5.0.1 to 5.1.0 in /tests/apps/checks-root
2025-04-15 20:30:50 -04:00
Jose Diaz-Gonzalez
03b0239538 Merge pull request #7623 from dokku/dependabot/npm_and_yarn/tests/apps/dockerfile-noexpose/express-5.1.0
chore(deps): bump express from 4.21.2 to 5.1.0 in /tests/apps/dockerfile-noexpose
2025-04-15 19:26:38 -04:00
Jose Diaz-Gonzalez
dfff84a92c Merge pull request #7627 from dokku/dependabot/npm_and_yarn/tests/apps/nodejs-express-noprocfile/express-5.1.0
chore(deps): bump express from 4.21.2 to 5.1.0 in /tests/apps/nodejs-express-noprocfile
2025-04-15 19:26:04 -04:00
Jose Diaz-Gonzalez
fa4ea016b9 Merge pull request #7631 from dokku/dependabot/npm_and_yarn/tests/apps/dockerfile-app-json-formations/express-5.1.0
chore(deps): bump express from 4.21.2 to 5.1.0 in /tests/apps/dockerfile-app-json-formations
2025-04-15 19:25:13 -04:00
Jose Diaz-Gonzalez
cb5bba1c14 chore: bump go modules 2025-04-15 19:24:53 -04:00
dependabot[bot]
bb0dd6e358 chore(deps): bump golang.org/x/crypto in /plugins/common
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.36.0 to 0.37.0.
- [Commits](https://github.com/golang/crypto/compare/v0.36.0...v0.37.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.37.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-15 19:23:41 -04:00
Jose Diaz-Gonzalez
1234c49d13 Merge pull request #7667 from dokku/dependabot/docker/tests/apps/dockerfile-entrypoint/ruby-3.4.3
chore(deps): bump ruby from 3.4.2 to 3.4.3 in /tests/apps/dockerfile-entrypoint
2025-04-15 19:22:59 -04:00
Jose Diaz-Gonzalez
d3e6057d92 Merge pull request #7661 from dokku/josegonzalez-patch-6-2
chore: bump dokku-event-listener from 0.17.0 to 0.17.2
2025-04-15 19:22:38 -04:00
Jose Diaz-Gonzalez
66922986a2 Merge pull request #7660 from dokku/josegonzalez-patch-6-1
chore: bump plugn from 0.15.3 to 0.16.0
2025-04-15 16:46:45 -04:00
Jose Diaz-Gonzalez
04d8a37e55 Merge pull request #7659 from dokku/josegonzalez-patch-6
chore: bump gliderlabs-sigil from 0.11.0 to 0.11.4
2025-04-15 16:46:38 -04:00
Jose Diaz-Gonzalez
21796aea67 Merge pull request #7656 from dokku/josegonzalez-patch-3
chore: bump netrc from 0.10.0 to 0.10.2
2025-04-15 16:46:29 -04:00
Jose Diaz-Gonzalez
c327239c1a Merge pull request #7655 from dokku/josegonzalez-patch-2-1
chore: bump lambda-builder from 0.8.0 to 0.9.1
2025-04-15 16:46:23 -04:00
Jose Diaz-Gonzalez
13f8b029aa Merge pull request #7663 from dokku/josegonzalez-patch-8
chore: bump herokuish from 0.10.2 to 0.10.3
2025-04-15 16:33:04 -04:00
Jose Diaz-Gonzalez
45f52b7a54 Merge pull request #7662 from dokku/josegonzalez-patch-7
chore: bump dokku-update from 0.9.4 to 0.9.6
2025-04-15 16:32:56 -04:00
Jose Diaz-Gonzalez
57ea516f86 Merge pull request #7658 from dokku/josegonzalez-patch-5
chore: bump sshcommand from 0.19.0 to 0.20.0
2025-04-15 16:32:24 -04:00
Jose Diaz-Gonzalez
f89e73dc19 Merge pull request #7657 from dokku/josegonzalez-patch-4
chore: bump procfile-util from 0.19.0 to 0.20.3
2025-04-15 16:32:14 -04:00
Jose Diaz-Gonzalez
d58292fc73 Merge pull request #7654 from dokku/josegonzalez-patch-2
chore: bump docker-image-builder from 0.8.0 to 0.8.1
2025-04-15 16:31:44 -04:00
Jose Diaz-Gonzalez
8cd5b372cf Merge pull request #7653 from dokku/josegonzalez-patch-1
chore: bump docker-container-healthchecker from 0.11.0 to 0.11.5
2025-04-15 16:31:34 -04:00
dependabot[bot]
f02fd40538 chore(deps): bump timberio/vector in /plugins/logs
Bumps timberio/vector from 0.43.1-debian to 0.46.1-debian.

---
updated-dependencies:
- dependency-name: timberio/vector
  dependency-version: 0.46.1-debian
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-15 14:08:17 +00:00
dependabot[bot]
0aa7f0297f chore(deps): bump ruby in /tests/apps/dockerfile-entrypoint
Bumps ruby from 3.4.2 to 3.4.3.

---
updated-dependencies:
- dependency-name: ruby
  dependency-version: 3.4.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-15 13:56:29 +00:00
Jose Diaz-Gonzalez
f23e269bd8 chore: bump herokuish from 0.10.2 to 0.10.3 2025-04-15 04:32:42 -04:00
Jose Diaz-Gonzalez
98968e0eaf chore: bump dokku-update from 0.9.4 to 0.9.6 2025-04-15 04:32:04 -04:00
Jose Diaz-Gonzalez
7b172f6bbd chore: bump dokku-event-listener from 0.17.0 to 0.17.2 2025-04-15 04:31:21 -04:00
Jose Diaz-Gonzalez
12b340d7c5 chore: bump plugn from 0.15.3 to 0.16.0 2025-04-15 04:30:50 -04:00
Jose Diaz-Gonzalez
5b166271d3 chore: bump gliderlabs-sigil from 0.11.0 to 0.11.4 2025-04-15 04:29:04 -04:00
Jose Diaz-Gonzalez
1e6075037f chore: bump sshcommand from 0.19.0 to 0.20.0 2025-04-15 04:28:27 -04:00
Jose Diaz-Gonzalez
e057d7d5b0 chore: bump procfile-util from 0.19.0 to 0.20.3 2025-04-15 04:27:43 -04:00
Jose Diaz-Gonzalez
84a8de4574 chore: bump netrc from 0.10.0 to 0.10.2 2025-04-15 04:27:01 -04:00
Jose Diaz-Gonzalez
739caf0b8c chore: bump lambda-builder from 0.8.0 to 0.9.1 2025-04-15 04:25:54 -04:00
Jose Diaz-Gonzalez
c917bbdcae chore: bump docker-container healthchecker from 0.8.0 to 0.8.1 2025-04-15 04:24:46 -04:00
Jose Diaz-Gonzalez
5c1e61ccbb chore: bump docker-container healthchecker from 0.11.0 to 0.11.5 2025-04-15 04:23:42 -04:00
Dokku Bot
d2e138864a Release 0.35.17
# History

## 0.35.17

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.35.17/bootstrap.sh
sudo DOKKU_TAG=v0.35.17 bash bootstrap.sh
```

### Bug Fixes

- #7606: @josegonzalez fix: bump dokku version in main.bicep when bumping azure versions
- #7650: @josegonzalez fix: set the correct default ingress class for k3s clusters
- #7649: @josegonzalez fix: decrease default in-use keda resources
- #7587: @turicas Correctly name paketo chown option
- #7584: @josegonzalez Install all builder binaries in Dokku docker image
- #7580: @josegonzalez Do not set network flag when building dockerfile images
- #7575: @josegonzalez Restore the git head ref when running repo:gc
- #7574: @josegonzalez fix: do not write VHOST file if the DOKKU_ROOT directory does not exist

### New Features

- #7648: @josegonzalez feat: add ability to ship k3s container logs via vector
- #7581: @josegonzalez Allow --volume flags to be passed to pack at buildtime
- #7583: @josegonzalez Send Host header when running container checks in docker-local
- #7572: @josegonzalez Add support for setting shm-size for kubernetes deployments

### Documentation

- #7652: @josegonzalez docs: use a cid-file in the plugin example
- #7647: @closeobserve Fix some golang docblock comments
- #7586: @turicas Remove `--` from `--git-url` in plugin installation docs

### Dependencies

- #7603: @dependabot[bot] chore(deps): bump org.eclipse.jetty:jetty-servlet from 11.0.24 to 11.0.25 in /tests/apps/java
- #7641: @dependabot[bot] chore(deps): bump golang.org/x/sync from 0.12.0 to 0.13.0 in /plugins/scheduler-docker-local
- #7639: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.36.2 to 1.37.0 in /plugins/common
- #7646: @dependabot[bot] chore(deps): bump phusion/baseimage from noble-1.0.0 to noble-1.0.2
- #7610: @dependabot[bot] chore(deps): bump google.golang.org/protobuf from 1.36.5 to 1.36.6 in /tests/apps/gogrpc
- #7619: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.71.0 to 1.71.1 in /tests/apps/gogrpc
- #7624: @dependabot[bot] chore(deps): bump traefik from 3.3.4 to 3.3.5 in /plugins/traefik-vhosts
- #7632: @dependabot[bot] chore(deps): bump golang from 1.24.1 to 1.24.2 in /tests/apps/go-fail-postdeploy
- #7633: @dependabot[bot] chore(deps): bump golang from 1.24.1 to 1.24.2 in /tests/apps/zombies-dockerfile-tini
- #7634: @dependabot[bot] chore(deps): bump golang from 1.24.1 to 1.24.2 in /tests/apps/go-fail-predeploy
- #7643: @dependabot[bot] chore(deps): bump python from 3.13.2-bookworm to 3.13.3-bookworm in /tests/apps/dockerfile-release
- #7635: @dependabot[bot] chore(deps): bump golang from 1.24.1 to 1.24.2 in /tests/apps/gogrpc
- #7636: @dependabot[bot] chore(deps): bump golang from 1.24.1 to 1.24.2 in /tests/apps/zombies-dockerfile-no-tini
- #7613: @dependabot[bot] chore(deps): bump pyparsing from 3.2.1 to 3.2.3 in /docs/_build
- #7625: @dependabot[bot] chore(deps): bump mkdocs-material from 9.6.8 to 9.6.11 in /docs/_build
- #7644: @dependabot[bot] chore(deps): bump python from 3.13.2-alpine to 3.13.3-alpine in /docs/_build
- #7651: @dependabot[bot] chore(deps): update markdown requirement from <3.8,>=3.2.1 to >=3.2.1,<3.9 in /docs/_build
- #7595: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 45.0.7 to 45.0.8
- #7593: @dependabot[bot] chore(deps): bump mkdocs-material from 9.6.7 to 9.6.8 in /docs/_build
- #7589: @dependabot[bot] chore(deps): bump golang.org/x/net from 0.34.0 to 0.36.0 in /tests/apps/gogrpc
- #7588: @dependabot[bot] chore(deps): bump rack from 2.2.12 to 2.2.13 in /tests/apps/ruby
- #7570: @dependabot[bot] chore(deps): bump mvdan.cc/sh/v3 from 3.10.0 to 3.11.0 in /plugins/cron
- #7569: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.35.0 to 0.36.0 in /plugins/common
- #7568: @dependabot[bot] chore(deps): bump jinja2 from 3.1.5 to 3.1.6 in /docs/_build

### Other

- #7601: @dependabot[bot] chore(deps): bump github.com/expr-lang/expr from 1.15.8 to 1.17.0 in /plugins/scheduler-k3s
- #7602: @dependabot[bot] chore(deps): bump github.com/containerd/containerd from 1.7.20 to 1.7.27 in /plugins/scheduler-k3s
- #7637: @dependabot[bot] chore(deps): bump django from 5.0.13 to 5.0.14 in /tests/apps/dockerfile-release
- #7607: @dependabot[bot] chore(deps): bump gunicorn from 22.0.0 to 23.0.0 in /tests/apps/dockerfile-release
- #7596: @josegonzalez Drop compromisde tj-actions/changed-files from Ci
- #7582: @josegonzalez Add ability to disable vhosts for all apps
- #7576: @josegonzalez fix: properly handle NoAppsExist in network:rebuild-all and buildpacks:set
- #7571: @dependabot[bot] chore(deps): bump django from 5.0.11 to 5.0.13 in /tests/apps/dockerfile-release
2025-04-14 18:48:11 +00:00
Jose Diaz-Gonzalez
791d037220 Merge pull request #7603 from dokku/dependabot/maven/tests/apps/java/org.eclipse.jetty-jetty-servlet-11.0.25
chore(deps): bump org.eclipse.jetty:jetty-servlet from 11.0.24 to 11.0.25 in /tests/apps/java
2025-04-14 14:42:15 -04:00
Jose Diaz-Gonzalez
cab578f7ef Merge pull request #7601 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/expr-lang/expr-1.17.0
chore(deps): bump github.com/expr-lang/expr from 1.15.8 to 1.17.0 in /plugins/scheduler-k3s
2025-04-14 14:11:46 -04:00
Jose Diaz-Gonzalez
59ab1bac26 Merge pull request #7602 from dokku/dependabot/go_modules/plugins/scheduler-k3s/github.com/containerd/containerd-1.7.27
chore(deps): bump github.com/containerd/containerd from 1.7.20 to 1.7.27 in /plugins/scheduler-k3s
2025-04-14 14:11:34 -04:00
Jose Diaz-Gonzalez
cfdcb037f6 Merge pull request #7606 from dokku/fix-azure-bump
fix: bump dokku version in main.bicep when bumping azure versions
2025-04-14 14:10:58 -04:00
Jose Diaz-Gonzalez
7466e7452f Merge pull request #7652 from dokku/cid-file
docs: use a cid-file in the plugin example
2025-04-14 14:10:41 -04:00
Jose Diaz-Gonzalez
701b0cdb86 docs: use a cid-file in the plugin example 2025-04-14 14:10:22 -04:00
Jose Diaz-Gonzalez
4743814033 Merge pull request #7641 from dokku/dependabot/go_modules/plugins/scheduler-docker-local/golang.org/x/sync-0.13.0
chore(deps): bump golang.org/x/sync from 0.12.0 to 0.13.0 in /plugins/scheduler-docker-local
2025-04-14 14:09:31 -04:00
Jose Diaz-Gonzalez
b36d4d3821 chore: bump go modules 2025-04-14 12:47:42 -04:00
dependabot[bot]
9ec97dab68 chore(deps): bump golang.org/x/sync in /plugins/scheduler-docker-local
Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.12.0 to 0.13.0.
- [Commits](https://github.com/golang/sync/compare/v0.12.0...v0.13.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sync
  dependency-version: 0.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 12:47:13 -04:00
Jose Diaz-Gonzalez
874a9b1dd1 Merge pull request #7639 from dokku/dependabot/go_modules/plugins/common/github.com/onsi/gomega-1.37.0
chore(deps): bump github.com/onsi/gomega from 1.36.2 to 1.37.0 in /plugins/common
2025-04-14 12:44:00 -04:00
Jose Diaz-Gonzalez
4f6450eef9 chore: bump go modules 2025-04-14 11:33:26 -04:00
dependabot[bot]
995bd926ab chore(deps): bump github.com/onsi/gomega in /plugins/common
Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.36.2 to 1.37.0.
- [Release notes](https://github.com/onsi/gomega/releases)
- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/onsi/gomega/compare/v1.36.2...v1.37.0)

---
updated-dependencies:
- dependency-name: github.com/onsi/gomega
  dependency-version: 1.37.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 11:30:19 -04:00
Jose Diaz-Gonzalez
7fe6be5052 Merge pull request #7646 from dokku/dependabot/docker/phusion/baseimage-noble-1.0.2
chore(deps): bump phusion/baseimage from noble-1.0.0 to noble-1.0.2
2025-04-14 11:25:14 -04:00
Jose Diaz-Gonzalez
8cb2301501 Merge pull request #7610 from dokku/dependabot/go_modules/tests/apps/gogrpc/google.golang.org/protobuf-1.36.6
chore(deps): bump google.golang.org/protobuf from 1.36.5 to 1.36.6 in /tests/apps/gogrpc
2025-04-14 11:24:46 -04:00
Jose Diaz-Gonzalez
ec32883e46 Merge pull request #7619 from dokku/dependabot/go_modules/tests/apps/gogrpc/google.golang.org/grpc-1.71.1
chore(deps): bump google.golang.org/grpc from 1.71.0 to 1.71.1 in /tests/apps/gogrpc
2025-04-14 11:24:04 -04:00
dependabot[bot]
c8d0dc6ba2 chore(deps): bump express in /tests/apps/dockerfile-app-json-formations
Bumps [express](https://github.com/expressjs/express) from 4.21.2 to 5.1.0.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.21.2...v5.1.0)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 15:23:58 +00:00
Jose Diaz-Gonzalez
84e895c56d Merge pull request #7624 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-3.3.5
chore(deps): bump traefik from 3.3.4 to 3.3.5 in /plugins/traefik-vhosts
2025-04-14 11:23:13 -04:00
Jose Diaz-Gonzalez
e8e7caa0d1 Merge pull request #7632 from dokku/dependabot/docker/tests/apps/go-fail-postdeploy/golang-1.24.2
chore(deps): bump golang from 1.24.1 to 1.24.2 in /tests/apps/go-fail-postdeploy
2025-04-14 11:22:26 -04:00
Jose Diaz-Gonzalez
dbc04701b1 Merge pull request #7633 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-tini/golang-1.24.2
chore(deps): bump golang from 1.24.1 to 1.24.2 in /tests/apps/zombies-dockerfile-tini
2025-04-14 11:22:15 -04:00
Jose Diaz-Gonzalez
b37f2f36b4 Merge pull request #7634 from dokku/dependabot/docker/tests/apps/go-fail-predeploy/golang-1.24.2
chore(deps): bump golang from 1.24.1 to 1.24.2 in /tests/apps/go-fail-predeploy
2025-04-14 11:22:07 -04:00
Jose Diaz-Gonzalez
0ab96218a6 Merge pull request #7643 from dokku/dependabot/docker/tests/apps/dockerfile-release/python-3.13.3-bookworm
chore(deps): bump python from 3.13.2-bookworm to 3.13.3-bookworm in /tests/apps/dockerfile-release
2025-04-14 11:20:29 -04:00
Jose Diaz-Gonzalez
8ac5de449f Merge pull request #7635 from dokku/dependabot/docker/tests/apps/gogrpc/golang-1.24.2
chore(deps): bump golang from 1.24.1 to 1.24.2 in /tests/apps/gogrpc
2025-04-14 11:20:22 -04:00
Jose Diaz-Gonzalez
b44b55c08f Merge pull request #7636 from dokku/dependabot/docker/tests/apps/zombies-dockerfile-no-tini/golang-1.24.2
chore(deps): bump golang from 1.24.1 to 1.24.2 in /tests/apps/zombies-dockerfile-no-tini
2025-04-14 11:20:13 -04:00
Jose Diaz-Gonzalez
4aca626164 Merge pull request #7637 from dokku/dependabot/pip/tests/apps/dockerfile-release/django-5.0.14
chore(deps): bump django from 5.0.13 to 5.0.14 in /tests/apps/dockerfile-release
2025-04-14 11:20:05 -04:00
Jose Diaz-Gonzalez
961bc7e92a Merge pull request #7647 from closeobserve/master
Fix some golang docblock comments
2025-04-14 11:19:18 -04:00
Jose Diaz-Gonzalez
89e8564325 Merge pull request #7613 from dokku/dependabot/pip/docs/_build/pyparsing-3.2.3
chore(deps): bump pyparsing from 3.2.1 to 3.2.3 in /docs/_build
2025-04-14 11:18:35 -04:00
Jose Diaz-Gonzalez
d1db19a441 Merge pull request #7625 from dokku/dependabot/pip/docs/_build/mkdocs-material-9.6.11
chore(deps): bump mkdocs-material from 9.6.8 to 9.6.11 in /docs/_build
2025-04-14 11:18:27 -04:00
Jose Diaz-Gonzalez
e17733d680 Merge pull request #7644 from dokku/dependabot/docker/docs/_build/python-3.13.3-alpine
chore(deps): bump python from 3.13.2-alpine to 3.13.3-alpine in /docs/_build
2025-04-14 11:18:20 -04:00
Jose Diaz-Gonzalez
95cbe155c5 Merge pull request #7651 from dokku/dependabot/pip/docs/_build/markdown-gte-3.2.1-and-lt-3.9
chore(deps): update markdown requirement from <3.8,>=3.2.1 to >=3.2.1,<3.9 in /docs/_build
2025-04-14 11:17:30 -04:00
Jose Diaz-Gonzalez
e76aac1499 Merge pull request #7650 from dokku/k3s-default-ingress
fix: set the correct default ingress class for k3s clusters
2025-04-14 11:16:37 -04:00
Jose Diaz-Gonzalez
a5e784bfb0 Merge pull request #7649 from dokku/k3s-decrease-keda-resources
fix: decrease default in-use keda resources
2025-04-14 11:15:18 -04:00
Jose Diaz-Gonzalez
ea7de5c045 Merge pull request #7648 from dokku/k3s-vector-integration
feat: add ability to ship k3s container logs via vector
2025-04-14 11:15:05 -04:00
dependabot[bot]
5a3cd2d0c7 chore(deps): update markdown requirement in /docs/_build
Updates the requirements on [markdown](https://github.com/Python-Markdown/markdown) to permit the latest version.
- [Release notes](https://github.com/Python-Markdown/markdown/releases)
- [Changelog](https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md)
- [Commits](https://github.com/Python-Markdown/markdown/compare/3.2.1...3.8)

---
updated-dependencies:
- dependency-name: markdown
  dependency-version: '3.8'
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 13:51:55 +00:00
Jose Diaz-Gonzalez
7f27af260d fix: set the correct default ingress class for k3s clusters
This was accidentally left as traefik, but we document the correct value as nginx.
2025-04-14 04:39:33 -04:00
Jose Diaz-Gonzalez
8aea3e273a fix: decrease default in-use keda resources
Keda isn't in use by everyone, yet commands significant resources. This change makes it so a 2GB server is enough to run Dokku and a couple of small apps.
2025-04-14 04:38:06 -04:00
Jose Diaz-Gonzalez
b97e8f3601 feat: add ability to ship k3s container logs via vector
If a global vector-sink property on the logs plugin is set, we will use that to configure a log sink (defaulting to console output otherwise). Note that the actual configuration still needs to be a valid DSN representing a Vector log sink.

While this does not support pinning log sinks to specific apps, it opens up integration for those who use a single k3s cluster in shared tenancy.
2025-04-14 04:35:21 -04:00
closeobserve
9e2836fe7f chore: fix some comments
Signed-off-by: closeobserve <pingcap@yahoo.com>
2025-04-13 17:46:06 +08:00
dependabot[bot]
0e470f0fee chore(deps): bump phusion/baseimage from noble-1.0.0 to noble-1.0.2
Bumps phusion/baseimage from noble-1.0.0 to noble-1.0.2.

---
updated-dependencies:
- dependency-name: phusion/baseimage
  dependency-version: noble-1.0.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-10 13:58:33 +00:00
dependabot[bot]
17edd856d3 chore(deps): bump python in /docs/_build
Bumps python from 3.13.2-alpine to 3.13.3-alpine.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.13.3-alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-09 14:02:29 +00:00
dependabot[bot]
833a96998b chore(deps): bump python in /tests/apps/dockerfile-release
Bumps python from 3.13.2-bookworm to 3.13.3-bookworm.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.13.3-bookworm
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-09 13:45:21 +00:00
dependabot[bot]
df0dee3269 chore(deps): bump django in /tests/apps/dockerfile-release
Bumps [django](https://github.com/django/django) from 5.0.13 to 5.0.14.
- [Commits](https://github.com/django/django/compare/5.0.13...5.0.14)

---
updated-dependencies:
- dependency-name: django
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-02 20:21:30 +00:00
dependabot[bot]
672027dc7e chore(deps): bump golang in /tests/apps/zombies-dockerfile-no-tini
Bumps golang from 1.24.1 to 1.24.2.

---
updated-dependencies:
- dependency-name: golang
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-02 14:12:34 +00:00
dependabot[bot]
cf953a0147 chore(deps): bump golang from 1.24.1 to 1.24.2 in /tests/apps/gogrpc
Bumps golang from 1.24.1 to 1.24.2.

---
updated-dependencies:
- dependency-name: golang
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-02 13:32:16 +00:00
dependabot[bot]
f1525b7cd9 chore(deps): bump golang in /tests/apps/go-fail-predeploy
Bumps golang from 1.24.1 to 1.24.2.

---
updated-dependencies:
- dependency-name: golang
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-02 13:26:33 +00:00
dependabot[bot]
55f395b593 chore(deps): bump golang in /tests/apps/zombies-dockerfile-tini
Bumps golang from 1.24.1 to 1.24.2.

---
updated-dependencies:
- dependency-name: golang
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-02 13:26:22 +00:00
dependabot[bot]
7d5ff0910f chore(deps): bump golang in /tests/apps/go-fail-postdeploy
Bumps golang from 1.24.1 to 1.24.2.

---
updated-dependencies:
- dependency-name: golang
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-02 13:07:01 +00:00
dependabot[bot]
92005c0fdb chore(deps): bump express in /tests/apps/gitsubmodules
Bumps [express](https://github.com/expressjs/express) from 4.21.2 to 5.1.0.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.21.2...v5.1.0)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-01 14:53:07 +00:00
dependabot[bot]
b982612903 chore(deps): bump express from 5.0.1 to 5.1.0 in /tests/apps/checks-root
Bumps [express](https://github.com/expressjs/express) from 5.0.1 to 5.1.0.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/5.0.1...v5.1.0)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-01 14:28:38 +00:00
dependabot[bot]
86386450f0 chore(deps): bump express in /tests/apps/nodejs-express-noprocfile
Bumps [express](https://github.com/expressjs/express) from 4.21.2 to 5.1.0.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.21.2...v5.1.0)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-01 13:55:16 +00:00
dependabot[bot]
6c979f7c2d chore(deps): bump mkdocs-material from 9.6.8 to 9.6.11 in /docs/_build
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.6.8 to 9.6.11.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.8...9.6.11)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-01 13:48:01 +00:00
dependabot[bot]
7d221552ee chore(deps): bump traefik from 3.3.4 to 3.3.5 in /plugins/traefik-vhosts
Bumps traefik from 3.3.4 to 3.3.5.

---
updated-dependencies:
- dependency-name: traefik
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-01 13:44:51 +00:00
dependabot[bot]
5de1cd959a chore(deps): bump express in /tests/apps/dockerfile-noexpose
Bumps [express](https://github.com/expressjs/express) from 4.21.2 to 5.1.0.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.21.2...v5.1.0)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-01 13:39:03 +00:00
dependabot[bot]
598509e7cd chore(deps): bump express in /tests/apps/dockerfile-procfile
Bumps [express](https://github.com/expressjs/express) from 4.21.2 to 5.1.0.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.21.2...v5.1.0)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-01 13:31:31 +00:00
dependabot[bot]
41f12df14b chore(deps): bump express in /tests/apps/dockerfile-procfile-bad
Bumps [express](https://github.com/expressjs/express) from 4.21.2 to 5.1.0.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.21.2...v5.1.0)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-01 13:29:08 +00:00
dependabot[bot]
4e6dcc5f54 chore(deps): bump google.golang.org/grpc in /tests/apps/gogrpc
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.71.0 to 1.71.1.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.71.0...v1.71.1)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-01 13:10:51 +00:00
dependabot[bot]
cfb6980ebd chore(deps): bump express in /tests/apps/.websocket.disabled
Bumps [express](https://github.com/expressjs/express) from 4.21.2 to 5.1.0.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.21.2...v5.1.0)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-01 13:07:38 +00:00
dependabot[bot]
11f94739ab chore(deps): bump pyparsing from 3.2.1 to 3.2.3 in /docs/_build
Bumps [pyparsing](https://github.com/pyparsing/pyparsing) from 3.2.1 to 3.2.3.
- [Release notes](https://github.com/pyparsing/pyparsing/releases)
- [Changelog](https://github.com/pyparsing/pyparsing/blob/master/CHANGES)
- [Commits](https://github.com/pyparsing/pyparsing/compare/3.2.1...3.2.3)

---
updated-dependencies:
- dependency-name: pyparsing
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-25 13:23:12 +00:00
dependabot[bot]
ed9d9e3268 chore(deps): bump google.golang.org/protobuf in /tests/apps/gogrpc
Bumps google.golang.org/protobuf from 1.36.5 to 1.36.6.

---
updated-dependencies:
- dependency-name: google.golang.org/protobuf
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-24 15:19:09 +00:00
Jose Diaz-Gonzalez
fa55f38258 Merge pull request #7607 from dokku/dependabot/pip/tests/apps/dockerfile-release/gunicorn-23.0.0
chore(deps): bump gunicorn from 22.0.0 to 23.0.0 in /tests/apps/dockerfile-release
2025-03-22 11:38:37 -04:00
dependabot[bot]
bb575d5839 chore(deps): bump gunicorn in /tests/apps/dockerfile-release
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 22.0.0 to 23.0.0.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/22.0.0...23.0.0)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-22 03:20:18 +00:00
Jose Diaz-Gonzalez
c4270621c9 fix: bump dokku version in main.bicep when bumping azure versions
This file autogenerates azuredeploy.json, so we need to bump it as well.
2025-03-20 03:07:52 -04:00
dependabot[bot]
152081f15d chore(deps): bump org.eclipse.jetty:jetty-servlet in /tests/apps/java
Bumps org.eclipse.jetty:jetty-servlet from 11.0.24 to 11.0.25.

---
updated-dependencies:
- dependency-name: org.eclipse.jetty:jetty-servlet
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-18 13:47:45 +00:00
dependabot[bot]
80c78dab9f chore(deps): bump github.com/containerd/containerd
Bumps [github.com/containerd/containerd](https://github.com/containerd/containerd) from 1.7.20 to 1.7.27.
- [Release notes](https://github.com/containerd/containerd/releases)
- [Changelog](https://github.com/containerd/containerd/blob/main/RELEASES.md)
- [Commits](https://github.com/containerd/containerd/compare/v1.7.20...v1.7.27)

---
updated-dependencies:
- dependency-name: github.com/containerd/containerd
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-18 00:20:25 +00:00
dependabot[bot]
3b3bdb8c5d chore(deps): bump github.com/expr-lang/expr in /plugins/scheduler-k3s
Bumps [github.com/expr-lang/expr](https://github.com/expr-lang/expr) from 1.15.8 to 1.17.0.
- [Release notes](https://github.com/expr-lang/expr/releases)
- [Commits](https://github.com/expr-lang/expr/compare/v1.15.8...v1.17.0)

---
updated-dependencies:
- dependency-name: github.com/expr-lang/expr
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-18 00:17:42 +00:00
Jose Diaz-Gonzalez
f44392f561 Merge pull request #7596 from dokku/josegonzalez-patch-1
Drop compromisde tj-actions/changed-files from Ci
2025-03-15 05:52:56 -04:00
Jose Diaz-Gonzalez
506763ad17 security: drop tj-actions/changed-files
I've manually audited our usage and it doesn't look like credentials were printed anywhere, but before they do for another PR, just remove the usage.

If this ends up failing CI, thats also fine, I'll just remove packer validation and manually run it if that file changes.
2025-03-15 05:49:57 -04:00
Jose Diaz-Gonzalez
2e012cee38 Merge pull request #7595 from dokku/dependabot/github_actions/tj-actions/changed-files-45.0.8
chore(deps): bump tj-actions/changed-files from 45.0.7 to 45.0.8
2025-03-14 08:54:43 -05:00
dependabot[bot]
61d017517a chore(deps): bump tj-actions/changed-files from 45.0.7 to 45.0.8
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 45.0.7 to 45.0.8.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](https://github.com/tj-actions/changed-files/compare/v45.0.7...v45.0.8)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-14 13:09:17 +00:00
Jose Diaz-Gonzalez
be024cb372 Merge pull request #7593 from dokku/dependabot/pip/docs/_build/mkdocs-material-9.6.8
chore(deps): bump mkdocs-material from 9.6.7 to 9.6.8 in /docs/_build
2025-03-13 17:30:54 -05:00
dependabot[bot]
17531e646b chore(deps): bump mkdocs-material from 9.6.7 to 9.6.8 in /docs/_build
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.6.7 to 9.6.8.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.7...9.6.8)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-13 13:33:03 +00:00
Jose Diaz-Gonzalez
f3c0187fb7 Merge pull request #7589 from dokku/dependabot/go_modules/tests/apps/gogrpc/golang.org/x/net-0.36.0
chore(deps): bump golang.org/x/net from 0.34.0 to 0.36.0 in /tests/apps/gogrpc
2025-03-12 19:30:54 -05:00
dependabot[bot]
8a06e87a6c chore(deps): bump golang.org/x/net in /tests/apps/gogrpc
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.34.0 to 0.36.0.
- [Commits](https://github.com/golang/net/compare/v0.34.0...v0.36.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-12 22:13:02 +00:00
Jose Diaz-Gonzalez
008d84d3e3 Merge pull request #7588 from dokku/dependabot/bundler/tests/apps/ruby/rack-2.2.13
chore(deps): bump rack from 2.2.12 to 2.2.13 in /tests/apps/ruby
2025-03-11 09:29:48 -05:00
dependabot[bot]
cf4b27d510 chore(deps): bump rack from 2.2.12 to 2.2.13 in /tests/apps/ruby
Bumps [rack](https://github.com/rack/rack) from 2.2.12 to 2.2.13.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v2.2.12...v2.2.13)

---
updated-dependencies:
- dependency-name: rack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-11 02:45:43 +00:00
Jose Diaz-Gonzalez
9458642eb9 Merge pull request #7582 from dokku/6967-global-vhost-disable
Add ability to disable vhosts for all apps
2025-03-10 12:46:58 -05:00
Jose Diaz-Gonzalez
c5847184c0 fix: call post-domains-update when domains are enabled/disabled for an app 2025-03-10 12:50:31 -04:00
Jose Diaz-Gonzalez
a6dd27ee7d Merge pull request #7587 from turicas/fix/docs-paketo
Correctly name paketo chown option
2025-03-10 11:38:33 -05:00
Jose Diaz-Gonzalez
70d2f24e1d feat: add ability to disable vhosts for all apps
Closes #6967
2025-03-10 11:51:53 -04:00
Álvaro Justen (@turicas)
96bb17d70c Fix paketo chown option 2025-03-10 12:50:46 -03:00
Jose Diaz-Gonzalez
0249653e17 Merge pull request #7584 from dokku/7375-install-builder-deps
Install all builder binaries in Dokku docker image
2025-03-09 23:03:58 -05:00
Jose Diaz-Gonzalez
2107b6f147 Merge pull request #7581 from dokku/7119-pack-bindings
Allow --volume flags to be passed to pack at buildtime
2025-03-09 21:13:36 -05:00
Jose Diaz-Gonzalez
a59584bb6e Merge pull request #7583 from dokku/7456-checks-host
Send Host header when running container checks in docker-local
2025-03-09 21:12:26 -05:00
Jose Diaz-Gonzalez
16ff43de75 fix: install all builder binaries in Dokku docker image
Closes #7375
2025-03-09 17:22:53 -04:00
Jose Diaz-Gonzalez
d52eb382b8 Merge pull request #7586 from turicas/fix/plugin-docs
Remove `--` from `--git-url`
2025-03-09 16:20:10 -05:00
Álvaro Justen (@turicas)
f381dd768b Remove -- from --git-url
This is the name of the argument, not an option
2025-03-09 13:24:57 -03:00
Jose Diaz-Gonzalez
77cfa63196 tests: add test to prove Dokku respects the Procfile when deploying from an image
Any subsequent ps:rebuild should always respect the image for fetching files. This test proves this works.

Closes #7375
2025-03-09 09:38:25 -04:00
Jose Diaz-Gonzalez
8faaef4a7b feat: send Host header when running container checks in docker-local
Closes #7456
2025-03-09 07:48:16 -04:00
Jose Diaz-Gonzalez
3985fdcca4 feat: allow --volume flags to be passed to pack at buildtime
Closes #7119
2025-03-09 07:23:21 -04:00
Jose Diaz-Gonzalez
c7f35eb8a2 Merge pull request #7580 from dokku/7520-drop-network-on-dockerfile-build
Do not set network flag when building dockerfile images
2025-03-09 06:05:10 -05:00
Jose Diaz-Gonzalez
87cbbdbc9a fix: do not set network flag when building dockerfile images
The network flag is unsupported by the docker image build command under buildx (which is default now).

Closes #7520
2025-03-09 06:56:56 -04:00
Jose Diaz-Gonzalez
ed58641d41 Merge pull request #7575 from dokku/6973-restore-head-ref
Restore the git head ref when running repo:gc
2025-03-09 04:51:59 -05:00
Jose Diaz-Gonzalez
751a1a77cd Merge pull request #7576 from dokku/6815-handle-no-apps
fix: properly handle NoAppsExist in network:rebuild-all and buildpacks:set
2025-03-08 23:47:03 -06:00
Jose Diaz-Gonzalez
b4f3741ac7 fix: properly handle NoAppsExist in network:rebuild-all and buildpacks:set
Refs #6815
2025-03-08 23:49:40 -05:00
Jose Diaz-Gonzalez
da166bc537 fix: restore the git head ref when running repo:gc
When git --aggressive is run on a bare repo, it deletes all head refs. This change copies the contents into memory and then writes them out at the end of the repo:gc call.

Closes #6973
2025-03-08 23:00:53 -05:00
Jose Diaz-Gonzalez
4ffbd357ee Merge pull request #7574 from dokku/install-hostname-check
fix: do not write VHOST file if the DOKKU_ROOT directory does not exist
2025-03-08 21:35:58 -06:00
Jose Diaz-Gonzalez
6007a95683 fix: do not write VHOST file if the DOKKU_ROOT directory does not exist
This can happen when building a new docker image as the DOKKU_ROOT directory isn't mounted yet.
2025-03-08 21:10:23 -05:00
Jose Diaz-Gonzalez
07bcc67597 Merge pull request #7572 from dokku/k3s-shm-size
Add support for setting shm-size for kubernetes deployments
2025-03-06 22:50:01 -06:00
Jose Diaz-Gonzalez
c7141d7503 Merge pull request #7570 from dokku/dependabot/go_modules/plugins/cron/mvdan.cc/sh/v3-3.11.0
chore(deps): bump mvdan.cc/sh/v3 from 3.10.0 to 3.11.0 in /plugins/cron
2025-03-06 22:02:10 -06:00
Jose Diaz-Gonzalez
65dd4bc1e0 feat: set shm-size volume/volumeMounts on kubernetes deployments 2025-03-06 22:59:35 -05:00
Jose Diaz-Gonzalez
ed7ee5aacd Merge pull request #7571 from dokku/dependabot/pip/tests/apps/dockerfile-release/django-5.0.13
chore(deps): bump django from 5.0.11 to 5.0.13 in /tests/apps/dockerfile-release
2025-03-06 21:50:31 -06:00
Jose Diaz-Gonzalez
888d1d4bf3 feat: add ability to set shm-size property
This doesn't yet manage process volumes, but the scaffolding is there to allow interacting with the property.
2025-03-06 22:48:49 -05:00
Jose Diaz-Gonzalez
52c05558f9 chore: do not add an unnecessary fmt.Sprintf() 2025-03-06 22:35:56 -05:00
Jose Diaz-Gonzalez
c888ca5b58 docs: simplify the per-app deployment settings and place it all into a table 2025-03-06 22:35:34 -05:00
dependabot[bot]
d8e55f4b9b chore(deps): bump django in /tests/apps/dockerfile-release
Bumps [django](https://github.com/django/django) from 5.0.11 to 5.0.13.
- [Commits](https://github.com/django/django/compare/5.0.11...5.0.13)

---
updated-dependencies:
- dependency-name: django
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-07 03:30:08 +00:00
Jose Diaz-Gonzalez
715875adf8 Merge pull request #7569 from dokku/dependabot/go_modules/plugins/common/golang.org/x/crypto-0.36.0
chore(deps): bump golang.org/x/crypto from 0.35.0 to 0.36.0 in /plugins/common
2025-03-06 21:28:41 -06:00
Jose Diaz-Gonzalez
d9d6f1e044 chore: bump go modules 2025-03-06 21:41:39 -05:00
Jose Diaz-Gonzalez
07566b6484 chore: bump go modules 2025-03-06 21:41:07 -05:00
Jose Diaz-Gonzalez
0250627b3e Merge pull request #7568 from dokku/dependabot/pip/docs/_build/jinja2-3.1.6
chore(deps): bump jinja2 from 3.1.5 to 3.1.6 in /docs/_build
2025-03-06 10:51:39 -06:00
dependabot[bot]
a8786acf0d chore(deps): bump mvdan.cc/sh/v3 from 3.10.0 to 3.11.0 in /plugins/cron
Bumps [mvdan.cc/sh/v3](https://github.com/mvdan/sh) from 3.10.0 to 3.11.0.
- [Release notes](https://github.com/mvdan/sh/releases)
- [Changelog](https://github.com/mvdan/sh/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mvdan/sh/compare/v3.10.0...v3.11.0)

---
updated-dependencies:
- dependency-name: mvdan.cc/sh/v3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-06 13:34:40 +00:00
dependabot[bot]
1d5fb5cb39 chore(deps): bump golang.org/x/crypto in /plugins/common
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.35.0 to 0.36.0.
- [Commits](https://github.com/golang/crypto/compare/v0.35.0...v0.36.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-06 13:29:40 +00:00
dependabot[bot]
5ea2712d0a chore(deps): bump jinja2 from 3.1.5 to 3.1.6 in /docs/_build
Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.5 to 3.1.6.
- [Release notes](https://github.com/pallets/jinja/releases)
- [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/jinja/compare/3.1.5...3.1.6)

---
updated-dependencies:
- dependency-name: jinja2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-06 13:22:06 +00:00
root
ba8e522ff8 修改成国内可以部署 2025-01-23 14:39:15 +08:00
1035 changed files with 70565 additions and 14556 deletions

View File

@@ -31,9 +31,10 @@
],
"overrideCommand": false,
"postCreateCommand": "setup-dev-env",
"postStartCommand": "printenv > .vscode/devcontainer.env",
"runArgs": [
"--init"
],
"workspaceFolder": "/root/go/src/github.com/dokku/dokku",
"workspaceMount": "type=bind,source=${localWorkspaceFolder},target=/root/go/src/github.com/dokku/dokku,consistency=cached"
}
}

View File

@@ -1,7 +1,8 @@
---
name: Bug Report
description: File a bug report
labels: ["needs: investigation", "type: bug"]
labels: ["needs: investigation"]
type: Bug
body:
- type: markdown
attributes:

View File

@@ -13,19 +13,25 @@ runs:
using: "composite"
steps:
- name: download packages
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: build
path: build
- name: set up docker buildx
id: buildx
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@v4
- name: build docker image
shell: bash
run: |
docker buildx build \
--load \
--progress plain \
--tag "dokku/dokku:latest" \
.
- name: smoke test image
shell: bash
run: |
make test-image-healthcheck IMAGE_TAG=dokku/dokku:latest

View File

@@ -18,7 +18,11 @@ main() {
cd tmp
$GH_FOLDER/bin/gh auth login --with-token <<<"$BOT_GITHUB_API_TOKEN"
if [[ -n "$BOT_GITHUB_API_TOKEN" ]]; then
$GH_FOLDER/bin/gh auth login --with-token <<<"$BOT_GITHUB_API_TOKEN"
else
echo "BOT_GITHUB_API_TOKEN is not set, skipping gh auth login"
fi
echo "=====> Cloning quickstart templates"
rm -rf azure-quickstart-templates >/dev/null
@@ -35,15 +39,29 @@ main() {
contents="$(jq --arg VERSION "$VERSION" '.parameters.dokkuVersion.defaultValue = $VERSION' application-workloads/dokku/dokku-vm/azuredeploy.json)"
echo "${contents}" >application-workloads/dokku/dokku-vm/azuredeploy.json
# update the version in main.bicep
# the line being updated looks like this:
# param dokkuVersion string = '0.28.4'
# we need to update the value of dokkuVersion to the new version
sed -i "s/param dokkuVersion string = '[^']*'/param dokkuVersion string = '$VERSION'/" application-workloads/dokku/dokku-vm/main.bicep
echo "=====> Updating remote repository"
git add application-workloads/dokku/dokku-vm
git checkout -b dokku-$VERSION
git commit -m "Update dokku-vm dokku version to $VERSION"
git remote set-url origin "https://$BOT_GITHUB_USERNAME:$BOT_GITHUB_API_TOKEN@github.com/dokku/azure-quickstart-templates.git"
git push -f origin dokku-$VERSION
if [[ -z "$BOT_GITHUB_API_TOKEN" ]] || [[ -z "$BOT_GITHUB_USERNAME" ]]; then
echo "BOT_GITHUB_API_TOKEN or BOT_GITHUB_USERNAME is not set, skipping git remote set-url"
else
git remote set-url origin "https://$BOT_GITHUB_USERNAME:$BOT_GITHUB_API_TOKEN@github.com/dokku/azure-quickstart-templates.git"
git push -f origin dokku-$VERSION
fi
echo "=====> Creating upstream pull request"
../$GH_FOLDER/bin/gh pr create --head dokku:dokku-$VERSION --repo Azure/azure-quickstart-templates --title "Update dokku-vm dokku version to $VERSION" --body ''
if [[ -z "$BOT_GITHUB_API_TOKEN" ]] || [[ -z "$BOT_GITHUB_USERNAME" ]]; then
echo "BOT_GITHUB_API_TOKEN or BOT_GITHUB_USERNAME is not set, skipping gh pr create"
else
echo "=====> Creating upstream pull request"
../$GH_FOLDER/bin/gh pr create --head dokku:dokku-$VERSION --repo Azure/azure-quickstart-templates --title "Update dokku-vm dokku version to $VERSION" --body ''
fi
popd &>/dev/null
}

View File

@@ -134,6 +134,13 @@ updates:
open-pull-requests-limit: 2
labels:
- "type: dependencies"
- package-ecosystem: gomod
directory: "/plugins/scheduler-k3s"
schedule:
interval: daily
open-pull-requests-limit: 2
labels:
- "type: dependencies"
- package-ecosystem: gomod
directory: "/plugins/scheduler"
schedule:
@@ -182,140 +189,140 @@ updates:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: bundler
directory: "/tests/apps/multi"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: npm
directory: "/tests/apps/checks-root"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: npm
directory: "/tests/apps/config"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: npm
directory: "/tests/apps/dockerfile-app-json-formations"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: npm
directory: "/tests/apps/dockerfile-noexpose"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: npm
directory: "/tests/apps/dockerfile-procfile-bad"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: npm
directory: "/tests/apps/dockerfile-procfile"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: npm
directory: "/tests/apps/dockerfile"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: npm
directory: "/tests/apps/gitsubmodules"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: gomod
directory: "/tests/apps/gogrpc"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: pip
directory: "/tests/apps/multi"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: maven
directory: "/tests/apps/java"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: npm
directory: "/tests/apps/multi"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: tests"
- package-ecosystem: npm
directory: "/tests/apps/nodejs-express"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: npm
directory: "/tests/apps/nodejs-worker"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: npm
directory: "/tests/apps/nodejs-express-noappjson"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: npm
directory: "/tests/apps/nodejs-express-noprocfile"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: composer
directory: "/tests/apps/php"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: pip
directory: "/tests/apps/python-flask"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- package-ecosystem: npm
directory: "/tests/apps/.websocket.disabled"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: github-actions
directory: "/"
schedule:
@@ -323,6 +330,11 @@ updates:
open-pull-requests-limit: 10
labels:
- "type: dependencies"
ignore:
- dependency-name: "*"
update-types:
- "version-update:semver-minor"
- "version-update:semver-patch"
- package-ecosystem: "docker"
directory: "/"
schedule:
@@ -336,84 +348,91 @@ updates:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: "docker"
directory: "/tests/apps/dockerfile"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: "docker"
directory: "/tests/apps/dockerfile-procfile"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: "docker"
directory: "/tests/apps/dockerfile-entrypoint"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: "docker"
directory: "/tests/apps/dockerfile-procfile-bad"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: "docker"
directory: "/tests/apps/go-fail-predeploy"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: "docker"
directory: "/tests/apps/zombies-dockerfile-no-tini"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: "docker"
directory: "/tests/apps/dockerfile-release"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: pip
directory: "/tests/apps/dockerfile-release"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: tests"
- package-ecosystem: "docker"
directory: "/tests/apps/dockerfile-app-json-formations"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: "docker"
directory: "/tests/apps/gogrpc"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: "docker"
directory: "/tests/apps/zombies-dockerfile-tini"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: "docker"
directory: "/tests/apps/go-fail-postdeploy"
schedule:
interval: daily
open-pull-requests-limit: 10
labels:
- "type: dependencies"
- "type: tests"
- package-ecosystem: "docker"
directory: "/docs/_build"
schedule:

View File

@@ -24,7 +24,7 @@ jobs:
skip: ${{ steps.check-commit.outputs.skip }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
with:
ref: ${{ github.event.pull_request.head.sha }}
@@ -53,14 +53,14 @@ jobs:
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
- name: set up qemu
uses: docker/setup-qemu-action@v3
uses: docker/setup-qemu-action@v4
- name: set up docker buildx
id: buildx
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@v4
- name: build package
run: ./tests/ci/setup.sh build
@@ -75,7 +75,7 @@ jobs:
echo "matrix=$json" >> $GITHUB_OUTPUT
- name: upload packages
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: build
path: build
@@ -87,7 +87,7 @@ jobs:
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
- name: build-image
uses: ./.github/actions/build-image
@@ -97,11 +97,11 @@ jobs:
build-image-arm64:
name: build-image.linux/arm64
needs: build
runs-on: buildjet-4vcpu-ubuntu-2204-arm
runs-on: ubuntu-24.04-arm
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
- name: build-image
uses: ./.github/actions/build-image
@@ -117,10 +117,10 @@ jobs:
matrix: ${{fromJson(needs.build.outputs.matrix)}}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
- name: download packages
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: build
path: build
@@ -143,7 +143,7 @@ jobs:
SYNC_GITHUB_PASSWORD: ${{ secrets.SYNC_GITHUB_PASSWORD }}
SYNC_GITHUB_USERNAME: ${{ secrets.SYNC_GITHUB_USERNAME }}
- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@v7
with:
name: test-results-${{ matrix.index }}
path: test-results
@@ -156,10 +156,10 @@ jobs:
fail-fast: false
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
- name: download packages
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: build
path: build
@@ -190,10 +190,10 @@ jobs:
GITHUB_NODE_INDEX: ${{ matrix.index }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
- name: download packages
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: build
path: build
@@ -214,7 +214,7 @@ jobs:
2) sudo -E make -e deploy-test-multi ;;
3) sudo -E make -e deploy-test-go-fail-predeploy deploy-test-go-fail-postdeploy ;;
esac
- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@v7
with:
name: coverage.${{ matrix.index }}
path: test-results/coverage
@@ -230,7 +230,7 @@ jobs:
steps:
- name: download test-results
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
path: test-results
@@ -239,5 +239,5 @@ jobs:
with:
check_name: Unit Test Results
github_token: ${{ secrets.GITHUB_TOKEN }}
junit_files: test-results/**/*.xml
files: test-results/**/*.xml
comment_mode: "off"

View File

@@ -42,7 +42,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v7
# workaround for https://github.com/github/codeql/issues/14235
- name: Remove go.work file
@@ -50,7 +50,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -61,7 +61,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v3
uses: github/codeql-action/autobuild@v4
# ℹ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
@@ -71,4 +71,4 @@ jobs:
# uses a compiled language
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
uses: github/codeql-action/analyze@v4

110
.github/workflows/dependency-updates.yml vendored Normal file
View File

@@ -0,0 +1,110 @@
---
name: 'dependency-updates'
# yamllint disable-line rule:truthy
on:
schedule:
- cron: '0 6 * * *'
workflow_dispatch:
permissions:
contents: write
pull-requests: write
jobs:
prepare:
name: prepare
runs-on: ubuntu-24.04
outputs:
matrix: ${{ steps.matrix.outputs.matrix }}
steps:
- name: Clone
uses: actions/checkout@v7
- name: Build dependency matrix
id: matrix
run: |
matrix=$(jq -c '
[
(.dependencies[] | {section: "dependencies", name, version, url: .urls.amd64}),
(.predependencies[] | {section: "predependencies", name, version, url: .urls.amd64}),
(.recommendations[] | {section: "recommendations", name, version, url: .urls.amd64})
]
| map(. + {repo: (.url | capture("https://github.com/(?<r>[^/]+/[^/]+)/releases").r)})
| map(del(.url))
| {include: .}
' contrib/dependencies.json)
echo "matrix=${matrix}" >> "$GITHUB_OUTPUT"
update:
name: 'update / ${{ matrix.name }}'
runs-on: ubuntu-24.04
needs: prepare
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.prepare.outputs.matrix) }}
concurrency:
group: dependency-updates-${{ matrix.name }}
cancel-in-progress: false
steps:
- name: Clone
uses: actions/checkout@v7
- name: Resolve latest release
id: latest
env:
GH_TOKEN: ${{ secrets.HOMEBREW_GITHUB_API_TOKEN }}
REPO: ${{ matrix.repo }}
CURRENT: ${{ matrix.version }}
run: |
tag=$(gh release view --repo "$REPO" --json tagName -q .tagName)
latest="${tag#v}"
echo "latest=${latest}" >> "$GITHUB_OUTPUT"
if dpkg --compare-versions "$latest" gt "$CURRENT"; then
echo "outdated=true" >> "$GITHUB_OUTPUT"
else
echo "outdated=false" >> "$GITHUB_OUTPUT"
fi
- name: Bump dependency entry
if: steps.latest.outputs.outdated == 'true'
env:
SECTION: ${{ matrix.section }}
NAME: ${{ matrix.name }}
OLD: ${{ matrix.version }}
NEW: ${{ steps.latest.outputs.latest }}
run: |
tmp=$(mktemp)
jq --arg section "$SECTION" \
--arg name "$NAME" \
--arg old "$OLD" \
--arg new "$NEW" '
($old) as $oldv |
($new) as $newv |
(.[$section]) |= map(
if .name == $name then
.version = $newv
| .urls.amd64 |= (gsub("v" + $oldv; "v" + $newv) | gsub($oldv; $newv))
| .urls.arm64 |= (gsub("v" + $oldv; "v" + $newv) | gsub($oldv; $newv))
else . end
)
' contrib/dependencies.json > "$tmp"
mv "$tmp" contrib/dependencies.json
- name: Open pull request
if: steps.latest.outputs.outdated == 'true'
uses: peter-evans/create-pull-request@v8
with:
token: ${{ secrets.HOMEBREW_GITHUB_API_TOKEN }}
branch: chore/bump-${{ matrix.name }}-${{ steps.latest.outputs.latest }}
base: ${{ github.ref_name }}
delete-branch: true
committer: 'Dokku Bot <no-reply@dokku.com>'
author: 'Dokku Bot <no-reply@dokku.com>'
commit-message: 'chore: bump ${{ matrix.name }} to ${{ steps.latest.outputs.latest }}'
title: 'chore: bump ${{ matrix.name }} to ${{ steps.latest.outputs.latest }}'
body: |
Bumps `${{ matrix.name }}` from `${{ matrix.version }}` to `${{ steps.latest.outputs.latest }}`.
Release notes: https://github.com/${{ matrix.repo }}/releases/tag/v${{ steps.latest.outputs.latest }}
labels: 'type: dependencies'

View File

@@ -16,12 +16,12 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: Cloning repo
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
fetch-depth: 0
- name: "Setup python 3.10"
uses: actions/setup-python@v5
uses: actions/setup-python@v7
with:
python-version: '3.10'

View File

@@ -20,9 +20,9 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: Clone
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Run hadolint
uses: hadolint/hadolint-action@54c9adbab1582c2ef04b2016b760714a4bfde3cf
uses: hadolint/hadolint-action@2332a7b74a6de0dda2e2221d575162eba76ba5e5
# v3.0.0 => 4b5806eb9c6bee4954fc0e0cc3ad6175fc9782c1
markdown-lint:
@@ -30,9 +30,9 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: Clone
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Setup node
uses: actions/setup-node@v4
uses: actions/setup-node@v7
with:
node-version: '20'
cache: 'npm'
@@ -45,9 +45,10 @@ jobs:
packer:
name: packer
runs-on: ubuntu-24.04
if: github.event.pull_request.user.login != 'dependabot[bot]'
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Setup packer
uses: hashicorp/setup-packer@main
with:
@@ -56,15 +57,9 @@ jobs:
run: "make image/init/digitalocean"
env:
PACKER_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Get changed files in the docs folder
id: changed-files-specific
uses: tj-actions/changed-files@v45.0.7
with:
files: contrib/images/digitalocean/**
- name: Run `packer validate`
env:
DIGITALOCEAN_TOKEN: ${{ secrets.DIGITALOCEAN_TOKEN }}
if: steps.changed-files-specific.outputs.any_changed == 'true'
run: "make image/validate/digitalocean"
shellcheck:
@@ -72,7 +67,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: Clone
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Run shellcheck
uses: ludeeus/action-shellcheck@00cae500b08a931fb5698e11e79bfbd38e612a38
# 1.1.0 => 94e0aab03ca135d11a35e5bfc14e6746dc56e7e9
@@ -82,9 +77,9 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: Clone
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Run shfmt
uses: luizm/action-sh-checker@17bd25a6ee188d2b91f677060038f4ba37ba14b2
uses: luizm/action-sh-checker@883217215b11c1fabbf00eb1a9a041f62d74c744
# v0.5.0 => edd0e45ecff35b05f162052b50df50976c1b74fc
env:
SHFMT_OPTS: -l -bn -ci -i 2 -d
@@ -96,7 +91,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: Clone
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Run yamllint
uses: ibiqlik/action-yamllint@2576378a8e339169678f9939646ee3ee325e845c
# v3.1.1 => 2576378a8e339169678f9939646ee3ee325e845c

View File

@@ -25,7 +25,7 @@ jobs:
outputs:
version: ${{ steps.version.outputs.version }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
with:
fetch-depth: 0
@@ -34,17 +34,17 @@ jobs:
ruby-version: 2.7
- name: login to docker hub
uses: docker/login-action@v3
uses: docker/login-action@v4
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: set up qemu
uses: docker/setup-qemu-action@v3
uses: docker/setup-qemu-action@v4
- name: set up docker buildx
id: buildx
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@v4
- name: inspect builder
run: |
@@ -73,7 +73,7 @@ jobs:
run: echo "version=$(cat build/next-version)" >> $GITHUB_OUTPUT
- name: upload packages
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: build
path: build
@@ -84,7 +84,7 @@ jobs:
needs: release
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Setup packer
uses: hashicorp/setup-packer@main
@@ -109,7 +109,7 @@ jobs:
PKR_VAR_dokku_version="${VERSION:1}" make image/build/digitalocean
- name: upload packages
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: digitalocean-manifest.json
path: digitalocean-manifest.json
@@ -120,7 +120,7 @@ jobs:
needs: release
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Bump Azure Template
env:
BOT_GITHUB_USERNAME: ${{ secrets.HOMEBREW_GITHUB_USERNAME }}
@@ -147,6 +147,10 @@ jobs:
brew untap homebrew/core || true
echo "====> Untapping homebrew/cask"
brew untap homebrew/cask || true
echo "====> Untapping aws/tap"
brew untap aws/tap || true
echo "====> Untapping hashicorp/tap"
brew untap hashicorp/tap || true
echo "====> Uninstalling openssl@1.1"
brew uninstall openssl@1.1 || true
echo "====> Uninstalling ruby@3.0"
@@ -154,7 +158,7 @@ jobs:
echo "====> Running brew cleanup"
brew cleanup || true
- name: Brew doctor
run: brew doctor
run: brew doctor || true
- name: Brew config
run: brew config
- name: Bump Homebrew Formula

View File

@@ -1,4 +1,4 @@
FROM phusion/baseimage:noble-1.0.0
FROM phusion/baseimage:noble-1.0.3
CMD ["/sbin/my_init"]
@@ -15,27 +15,44 @@ RUN addgroup --gid $DOKKU_GID dokku \
COPY ./tests/dhparam.pem /tmp/dhparam.pem
COPY ./build/package/ /tmp
COPY ./contrib/dependencies.json /tmp/dependencies.json
ENV DOKKU_INIT_SYSTEM=sv
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# hadolint ignore=DL3005,DL3008
RUN mkdir -p /etc/apt/keyrings \
&& mkdir -p /etc/apt/keyrings \
&& apt-get remove -y systemd && apt-get autoremove -y && apt-get update && apt-get install -y --no-install-recommends gpg lsb-release \
&& apt-get remove -y systemd && apt-get autoremove -y && apt-get update && apt-get -y --no-install-recommends install gpg jq lsb-release openssl openssh-server rsync software-properties-common \
&& curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null \
&& apt-get update \
&& apt-get -y --no-install-recommends install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin \
&& PACK_URL="$(jq -r --arg arch "$(dpkg --print-architecture)" '.dependencies[] | select(.name == "pack") | .urls[$arch]' /tmp/dependencies.json)" \
&& curl -fsSL "$PACK_URL" | tar -C /usr/bin/ --no-same-owner -xzf - pack \
&& chmod +x /usr/bin/pack \
&& test -x /usr/bin/pack \
&& curl -o /tmp/nixpacks.bash -sSL https://nixpacks.com/install.sh \
&& chmod +x /tmp/nixpacks.bash \
&& NIXPACKS_BIN_DIR=/usr/bin BIN_DIR=/usr/bin /tmp/nixpacks.bash \
&& test -x /usr/bin/nixpacks \
&& rm -rf /tmp/nixpacks.bash \
&& curl -o /tmp/railpack.bash -sSL https://railpack.com/install.sh \
&& chmod +x /tmp/railpack.bash \
&& RAILPACK_BIN_DIR=/usr/bin BIN_DIR=/usr/bin /tmp/railpack.bash \
&& test -x /usr/bin/railpack \
&& rm -rf /tmp/railpack.bash \
&& echo "dokku dokku/hostname string $DOKKU_HOSTNAME" | debconf-set-selections \
&& echo "dokku dokku/skip_key_file boolean $DOKKU_SKIP_KEY_FILE" | debconf-set-selections \
&& echo "dokku dokku/vhost_enable boolean $DOKKU_VHOST_ENABLE" | debconf-set-selections \
&& echo "dokku dokku/install_default_site boolean true" | debconf-set-selections \
&& curl -sSL https://packagecloud.io/dokku/dokku/gpgkey | apt-key add - \
&& echo "deb https://packagecloud.io/dokku/dokku/ubuntu/ noble main" | tee /etc/apt/sources.list.d/dokku.list \
&& mkdir -p /etc/nginx/ \
&& cp /tmp/dhparam.pem /etc/nginx/dhparam.pem \
&& apt-get update \
&& apt-get upgrade -y \
&& apt-get -y --no-install-recommends --only-upgrade install openssl openssh-server \
&& DOKKU_INIT_SYSTEM=sv apt-get -y --no-install-recommends install rsync "/tmp/dokku-$(dpkg --print-architecture).deb" \
&& apt-get -y --no-install-recommends install lambda-builder "/tmp/dokku-$(dpkg --print-architecture).deb" \
&& apt-get purge -y syslog-ng-core \
&& apt-get autoremove -y \
&& apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
@@ -65,3 +82,6 @@ RUN \
&& rm -f /usr/local/openresty/nginx/conf/sites-enabled/default /usr/share/openresty/html/index.html \
&& sed -i '/imklog/d' /etc/rsyslog.conf \
&& rm -f /var/log/btmp /var/log/wtmp /var/log/*log /var/log/apt/* /var/log/dokku/*.log /var/log/nginx/* /var/log/openresty/*
HEALTHCHECK --interval=30s --timeout=10s --start-period=5m --retries=3 \
CMD curl -fsS http://127.0.0.1:18080/_dokku/health || exit 1

2045
HISTORY.md

File diff suppressed because it is too large Load Diff

View File

@@ -11,7 +11,7 @@ PROCFILE_UTIL_URL ?= $(shell jq -r --arg name procfile-util --arg arch $(TARGET
SIGIL_URL ?= $(shell jq -r --arg name gliderlabs-sigil --arg arch $(TARGETARCH) '.predependencies[] | select(.name == $$name) | .urls[$$arch]' contrib/dependencies.json)
SSHCOMMAND_URL ?= $(shell jq -r --arg name sshcommand --arg arch $(TARGETARCH) '.dependencies[] | select(.name == $$name) | .urls[$$arch]' contrib/dependencies.json)
STACK_URL ?= https://github.com/gliderlabs/herokuish.git
PREBUILT_STACK_URL ?= gliderlabs/herokuish:latest-24
PREBUILT_STACK_URL ?= ccr.ccs.tencentyun.com/miaogai/herokuish:latest-24
DOKKU_LIB_ROOT ?= /var/lib/dokku
PLUGINS_PATH ?= ${DOKKU_LIB_ROOT}/plugins
CORE_PLUGINS_PATH ?= ${DOKKU_LIB_ROOT}/core-plugins
@@ -190,7 +190,8 @@ docker:
grep -i -E "^docker" /etc/group || groupadd docker
usermod -aG docker dokku
ifndef CI
wget -nv -O - https://get.docker.com/ | sh
sudo apt install docker.io
#wget --no-check-certificate -nv -O - https://get.docker.com/ | sh
ifdef DOCKER_VERSION
apt-get -qq -y --no-install-recommends install docker-engine=${DOCKER_VERSION} || (apt-cache madison docker-engine ; exit 1)
endif
@@ -226,3 +227,8 @@ vagrant-acl-add:
vagrant-dokku:
vagrant ssh -- "sudo -H -u root bash -c 'dokku $(RUN_ARGS)'"
IMAGE_TAG ?= dokku/dokku:latest
test-image-healthcheck:
IMAGE_TAG=$(IMAGE_TAG) ./tests/image/healthcheck.sh

View File

@@ -74,7 +74,7 @@ Support us with a monthly donation and help us continue our activities. [[Become
A fresh VM running any of the following operating systems:
- Ubuntu 20.04 / 22.04 / 24.04 (amd64/arm64) - Any currently supported release
- Ubuntu 22.04 / 24.04 (amd64/arm64) - Any currently supported release
- Debian 11+ (amd64/arm64)
An SSH keypair that can be used for application deployment. If this exists before installation, it will be automatically imported into dokku.
@@ -85,8 +85,8 @@ Otherwise, you will need to import the keypair manually after installation using
To install the latest stable release, run the following commands as a user who has access to `sudo`:
```shell
wget -NP . https://dokku.com/install/v0.35.16/bootstrap.sh
sudo DOKKU_TAG=v0.35.16 bash bootstrap.sh
wget -NP . https://dokku.com/install/v0.38.27/bootstrap.sh
sudo DOKKU_TAG=v0.38.27 bash bootstrap.sh
```
You can then proceed to configure your server domain (via `dokku domains:set-global`) and user access (via `dokku ssh-keys:add`) to complete the installation.

View File

@@ -3,7 +3,7 @@ set -eo pipefail
[[ $TRACE ]] && set -x
# A script to bootstrap dokku.
# It expects to be run on Ubuntu 20.04/22.04/24.04 via 'sudo`
# It expects to be run on Ubuntu 22.04/24.04 via 'sudo`
# If installing a tag higher than 0.3.13, it may install dokku via a package (so long as the package is higher than 0.3.13)
# It checks out the dokku source code from GitHub into ~/dokku and then runs 'make install' from dokku source.
@@ -12,7 +12,7 @@ set -eo pipefail
# That's good because it prevents our output overlapping with wget's.
# It also means that we can't run a partially downloaded script.
SUPPORTED_VERSIONS="Debian [11, 12], Ubuntu [20.04, 22.04, 24.04]"
SUPPORTED_VERSIONS="Debian [11, 12, 13], Ubuntu [22.04, 24.04]"
log-fail() {
declare desc="log fail formatter"
@@ -48,9 +48,15 @@ install-requirements() {
apt-get update -qq >/dev/null
apt-get -qq -y --no-install-recommends install gpg-agent
fi
if ! dpkg -l | grep -q software-properties-common; then
if ! command -v lsb_release &>/dev/null; then
apt-get update -qq >/dev/null
apt-get -qq -y --no-install-recommends install software-properties-common
apt-get -qq -y --no-install-recommends install lsb-release
fi
if [[ "$DOKKU_DISTRO_VERSION" -lt "13" ]]; then
if ! dpkg -l | grep -q software-properties-common; then
apt-get update -qq >/dev/null
apt-get -qq -y --no-install-recommends install software-properties-common
fi
fi
;;
ubuntu)
@@ -122,7 +128,22 @@ install-dokku-from-source() {
log-fail "This installation script requires apt-get. For manual installation instructions, consult https://dokku.com/docs/getting-started/advanced-installation/"
fi
apt-get -qq -y --no-install-recommends install sudo git make software-properties-common
apt-get -qq -y --no-install-recommends install sudo git make
case "$DOKKU_DISTRO" in
debian)
if [[ "$DOKKU_DISTRO_VERSION" -lt "13" ]]; then
if ! dpkg -l | grep -q software-properties-common; then
apt-get -qq -y --no-install-recommends install software-properties-common
fi
fi
;;
ubuntu)
if ! dpkg -l | grep -q software-properties-common; then
apt-get -qq -y --no-install-recommends install software-properties-common
fi
;;
esac
cd /root
if [[ ! -d /root/dokku ]]; then
git clone "$DOKKU_REPO" /root/dokku
@@ -160,7 +181,7 @@ install-dokku-from-deb-package() {
local NO_INSTALL_RECOMMENDS=${DOKKU_NO_INSTALL_RECOMMENDS:=""}
local OS_ID
if ! in-array "$DOKKU_DISTRO_VERSION" "20.04" "22.04" "24.04" "10" "11" "12"; then
if ! in-array "$DOKKU_DISTRO_VERSION" "22.04" "24.04" "10" "11" "12" "13"; then
log-fail "Unsupported Linux distribution. Only the following versions are supported: $SUPPORTED_VERSIONS"
fi
@@ -188,17 +209,17 @@ install-dokku-from-deb-package() {
fi
if [[ "$DOKKU_DISTRO" == "ubuntu" ]]; then
OS_IDS=("focal" "jammy" "noble")
OS_IDS=("jammy" "noble")
if ! in-array "$OS_ID" "${OS_IDS[@]}"; then
OS_ID="noble"
fi
elif [[ "$DOKKU_DISTRO" == "debian" ]]; then
OS_IDS=("bullseye" "bookworm")
OS_IDS=("bullseye" "bookworm" "trixie")
if ! in-array "$OS_ID" "${OS_IDS[@]}"; then
OS_ID="bookworm"
fi
elif [[ "$DOKKU_DISTRO" == "raspbian" ]]; then
OS_IDS=("bullseye" "bookworm")
OS_IDS=("bullseye" "bookworm" "trixie")
if ! in-array "$OS_ID" "${OS_IDS[@]}"; then
OS_ID="bookworm"
fi

View File

@@ -1,7 +1,7 @@
GO_ARGS ?=
GO_PLUGIN_MAKE_TARGET ?= build
GO_REPO_ROOT := /go/src/github.com/dokku/dokku
BUILD_IMAGE := golang:1.23.0
BUILD_IMAGE := hub.diyla.com/golang:1.26.2
GO_BUILD_CACHE ?= /tmp/dokku-go-build-cache
GO_MOD_CACHE ?= /tmp/dokku-go-mod-mod
GO_ROOT_MOUNT ?= $$PWD/../..:$(GO_REPO_ROOT)
@@ -19,6 +19,7 @@ build-in-docker: clean
-v $(GO_MOD_CACHE):/go/pkg/mod \
-e PLUGIN_NAME=$(PLUGIN_NAME) \
-e GO111MODULE=on \
-e GOPROXY=https://goproxy.cn,direct \
-w $(GO_REPO_ROOT)/plugins/$(PLUGIN_NAME) \
$(BUILD_IMAGE) \
bash -c "GO_ARGS='$(GO_ARGS)' CGO_ENABLED=0 GOOS=linux GOARCH=$(GOARCH) GOWORK=off make -j4 $(GO_PLUGIN_MAKE_TARGET)" || exit $$?

View File

@@ -135,20 +135,33 @@ main() {
mv docs-main docs
git checkout -- mkdocs.yml docs
if [[ "$(git -C tmp/docs-build ls-files -dmo)" == "docs/sitemap.xml.gz" ]]; then
echo "====> Checking for file changes"
changes=$(git -C tmp/docs-build ls-files -dmo)
if [[ -z "$changes" ]]; then
echo " ! No doc changes found"
exit 0
fi
if [[ "$changes" == "docs/sitemap.xml.gz" ]]; then
echo " ! No doc changes found"
git -C tmp/docs-build checkout -- docs/sitemap.xml.gz
else
echo "====> Pushing docs"
git -C tmp/docs-build add .
git -C tmp/docs-build commit -m "chore: regenerate docs"
if [[ -n "$BOT_GITHUB_USERNAME" ]] && [[ -n "$BOT_GITHUB_API_TOKEN" ]]; then
git -C tmp/docs-build remote set-url origin "https://$BOT_GITHUB_USERNAME:$BOT_GITHUB_API_TOKEN@github.com/dokku/docs.git"
fi
git -C tmp/docs-build push origin master
exit 0
fi
echo "====> Changes found"
echo "$changes"
echo "====> Committing changes"
git -C tmp/docs-build add .
git -C tmp/docs-build commit -m "chore: regenerate docs"
echo "====> Pushing changes"
if [[ -n "$BOT_GITHUB_USERNAME" ]] && [[ -n "$BOT_GITHUB_API_TOKEN" ]]; then
git -C tmp/docs-build remote set-url origin "https://$BOT_GITHUB_USERNAME:$BOT_GITHUB_API_TOKEN@github.com/dokku/docs.git"
fi
git -C tmp/docs-build push origin master
}
main "$@"

View File

@@ -7,7 +7,7 @@ ARG WORKDIR=/go/src/github.com/dokku/dokku
WORKDIR ${WORKDIR}
RUN wget -qO /tmp/go${GOLANG_VERSION}.linux.tar.gz "https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-$(dpkg --print-architecture).tar.gz" \
RUN wget -qO /tmp/go${GOLANG_VERSION}.linux.tar.gz "https://go.dev/dl/go${GOLANG_VERSION}.linux-$(dpkg --print-architecture).tar.gz" \
&& tar -C /usr/local -xzf /tmp/go${GOLANG_VERSION}.linux.tar.gz \
&& cp /usr/local/go/bin/* /usr/local/bin \
&& mkdir -p ${WORKDIR}/contrib
@@ -23,7 +23,7 @@ COPY . ${WORKDIR}
ENV GOPATH=/go
ENV GOROOT=/usr/local/go
FROM builder as amd64
FROM builder AS amd64
ARG PLUGIN_MAKE_TARGET
ARG DOKKU_VERSION=master
@@ -38,7 +38,7 @@ RUN PLUGIN_MAKE_TARGET=${PLUGIN_MAKE_TARGET} \
make version copyfiles \
&& make deb-dokku
FROM builder as arm64
FROM builder AS arm64
COPY --from=amd64 /tmp /tmp
COPY --from=amd64 /usr/local/share/man/man1/dokku.1 /usr/local/share/man/man1/dokku.1-generated

View File

@@ -2,95 +2,103 @@
"dependencies": [
{
"name": "docker-container-healthchecker",
"version": "0.11.0",
"version": "0.16.0",
"urls": {
"amd64": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.11.0/docker-container-healthchecker-linux-amd64",
"arm64": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.11.0/docker-container-healthchecker-linux-arm64"
"amd64": "https://hub.diyla.com/https://github.com/dokku/docker-container-healthchecker/releases/download/v0.16.0/docker-container-healthchecker-linux-amd64",
"arm64": "https://hub.diyla.com/https://github.com/dokku/docker-container-healthchecker/releases/download/v0.16.0/docker-container-healthchecker-linux-arm64"
}
},
{
"name": "docker-image-labeler",
"version": "0.8.0",
"version": "0.10.0",
"urls": {
"amd64": "https://github.com/dokku/docker-image-labeler/releases/download/v0.8.0/docker-image-labeler-linux-amd64",
"arm64": "https://github.com/dokku/docker-image-labeler/releases/download/v0.8.0/docker-image-labeler-linux-arm64"
"amd64": "https://hub.diyla.com/https://github.com/dokku/docker-image-labeler/releases/download/v0.10.0/docker-image-labeler-linux-amd64",
"arm64": "https://hub.diyla.com/https://github.com/dokku/docker-image-labeler/releases/download/v0.10.0/docker-image-labeler-linux-arm64"
}
},
{
"name": "lambda-builder",
"version": "0.8.0",
"version": "0.9.4",
"urls": {
"amd64": "https://github.com/dokku/lambda-builder/releases/download/v0.8.0/lambda-builder-linux-amd64",
"arm64": "https://github.com/dokku/lambda-builder/releases/download/v0.8.0/lambda-builder-linux-arm64"
"amd64": "https://hub.diyla.com/https://github.com/dokku/lambda-builder/releases/download/v0.9.4/lambda-builder-linux-amd64",
"arm64": "https://hub.diyla.com/https://github.com/dokku/lambda-builder/releases/download/v0.9.4/lambda-builder-linux-arm64"
}
},
{
"name": "netrc",
"version": "0.10.0",
"version": "0.11.1",
"urls": {
"amd64": "https://github.com/dokku/netrc/releases/download/v0.10.0/netrc-linux-amd64",
"arm64": "https://github.com/dokku/netrc/releases/download/v0.10.0/netrc-linux-arm64"
"amd64": "https://hub.diyla.com/https://github.com/dokku/netrc/releases/download/v0.11.1/netrc-linux-amd64",
"arm64": "https://hub.diyla.com/https://github.com/dokku/netrc/releases/download/v0.11.1/netrc-linux-arm64"
}
},
{
"name": "pack",
"version": "0.40.9",
"urls": {
"amd64": "https://hub.diyla.com/https://github.com/buildpacks/pack/releases/download/v0.40.9/pack-v0.40.9-linux.tgz",
"arm64": "https://hub.diyla.com/https://github.com/buildpacks/pack/releases/download/v0.40.9/pack-v0.40.9-linux-arm64.tgz"
}
},
{
"name": "procfile-util",
"version": "0.19.0",
"version": "0.20.8",
"urls": {
"amd64": "https://github.com/dokku/procfile-util/releases/download/v0.19.0/procfile-util-linux-amd64",
"arm64": "https://github.com/dokku/procfile-util/releases/download/v0.19.0/procfile-util-linux-arm64"
"amd64": "https://hub.diyla.com/https://github.com/dokku/procfile-util/releases/download/v0.20.8/procfile-util-linux-amd64",
"arm64": "https://hub.diyla.com/https://github.com/dokku/procfile-util/releases/download/v0.20.8/procfile-util-linux-arm64"
}
},
{
"name": "sshcommand",
"version": "0.19.0",
"version": "0.20.2",
"urls": {
"amd64": "https://github.com/dokku/sshcommand/releases/download/v0.19.0/sshcommand",
"arm64": "https://github.com/dokku/sshcommand/releases/download/v0.19.0/sshcommand"
"amd64": "https://hub.diyla.com/https://github.com/dokku/sshcommand/releases/download/v0.20.2/sshcommand",
"arm64": "https://hub.diyla.com/https://github.com/dokku/sshcommand/releases/download/v0.20.2/sshcommand"
}
}
],
"predependencies": [
{
"name": "gliderlabs-sigil",
"version": "0.11.0",
"version": "0.12.1",
"urls": {
"amd64": "https://github.com/gliderlabs/sigil/releases/download/v0.11.0/sigil-linux-amd64",
"arm64": "https://github.com/gliderlabs/sigil/releases/download/v0.11.0/sigil-linux-arm64"
"amd64": "https://hub.diyla.com/https://github.com/gliderlabs/sigil/releases/download/v0.12.1/sigil-linux-amd64",
"arm64": "https://hub.diyla.com/https://github.com/gliderlabs/sigil/releases/download/v0.12.1/sigil-linux-arm64"
}
},
{
"name": "plugn",
"version": "0.15.3",
"version": "0.17.1",
"urls": {
"amd64": "https://github.com/dokku/plugn/releases/download/v0.15.3/plugn-linux-amd64",
"arm64": "https://github.com/dokku/plugn/releases/download/v0.15.3/plugn-linux-arm64"
"amd64": "https://hub.diyla.com/https://github.com/dokku/plugn/releases/download/v0.17.1/plugn-linux-amd64",
"arm64": "https://hub.diyla.com/https://github.com/dokku/plugn/releases/download/v0.17.1/plugn-linux-arm64"
}
}
],
"recommendations": [
{
"name": "dokku-event-listener",
"version": "0.17.0",
"version": "0.20.1",
"urls": {
"amd64": "https://github.com/dokku/dokku-event-listener/releases/download/v0.17.0/dokku-event-listener-linux-amd64",
"arm64": "https://github.com/dokku/dokku-event-listener/releases/download/v0.17.0/dokku-event-listener-linux-arm64"
"amd64": "https://hub.diyla.com/https://github.com/dokku/dokku-event-listener/releases/download/v0.20.1/dokku-event-listener-linux-amd64",
"arm64": "https://hub.diyla.com/https://github.com/dokku/dokku-event-listener/releases/download/v0.20.1/dokku-event-listener-linux-arm64"
}
},
{
"name": "dokku-update",
"version": "0.9.4",
"version": "0.10.0",
"urls": {
"amd64": "https://github.com/dokku/dokku-update/releases/download/v0.9.4/dokku-update",
"arm64": "https://github.com/dokku/dokku-update/releases/download/v0.9.4/dokku-update"
"amd64": "https://hub.diyla.com/https://github.com/dokku/dokku-update/releases/download/v0.10.0/dokku-update",
"arm64": "https://hub.diyla.com/https://github.com/dokku/dokku-update/releases/download/v0.10.0/dokku-update"
}
},
{
"name": "herokuish",
"version": "0.10.2",
"version": "0.11.16",
"urls": {
"amd64": "https://github.com/gliderlabs/herokuish/releases/download/v0.10.2/herokuish_0.10.2_linux_x86_64.tgz",
"arm64": "https://github.com/gliderlabs/herokuish/releases/download/v0.10.2/herokuish_0.10.2_linux_x86_64.tgz"
"amd64": "https://hub.diyla.com/https://github.com/gliderlabs/herokuish/releases/download/v0.11.16/herokuish_0.11.16_linux_x86_64.tgz",
"arm64": "https://hub.diyla.com/https://github.com/gliderlabs/herokuish/releases/download/v0.11.16/herokuish_0.11.16_linux_x86_64.tgz"
}
}
]
}
}

View File

@@ -1,8 +1,9 @@
#!/usr/bin/env bash
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
export DOKKU_PORT=${DOKKU_PORT:=22}
export DOKKU_PORT=${DOKKU_PORT:=}
export DOKKU_HOST=${DOKKU_HOST:=}
export DOKKU_APP_PATH=${DOKKU_APP_PATH:=}
fn-random-number() {
[[ -n "$1" ]] && RANGE="$1"
@@ -61,12 +62,42 @@ fn-dokku-host() {
echo "$DOKKU_HOST"
}
fn-dokku-app() {
declare DOKKU_GIT_REMOTE="$1" DOKKU_REMOTE_HOST="$2"
remote_output="$(git remote -v 2>/dev/null | grep -Ei "^${DOKKU_GIT_REMOTE}\s" | head -n 1 | awk '{print $2}')"
# check if there is a scheme
if echo "$remote_output" | grep -qEi "ssh://"; then
echo "$remote_output" | grep -Ei "ssh://dokku@$DOKKU_REMOTE_HOST" | cut -f2 -d'@' | cut -f2 -d'/' 2>/dev/null
else
echo "$remote_output" | grep -Ei "dokku@$DOKKU_REMOTE_HOST" | cut -f2 -d'@' | cut -f2 -d':' 2>/dev/null
fi
}
fn-dokku-port() {
declare DOKKU_GIT_REMOTE="$1" DOKKU_REMOTE_HOST="$2"
remote_output="$(git remote -v 2>/dev/null | grep -Ei "^${DOKKU_GIT_REMOTE}\s" | head -n 1 | awk '{print $2}')"
if echo "$remote_output" | grep -qEi "ssh://"; then
local output="$(echo "$remote_output" | grep -Ei "ssh://dokku@$DOKKU_REMOTE_HOST" | cut -f2 -d'@' | cut -f1 -d'/' 2>/dev/null)"
# check if output has a : and if so, get the port
if echo "$output" | grep -qEi ":"; then
echo "$output" | cut -f2 -d':' 2>/dev/null
else
echo "22"
fi
else
echo "22"
fi
}
fn-get-remote() {
git config dokku.remote 2>/dev/null || echo "dokku"
}
main() {
declare CMD="$1" APP_ARG="$2"
local APP="" DOKKU_GIT_REMOTE="$(fn-get-remote)" DOKKU_REMOTE_HOST=""
local cmd_set=false next_index=1 skip=false args=("$@")
@@ -84,6 +115,10 @@ main() {
APP=${args[$next_index]}
skip=true
shift 2
elif [[ "$arg" == "--app-path" ]]; then
DOKKU_APP_PATH=${args[$next_index]}
skip=true
shift 2
elif [[ "$arg" == "--remote" ]]; then
DOKKU_GIT_REMOTE=${args[$next_index]}
skip=true
@@ -103,6 +138,11 @@ main() {
next_index=$((next_index + 1))
done
if [[ -n "$DOKKU_APP_PATH" ]]; then
pushd "$DOKKU_APP_PATH" &>/dev/null || exit 1
trap 'popd &>/dev/null || true' RETURN INT TERM
fi
DOKKU_REMOTE_HOST="$(fn-dokku-host "$DOKKU_GIT_REMOTE" "$DOKKU_HOST")"
if [[ -z "$DOKKU_REMOTE_HOST" ]] && [[ "$CMD" != remote ]] && [[ "$CMD" != remote:* ]]; then
fn-client-help-msg
@@ -111,14 +151,28 @@ main() {
if [[ -z "$APP" ]]; then
if [[ -d .git ]] || git rev-parse --git-dir &>/dev/null; then
set +e
APP=$(git remote -v 2>/dev/null | grep -Ei "^${DOKKU_GIT_REMOTE}\s" | grep -Ei "dokku@$DOKKU_REMOTE_HOST" | head -n 1 | cut -f2 -d'@' | cut -f1 -d' ' | cut -f2 -d':' 2>/dev/null)
APP="$(fn-dokku-app "$DOKKU_GIT_REMOTE" "$DOKKU_REMOTE_HOST")"
set -e
else
echo " ! This is not a git repository" 1>&2
fi
fi
if [[ -z "$DOKKU_PORT" ]]; then
DOKKU_PORT="$(fn-dokku-port "$DOKKU_GIT_REMOTE" "$DOKKU_REMOTE_HOST")"
fi
case "$CMD" in
remote:show)
echo "dokku-app: $APP"
echo "dokku-git-remote: $DOKKU_GIT_REMOTE"
echo "dokku-host: $DOKKU_HOST"
echo "dokku-port: $DOKKU_PORT"
echo "dokku-remote-host: $DOKKU_REMOTE_HOST"
echo "dokku-ssh-user: dokku"
echo "dokku-constructed-remote: ssh://dokku@$DOKKU_REMOTE_HOST:$DOKKU_PORT/$APP"
exit 0
;;
apps:create)
if [[ -z "$APP" ]] && [[ -z "$APP_ARG" ]]; then
APP=$(fn-random-name)
@@ -129,7 +183,7 @@ main() {
ssh -p "$DOKKU_PORT" "dokku@$DOKKU_REMOTE_HOST" apps
exit 1
else
APP=$(random_name)
APP=$(fn-random-name)
counter=$((counter + 1))
fi
done
@@ -184,8 +238,13 @@ main() {
esac
[[ " apps certs help ls nginx shell storage trace version " == *" $CMD "* ]] && unset APP
[[ " certs:chain domains:add-global domains:remove-global domains:set-global ps:restore " == *" $CMD "* ]] && unset APP
[[ " certs:chain domains:add-global domains:clear-global domains:remove-global domains:set-global ps:restore " == *" $CMD "* ]] && unset APP
[[ " storage:ensure-directory " == *" $CMD "* ]] && unset APP
[[ " network:create network:destroy network:exists network:info network:list network:rebuildall " == *" $CMD "* ]] && unset APP
[[ " logs:vector-logs logs:vector-start logs:vector-stop " == *" $CMD "* ]] && unset APP
[[ " scheduler-k3s:cluster:add scheduler-k3s:cluster:list scheduler-k3s:cluster:remove " == *" $CMD "* ]] && unset APP
[[ " scheduler-k3s:ensure-charts scheduler-k3s:initialize scheduler-k3s:show-kubeconfig scheduler-k3s:uninstall " == *" $CMD "* ]] && unset APP
[[ " scheduler-k3s:profiles:add scheduler-k3s:profiles:list scheduler-k3s:profiles:remove " == *" $CMD "* ]] && unset APP
[[ "$CMD" =~ events*|plugin*|ssh-keys* ]] && unset APP
[[ -n "$APP_ARG" ]] && [[ "$APP_ARG" == "--global" ]] && unset APP
if [[ -n "$@" ]] && [[ -n "$APP" ]]; then

View File

@@ -355,7 +355,7 @@ function checkFirewall {
elif [[ $OS == "CentOS Linux" ]] || [[ $OS == "CentOS Stream" ]] || [[ $OS == "Rocky Linux" ]] || [[ $OS == "AlmaLinux" ]]; then
if [ -f /usr/lib/systemd/system/csf.service ]; then
fw="csf"
if [[ $(systemctl status $fw >/dev/null 2>&1) ]]; then
if systemctl status $fw >/dev/null 2>&1; then
FW_VER="\e[32m[PASS]\e[0m Firewall service (${fw}) is active\n"
((PASS++))

View File

@@ -134,7 +134,7 @@ fn-publish-package() {
[[ "$RELEASE_TYPE" == "raspbian" ]] && DIST=raspbian
if [[ "$RELEASE_TYPE" == "raspbian" ]]; then
OS_IDS=("bullseye" "bookworm")
OS_IDS=("bullseye" "bookworm" "trixie")
for OS_ID in "${OS_IDS[@]}"; do
log-info "(release-dokku) pushing deb to packagecloud.com/${REPOSITORY}/${DIST}"
package_cloud push "${REPOSITORY}/${DIST}/${OS_ID}" "$PACKAGE_NAME"
@@ -144,7 +144,7 @@ fn-publish-package() {
fi
done
elif [[ "$DIST" == "ubuntu" ]]; then
OS_IDS=("focal" "jammy" "noble")
OS_IDS=("jammy" "noble")
for OS_ID in "${OS_IDS[@]}"; do
log-info "(release-dokku) pushing ${RELEASE_TYPE} to packagecloud.com/${REPOSITORY}/${DIST}"
package_cloud push "${REPOSITORY}/${DIST}/${OS_ID}" "$PACKAGE_NAME"
@@ -155,7 +155,7 @@ fn-publish-package() {
done
DIST=debian
OS_IDS=("bullseye" "bookworm")
OS_IDS=("bullseye" "bookworm" "trixie")
for OS_ID in "${OS_IDS[@]}"; do
log-info "(release-dokku) pushing ${RELEASE_TYPE} to packagecloud.com/${REPOSITORY}/${DIST}"
package_cloud push "${REPOSITORY}/${DIST}/${OS_ID}" "$PACKAGE_NAME"
@@ -183,9 +183,9 @@ fn-replace-version() {
fn-repo-merged-requests() {
declare desc="Retrieves all pull request ids since a given release of dokku"
declare TAG="$1" IS_PATCH="$2"
declare CURRENT_VERSION="$1" NEXT_VERSION="$2" IS_PATCH="$3"
if [[ "$IS_PATCH" == "true" ]]; then
git log "v${TAG}..HEAD" --oneline | grep "Merge pull request" | cut -d' ' -f 5 | cut -d '#' -f2
git log "v${CURRENT_VERSION}..HEAD" --oneline | grep "Merge pull request" | cut -d' ' -f 5 | cut -d '#' -f2
else
curl -u "$RELEASE_GITHUB_USERNAME:$RELEASE_GITHUB_API_TOKEN" --fail -sS "https://api.github.com/search/issues?q=repo:dokku/dokku+milestone:v${NEXT_VERSION}+is:pr&per_page=100" | jq '.items[].number'
fi
@@ -250,13 +250,13 @@ fn-repo-update-history-and-commit() {
declare desc="Updates the history file and commits the changes"
declare CURRENT_VERSION="$1" NEXT_VERSION="$2" IS_PATCH="$3"
local PULL_REQUEST_ID TITLE AUTHOR TYPE CHANGELOG_TEXT
local COMMIT_MESSAGE HISTORY HISTORY_CONTENTS HISTORY_BUG HISTORY_DEPENDENCY HISTORY_DEPRECATION HISTORY_DOCUMENTATION HISTORY_ENHANCEMENT HISTORY_BC_BREAK HISTORY_REFACTOR HISTORY_REMOVAL HISTORY_OTHER HISTORY_TESTS ISSUE_FILE
local COMMIT_MESSAGE HISTORY HISTORY_CONTENTS HISTORY_BUG HISTORY_DEPENDENCY HISTORY_DEPRECATION HISTORY_DOCUMENTATION HISTORY_ENHANCEMENT HISTORY_BC_BREAK HISTORY_REFACTOR HISTORY_REMOVAL HISTORY_SECURITY HISTORY_OTHER HISTORY_TESTS ISSUE_FILE
pushd "$ROOT_DIR" >/dev/null
mkdir -p /tmp/github-data
for PULL_REQUEST_ID in $(fn-repo-merged-requests "$CURRENT_VERSION" "$IS_PATCH"); do
for PULL_REQUEST_ID in $(fn-repo-merged-requests "$CURRENT_VERSION" "$NEXT_VERSION" "$IS_PATCH"); do
ISSUE_FILE="/tmp/github-data/${PULL_REQUEST_ID}.json"
if [[ ! -f "$ISSUE_FILE" ]]; then
while true; do
@@ -295,6 +295,8 @@ fn-repo-update-history-and-commit() {
HISTORY_REFACTOR="${HISTORY_REFACTOR}"$'\n'"$CHANGELOG_TEXT"
elif [[ "$TYPE" == "removal" ]]; then
HISTORY_REMOVAL="${HISTORY_REMOVAL}"$'\n'"$CHANGELOG_TEXT"
elif [[ "$TYPE" == "security" ]]; then
HISTORY_SECURITY="${HISTORY_SECURITY}"$'\n'"$CHANGELOG_TEXT"
elif [[ "$TYPE" == "tests" ]]; then
HISTORY_TESTS="${HISTORY_TESTS}"$'\n'"$CHANGELOG_TEXT"
else
@@ -314,6 +316,11 @@ fn-repo-update-history-and-commit() {
HISTORY="${HISTORY}"$'\n\n'"See the [${NEXT_VERSION} migration guide](/docs/appendices/${NEXT_VERSION}-migration-guide.md) for more information on migrating to ${NEXT_VERSION}."
fi
if [[ "$HISTORY_SECURITY" ]]; then
HISTORY="${HISTORY}"$'\n\n'"### Security"
HISTORY="${HISTORY}"$'\n'"$HISTORY_SECURITY"
fi
if [[ "$HISTORY_BC_BREAK" ]]; then
HISTORY="${HISTORY}"$'\n\n'"### Backwards Compatibility Breaks"
HISTORY="${HISTORY}"$'\n'"$HISTORY_BC_BREAK"

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env python3
import json
import re
def main():
@@ -18,11 +19,9 @@ def main():
for dependency in deps[key]:
name = dependency["name"]
version = dependency["version"]
pattern = re.compile(rf"(?<![\w-]){re.escape(name)}(?![\w-])")
for i, line in enumerate(control_lines):
if name in line:
control_lines[i] = control_lines[i].replace(
name, f"{name} (>= {version})"
)
control_lines[i] = pattern.sub(f"{name} (>= {version})", line)
with open("debian/control", mode="w", encoding="utf-8") as handle:
handle.writelines(control_lines)

1
debian/config vendored
View File

@@ -14,5 +14,6 @@ db_input "high" "dokku/hostname" || true
db_input "high" "dokku/vhost_enable" || true
if [ "$ACTION" != "reconfigure" ]; then
db_input "high" "dokku/key_file" || true
db_input "high" "dokku/install_default_site" || true
fi
db_go || true

6
debian/control vendored
View File

@@ -1,11 +1,11 @@
Package: dokku
Version: 0.35.16
Version: 0.38.27
Section: web
Priority: optional
Architecture: amd64
Depends: apache2-utils, locales, git, cpio, cron, curl, man-db, netcat, sshcommand, docker-engine-cs (>= 19.03.0) | docker-engine (>= 19.03.0) | docker-io (>= 19.03.0) | docker.io (>= 19.03.0) | docker-ce (>= 19.03.0) | docker-ee (>= 19.03.0) | moby-engine, docker-compose-plugin | moby-compose, docker-buildx-plugin | moby-buildx, docker-container-healthchecker, docker-image-labeler, lambda-builder, net-tools, netrc, parallel, procfile-util, rsync, dos2unix, jq, unzip, util-linux
Depends: apache2-utils, locales, git, cpio, cron | cron-daemon, curl, logrotate, man-db, netcat, sshcommand, docker-engine-cs (>= 19.03.0) | docker-engine (>= 19.03.0) | docker-io (>= 19.03.0) | docker.io (>= 19.03.0) | docker-ce (>= 19.03.0) | docker-ee (>= 19.03.0) | moby-engine, docker-compose-plugin | moby-compose | docker-compose, docker-buildx-plugin | moby-buildx | docker-buildx, docker-container-healthchecker, docker-image-labeler, lambda-builder, net-tools, netrc, parallel, procfile-util, rsync, dos2unix, unzip, util-linux
Recommends: herokuish, bash-completion, dokku-update, dokku-event-listener
Pre-Depends: gliderlabs-sigil, nginx (>= 1.8.0) | openresty, bind9-dnsutils, debconf, plugn, sudo, python3, rsyslog
Pre-Depends: gliderlabs-sigil, jq, nginx (>= 1.8.0) | openresty, bind9-dnsutils, debconf, plugn, sudo, python3, rsyslog
Maintainer: Jose Diaz-Gonzalez <dokku@josediazgonzalez.com>
Description: Docker-powered PaaS that helps build and manage the lifecycle of applications
Dokku is an extensible, open source Platform as a Service

120
debian/postinst vendored
View File

@@ -24,6 +24,40 @@ call-sshcommand() {
fi
}
setup-docker-live-restore() {
# skip if running in docker-based installation
if [[ "$DOKKU_INIT_SYSTEM" == "sv" ]]; then
return
fi
# allow disabling via /etc/default/dokku
if [[ "$DOKKU_LIVE_RESTORE" == "false" ]]; then
return
fi
live_restore="$(docker info --format '{{ .LiveRestoreEnabled }}' || true)"
if [ "$live_restore" = "true" ]; then
echo "Docker live-restore is already enabled"
return
fi
echo "Enabling docker live-restore"
if [[ ! -f /etc/docker/daemon.json ]]; then
mkdir -p /etc/docker
echo "{}" >/etc/docker/daemon.json
fi
config="$(jq '. + {"live-restore": true}' /etc/docker/daemon.json)"
echo "$config" >/etc/docker/daemon.json
if command -v systemctl &>/dev/null; then
if ! systemctl reload docker; then
echo "Unable to reload docker, please reload manually" 1>&2
fi
else
echo "Unable to reload docker, please reload manually" 1>&2
fi
}
setup-user() {
echo "Setting up dokku user"
call-sshcommand create dokku /usr/bin/dokku
@@ -101,6 +135,85 @@ setup-sshcommand() {
fi
}
disable-default-vhost-path() {
local path="$1"
local backup_path="${path}.dokku-disabled"
if [ ! -e "$path" ] && [ ! -L "$path" ]; then
return
fi
if [ -e "$backup_path" ] || [ -L "$backup_path" ]; then
return
fi
case "$path" in
/etc/nginx/sites-enabled/*)
rm -f "$path"
echo "Removed conflicting nginx default at $path" 1>&2
return
;;
esac
if [ -L "$path" ]; then
rm -f "$path"
echo "Removed conflicting nginx default symlink at $path" 1>&2
return
fi
mv -n "$path" "$backup_path"
echo "Disabled $path (renamed to $backup_path)" 1>&2
}
setup-default-site() {
db_get "dokku/install_default_site"
if [ "$RET" != "true" ]; then
return
fi
local nginx_bin nginx_version major minor patch
nginx_bin="$(command -v nginx || true)"
if [ -z "$nginx_bin" ]; then
return
fi
nginx_version="$("$nginx_bin" -v 2>&1 | cut -d'/' -f 2 | awk '{print $1}')"
major="$(echo "$nginx_version" | awk -F. '{print $1}')"
minor="$(echo "$nginx_version" | awk -F. '{print $2}')"
patch="$(echo "$nginx_version" | awk -F. '{print $3}')"
# ssl_reject_handshake requires nginx >= 1.19.4; older nginx gets the
# HTTP-only catch-all so the SSL listen lines do not require a cert.
local default_vhost_basename="default-site.conf"
if [ "${major:-0}" -lt 2 ]; then
if [ "${major:-0}" -lt 1 ] || [ "${minor:-0}" -lt 19 ] || { [ "${minor:-0}" -eq 19 ] && [ "${patch:-0}" -lt 4 ]; }; then
default_vhost_basename="default-site-legacy.conf"
fi
fi
local default_vhost_target="/etc/nginx/conf.d/00-default-vhost.conf"
local default_vhost_source="${DOKKU_LIB_ROOT}/core-plugins/available/nginx-vhosts/templates/${default_vhost_basename}"
if [ -e "$default_vhost_target" ]; then
return
fi
if [ ! -f "$default_vhost_source" ]; then
return
fi
for path in /etc/nginx/sites-enabled/default /etc/nginx/sites-available/default /etc/nginx/conf.d/default.conf; do
disable-default-vhost-path "$path"
done
echo "Installing nginx default catch-all site at $default_vhost_target"
install -m 0644 -o root -g root "$default_vhost_source" "$default_vhost_target"
if command -v dokku &>/dev/null; then
dokku nginx:reload || true
fi
}
dpkg-handling() {
if [ -f "${DOKKU_ROOT}/VHOST" ]; then
echo "VHOST file detected, skipping modification"
@@ -128,9 +241,6 @@ case "$1" in
configure)
mandb
[ ! -x /usr/bin/docker.io ] || ln -sf /usr/bin/docker.io /usr/local/bin/docker
if [[ -f /sbin/modprobe ]]; then
modprobe aufs || echo "WARNING: Restart server to finish installing dokku!"
fi
setup-user
setup-storage
@@ -138,6 +248,10 @@ case "$1" in
dpkg-handling
setup-plugins
setup-sshcommand
setup-docker-live-restore
if [ -z "$2" ]; then
setup-default-site
fi
;;
*)

5
debian/templates vendored
View File

@@ -22,3 +22,8 @@ Template: dokku/nginx_enable
Description: Enable nginx-vhosts plugin?
Type: boolean
Default: true
Template: dokku/install_default_site
Description: Install a catch-all nginx default site on fresh install?
Type: boolean
Default: true

View File

@@ -35,6 +35,9 @@ main() {
support-userns
rm -f /var/run/dokku/ready
mkdir -p /var/run/dokku
if [[ ! -d /mnt/dokku ]]; then
log-info "Creating missing /mnt/dokku"
mkdir -p /mnt/dokku
@@ -86,7 +89,7 @@ main() {
fi
# run core install triggers to force create any folders that may be missing
dokku plugin:install --core
dokku plugin:install
if [[ -n "$DOKKU_HOSTNAME" ]]; then
echo "dokku dokku/hostname string $DOKKU_HOSTNAME" | debconf-set-selections

View File

@@ -0,0 +1,16 @@
# Internal health endpoint for the official dokku/dokku Docker image.
# Bound to loopback so it is reachable only from inside the container
# and never conflicts with user app vhosts on 80/443.
server {
listen 127.0.0.1:18080;
server_name _;
access_log off;
default_type text/plain;
location = /_dokku/health {
if (-f /var/run/dokku/ready) {
return 200 "ok\n";
}
return 503 "not ready\n";
}
}

View File

@@ -10,6 +10,10 @@ if [[ "$1" -ne 0 ]]; then
fi
echo "Done restoring dokku apps."
exec sleep infinity
exit 0
while ! (echo >/dev/tcp/127.0.0.1/22) >/dev/null 2>&1; do sleep 1; done
while ! (echo >/dev/tcp/127.0.0.1/80) >/dev/null 2>&1; do sleep 1; done
touch /var/run/dokku/ready
echo "Dokku is ready."
exec sleep infinity

View File

@@ -1 +1 @@
dokku ALL=NOPASSWD:SETENV:/usr/bin/docker,/usr/bin/docker-container-healthchecker,/usr/bin/docker-image-labeler,/usr/bin/pack
dokku ALL=NOPASSWD:SETENV:/usr/bin/docker,/usr/bin/docker-container-healthchecker,/usr/bin/docker-image-labeler,/usr/bin/lambda-builder,/usr/bin/nixpacks,/usr/bin/railpack,/usr/bin/pack

View File

@@ -0,0 +1,20 @@
#!/usr/bin/env bash
set -eo pipefail
[[ $TRACE ]] && set -x
main() {
declare desc="re-runs lambda-builder commands as sudo"
local LAMBDA_BUILDER_BIN=""
if [[ -x "/usr/bin/lambda-builder" ]]; then
LAMBDA_BUILDER_BIN="/usr/bin/lambda-builder"
fi
if [[ -z "$LAMBDA_BUILDER_BIN" ]]; then
echo "! No lambda-builder binary found" 1>&2
exit 1
fi
sudo -E "$LAMBDA_BUILDER_BIN" "$@"
}
main "$@"

View File

@@ -0,0 +1,20 @@
#!/usr/bin/env bash
set -eo pipefail
[[ $TRACE ]] && set -x
main() {
declare desc="re-runs nixpacks commands as sudo"
local NIXPACKS_BIN=""
if [[ -x "/usr/bin/nixpacks" ]]; then
NIXPACKS_BIN="/usr/bin/nixpacks"
fi
if [[ -z "$NIXPACKS_BIN" ]]; then
echo "! No nixpacks binary found" 1>&2
exit 1
fi
sudo -E "$NIXPACKS_BIN" "$@"
}
main "$@"

View File

@@ -0,0 +1,20 @@
#!/usr/bin/env bash
set -eo pipefail
[[ $TRACE ]] && set -x
main() {
declare desc="re-runs railpack commands as sudo"
local RAILPACK_BIN=""
if [[ -x "/usr/bin/railpack" ]]; then
RAILPACK_BIN="/usr/bin/railpack"
fi
if [[ -z "$RAILPACK_BIN" ]]; then
echo "! No railpack binary found" 1>&2
exit 1
fi
sudo -E "$RAILPACK_BIN" "$@"
}
main "$@"

161
docs/README.md Normal file
View File

@@ -0,0 +1,161 @@
# Dokku Documentation
This documentation covers the installation, configuration, and usage of Dokku - a Docker-powered PaaS that provides a Heroku-like experience.
## Getting Started
- [Installation](getting-started/installation/index.md) - Install Dokku on your server
- [Debian](getting-started/install/debian.md)
- [Docker](getting-started/install/docker.md)
- [DigitalOcean](getting-started/install/digitalocean.md)
- [Azure](getting-started/install/azure.md)
- [DreamHost](getting-started/install/dreamhost.md)
- [Vagrant](getting-started/install/vagrant.md)
- [Advanced Installation](getting-started/advanced-installation.md) - Custom installation options
- [Upgrading](getting-started/upgrading/index.md) - Upgrade to newer Dokku versions
- [Uninstalling](getting-started/uninstalling.md) - Remove Dokku from your server
- [Troubleshooting](getting-started/troubleshooting.md) - Common issues and solutions
- [Where to Get Help](getting-started/where-to-get-help.md) - Support resources
## Deployment
- [Application Deployment](deployment/application-deployment.md) - Deploy your first app
- [Application Management](deployment/application-management.md) - Manage deployed applications
- [Logs](deployment/logs.md) - View application logs
- [Remote Commands](deployment/remote-commands.md) - Run commands remotely
- [User Management](deployment/user-management.md) - Manage SSH access
- [Zero Downtime Deploys](deployment/zero-downtime-deploys.md) - Deploy without interruption
### Deployment Methods
- [Git](deployment/methods/git.md) - Deploy via git push
- [Archive](deployment/methods/archive.md) - Deploy from tar/zip archives
- [Image](deployment/methods/image.md) - Deploy from Docker images
### Builders
- [Builder Management](deployment/builders/builder-management.md) - Configure build systems
- [Buildpack Management](deployment/builders/buildpack-management.md) - Manage buildpack settings
- [Herokuish Buildpacks](deployment/builders/herokuish-buildpacks.md) - Heroku-compatible buildpacks
- [Cloud Native Buildpacks](deployment/builders/cloud-native-buildpacks.md) - CNB support
- [Dockerfiles](deployment/builders/dockerfiles.md) - Build from Dockerfile
- [Nixpacks](deployment/builders/nixpacks.md) - Nixpacks builder
- [Railpack](deployment/builders/railpack.md) - Railpack builder
- [Lambda](deployment/builders/lambda.md) - Lambda-style functions
- [Null Builder](deployment/builders/null.md) - Skip the build phase
### Schedulers
- [Scheduler Management](deployment/schedulers/scheduler-management.md) - Configure schedulers
- [Docker Local](deployment/schedulers/docker-local.md) - Default Docker scheduler
- [K3s](deployment/schedulers/k3s.md) - Lightweight Kubernetes
- [Kubernetes](deployment/schedulers/kubernetes.md) - External Kubernetes clusters
- [Nomad](deployment/schedulers/nomad.md) - HashiCorp Nomad
- [Null Scheduler](deployment/schedulers/null.md) - Skip scheduling
### Continuous Integration
- [Generic CI](deployment/continuous-integration/generic.md) - General CI/CD setup
- [GitHub Actions](deployment/continuous-integration/github-actions.md)
- [GitLab CI](deployment/continuous-integration/gitlab-ci.md)
- [Woodpecker CI](deployment/continuous-integration/woodpecker-ci.md)
## Configuration
- [Environment Variables](configuration/environment-variables.md) - Configure app environment
- [Domains](configuration/domains.md) - Custom domain management
- [SSL/TLS](configuration/ssl.md) - HTTPS and certificates
## Networking
- [Proxy Management](networking/proxy-management.md) - Reverse proxy configuration
- [Port Management](networking/port-management.md) - Port mapping and exposure
- [DNS](networking/dns.md) - DNS configuration
- [Network](networking/network.md) - Docker network management
### Proxies
- [Nginx](networking/proxies/nginx.md) - Default proxy
- [Caddy](networking/proxies/caddy.md)
- [HAProxy](networking/proxies/haproxy.md)
- [Traefik](networking/proxies/traefik.md)
- [OpenResty](networking/proxies/openresty.md)
## Processes
- [Process Management](processes/process-management.md) - Scale and manage processes
- [Scheduled Cron Tasks](processes/scheduled-cron-tasks.md) - Scheduled jobs
- [One-off Tasks](processes/one-off-tasks.md) - Run one-time commands
- [Entering Containers](processes/entering-containers.md) - Access running containers
## Advanced Usage
- [Persistent Storage](advanced-usage/persistent-storage.md) - Mount volumes
- [Docker Options](advanced-usage/docker-options.md) - Custom Docker run arguments
- [Resource Management](advanced-usage/resource-management.md) - CPU and memory limits
- [Plugin Management](advanced-usage/plugin-management.md) - Install and manage plugins
- [Registry Management](advanced-usage/registry-management.md) - Docker registry integration
- [Repository Management](advanced-usage/repository-management.md) - Git repository settings
- [Build Tracking](advanced-usage/builds.md) - Inspect, cancel, and manage builds
- [Deployment Tasks](advanced-usage/deployment-tasks.md) - Pre/post deploy hooks
- [Event Logs](advanced-usage/event-logs.md) - Dokku event history
- [Backup and Recovery](advanced-usage/backup-recovery.md) - Data backup strategies
## Development
- [Architecture](development/architecture.md) - Internal architecture overview for contributors
- [Plugin Creation](development/plugin-creation.md) - Build custom plugins
- [Plugin Triggers](development/plugin-triggers.md) - Available plugin hooks
- [Testing](development/testing.md) - Test Dokku and plugins
- [Release Process](development/release-process.md) - How Dokku releases work
## Community
- [Plugins](community/plugins.md) - Community-maintained plugins
- [Clients](community/clients.md) - API clients and tools
## Enterprise
- [Dokku Pro](enterprise/pro.md) - Commercial features and support
## Appendices
### Migration Guides
- [0.38.0](appendices/0.38.0-migration-guide.md)
- [0.37.0](appendices/0.37.0-migration-guide.md)
- [0.36.0](appendices/0.36.0-migration-guide.md)
- [0.35.0](appendices/0.35.0-migration-guide.md)
- [0.34.0](appendices/0.34.0-migration-guide.md)
- [0.33.0](appendices/0.33.0-migration-guide.md)
- [0.32.0](appendices/0.32.0-migration-guide.md)
- [0.31.0](appendices/0.31.0-migration-guide.md)
- [0.30.0](appendices/0.30.0-migration-guide.md)
- [0.29.0](appendices/0.29.0-migration-guide.md)
- [0.28.0](appendices/0.28.0-migration-guide.md)
- [0.27.0](appendices/0.27.0-migration-guide.md)
- [0.26.0](appendices/0.26.0-migration-guide.md)
- [0.25.0](appendices/0.25.0-migration-guide.md)
- [0.24.0](appendices/0.24.0-migration-guide.md)
- [0.23.0](appendices/0.23.0-migration-guide.md)
- [0.22.0](appendices/0.22.0-migration-guide.md)
- [0.21.0](appendices/0.21.0-migration-guide.md)
- [0.20.0](appendices/0.20.0-migration-guide.md)
- [0.10.0](appendices/0.10.0-migration-guide.md)
- [0.9.0](appendices/0.9.0-migration-guide.md)
- [0.8.0](appendices/0.8.0-migration-guide.md)
- [0.7.0](appendices/0.7.0-migration-guide.md)
- [0.6.0](appendices/0.6.0-migration-guide.md)
- [0.5.0](appendices/0.5.0-migration-guide.md)
### File Formats
- [app.json](appendices/file-formats/app-json.md) - Application configuration
- [Procfile](appendices/file-formats/procfile.md) - Process definitions
- [Dockerfile](appendices/file-formats/dockerfile.md) - Docker build instructions
- [.buildpacks](appendices/file-formats/buildpacks-file.md) - Buildpack configuration
- [project.toml](appendices/file-formats/project-toml.md) - CNB configuration
- [nixpacks.toml](appendices/file-formats/nixpacks-toml.md) - Nixpacks configuration
- [railpack.json](appendices/file-formats/railpack-json.md) - Railpack configuration
- [lambda.yml](appendices/file-formats/lambda-yml.md) - Lambda configuration
- [nginx.conf.sigil](appendices/file-formats/nginx-conf-sigil.md) - Nginx template customization

View File

@@ -1,4 +1,4 @@
FROM python:3.13.2-alpine
FROM python:3.15.0rc1-alpine
WORKDIR /usr/src/app

View File

@@ -1,23 +1,23 @@
beautifulsoup4==4.13.3
click==8.1.8
beautifulsoup4==4.15.0
click==8.4.2
ghp-import==2.1.0
importlib-metadata==8.6.1
Jinja2==3.1.5
Markdown>=3.2.1,<3.8
MarkupSafe==3.0.2
importlib-metadata==9.0.0
Jinja2==3.1.6
Markdown>=3.10.3,<3.11
MarkupSafe==3.0.3
mergedeep==1.3.4
mkdocs==1.6.1
mkdocs-exclude==1.0.2
mkdocs-material==9.6.7
mkdocs-material==9.7.7
mkdocs-material-extensions==1.3.1
packaging==24.2
Pygments==2.19.1
pymdown-extensions==10.14.3
pyparsing==3.2.1
packaging==26.3
Pygments==2.21.0
pymdown-extensions==11.0.1
pyparsing==3.3.2
python-dateutil==2.9.0.post0
PyYAML==6.0.2
pyyaml_env_tag==0.1
PyYAML==6.0.3
pyyaml_env_tag==1.1
six==1.17.0
soupsieve==2.6
soupsieve==2.9.2
watchdog==6.0.0
zipp==3.21.0
zipp==4.1.0

View File

@@ -96,6 +96,14 @@ System administrators are highly encouraged to store persistent data in app-spec
See the [persistent storage documentation](/docs/advanced-usage/persistent-storage.md) for more information on how to attach persistent storage to your app.
### Restoring on a machine with a different CPU Architecture
When restoring a backup on a machine that has a different CPU architecture, you will need to clear out the `~/.basher` as it's not portable across different CPU architectures. Do so with the following command immediately after restoring your dokku configs:
```shell
rm -rf /home/dokku/.basher
```
## Recovering app code
In case of an emergency when your git repo and backups are completely lost, you can recover the last pushed copy from your remote Dokku server (assuming you still have the ssh key).

View File

@@ -0,0 +1,197 @@
# Build Tracking
> [!IMPORTANT]
> New as of 0.38.0
Every deploy that flows through Dokku - whether triggered by `git push`, `ps:rebuild`, `ps:restart`, `config:set`, or `git:from-archive` / `git:from-image` / `git:sync` / `git:load-image` - is recorded as a structured build record on disk. The `builds` plugin lets operators inspect what is currently deploying, look up the result of an old deploy, and stream the captured build log without depending on `journalctl`.
```
builds:cancel <app> # Cancel a running build for an app
builds:info <app> <build-id> [--format json] # Show details for a single build
builds:list [<app>] [--format json] [--kind ...] [--status ...]
# List builds (running across all apps, or running + history for one)
builds:output <app> [<build-id>|current] # Show build output (tail for live, cat for finished)
builds:prune <app> [--all-apps] # Reap abandoned records and apply retention
builds:report [<app>] [<flag>] # Display a build report
builds:set [--global|<app>] <key> [<value>] # Set or clear a builds property
```
## Build records
Every build is identified by a sortable base36 ULID-style id (`DOKKU_BUILD_ID`) generated at deploy start. For each build, Dokku writes:
- `$DOKKU_LIB_ROOT/data/builds/<app>/<build-id>.json` - the structured record
- `$DOKKU_LIB_ROOT/data/builds/<app>/<build-id>.log` - the captured stdout/stderr of the deploy
Output is also tagged into syslog as `dokku-<build-id>` so `journalctl -t dokku-<build-id>` continues to work. The on-disk log file is the durable source of truth and is read for `builds:output` even when journald has rotated old entries away.
### Record schema
```json
{
"id": "01j8c4xv7bk5w3",
"app": "myapp",
"kind": "build",
"pid": 12345,
"started_at": "2026-04-30T13:50:00Z",
"finished_at": "2026-04-30T13:51:14Z",
"status": "succeeded",
"source": "git-hook",
"exit_code": 0
}
```
- **kind** - `build` for paths that produce a new image (`git push`, `git:*`, `ps:rebuild`); `deploy` for paths that re-deploy an existing image (`ps:restart`, `ps:start`, `dokku deploy`, `config:set`).
- **status** - on-disk values are `running | succeeded | failed | canceled`. `abandoned` is a fifth display-only value computed at read time for `running` records whose PID is no longer alive; it is never persisted to the record.
- **source** - the user-typed command that originated the deploy (e.g. `git-hook`, `ps:restart`, `config-redeploy`, `git:sync`).
## Listing builds
Without an app argument, `builds:list` shows currently-running builds across every app on the host:
```shell
dokku builds:list
```
```
=====> Currently running builds
App Build ID Kind PID Source Started
myapp 01j8c4xv7bk5w3 build 12345 git-hook 2026-04-30T13:50:00Z
```
With an app, `builds:list` returns running builds plus the most recent finalized records up to the configured retention:
```shell
dokku builds:list myapp
```
Filter by kind or status:
```shell
dokku builds:list myapp --kind build
dokku builds:list myapp --status running
dokku builds:list --format json
```
## Inspecting a single build
```shell
dokku builds:info myapp 01j8c4xv7bk5w3
```
```
=====> Build 01j8c4xv7bk5w3
Build ID: 01j8c4xv7bk5w3
App: myapp
Kind: build
Status: succeeded
PID: 12345
Source: git-hook
Started: 2026-04-30T13:50:00Z
Finished: 2026-04-30T13:51:14Z
Duration: 1m14s
Exit Code: 0
Log: /var/lib/dokku/data/builds/myapp/01j8c4xv7bk5w3.log
```
JSON output includes the same fields plus a computed `log_path`:
```shell
dokku builds:info myapp 01j8c4xv7bk5w3 --format json | jq .
```
## Streaming build output
```shell
# tail -f the live build, or cat the log for a finished one
dokku builds:output myapp 01j8c4xv7bk5w3
# resolve "current" from the in-flight deploy
dokku builds:output myapp current
```
If the on-disk log file is missing (for example, a build from before this plugin was installed), `builds:output` falls back to `journalctl -t dokku-<build-id>`.
## Cancelling a build
`builds:cancel` reads the active `.deploy.lock` for an app, looks up the matching build record, and sends `SIGQUIT` to the deploy's process group. The record is finalized as `canceled` (or `failed` if the process had already exited without finalizing - in that case Dokku marks the record so it doesn't sit in `running` forever).
```shell
dokku builds:cancel myapp
```
If the record is already finalized when cancel runs, no signal is sent and the record is left untouched.
## Retention
Build records are pruned by count, not by age. The default retention is **20** records per app. Live in-flight deploys are never pruned regardless of count.
Set a per-app retention:
```shell
dokku builds:set myapp retention 50
```
Set the global default:
```shell
dokku builds:set --global retention 10
```
Clear an override (falls back to the global value, then the default):
```shell
dokku builds:set myapp retention
```
## Manual pruning
`builds:prune` invokes the same logic that runs at the end of every deploy - it reaps abandoned records (status=running with a dead PID, finalized as `failed`) and trims the directory to the configured retention. Useful after lowering retention via `builds:set` or to clean up after a host reboot:
```shell
dokku builds:prune myapp
dokku builds:prune --all-apps
```
## Reports
```shell
dokku builds:report
dokku builds:report myapp
dokku builds:report myapp --build-status
```
Available flags:
- `--build-id`, `--build-kind`, `--build-status`, `--build-pid`, `--build-source`, `--build-started-at`, `--build-finished-at`, `--build-exit-code`: details of the most recent build for the app
- `--builds-retention`: per-app retention override (empty if none)
- `--builds-global-retention`: global retention override (empty if none)
- `--builds-computed-retention`: the resolved retention applied to this app
`--build-status` returns the **display** status, so an abandoned in-flight build shows `abandoned` rather than `running`. The raw on-disk status is only visible by reading the JSON record directly.
## Properties
### Settable properties
> [!NOTE]
> The `Report flags` column lists the CLI argument names accepted by `builds:report`. The JSON keys emitted by `builds:report --format json` are the same names with the leading `--builds-` stripped (e.g. `retention`, `global-retention`, `computed-retention`). Legacy keys with the `builds-` prefix (e.g. `builds-retention`) are also emitted during the 0.38.x deprecation window and will be removed in a future major release. Status keys (`build-id`, `build-status`, etc.) have no plugin prefix and are unaffected.
| Property | Scope | Default | Report flags | Description |
|---|---|---|---|---|
| `retention` | app + global | `20` | `--builds-retention`, `--builds-global-retention`, `--builds-computed-retention` | Number of recent build records kept per app; older finalized records are pruned at the end of each deploy |
### Read-only flags
The following flags surface in `builds:report` but are not managed by `builds:set` - they are derived metadata recorded during the build:
| Flag | Description |
|---|---|
| `--build-id` | Unique identifier of the most recent build for the app |
| `--build-kind` | Whether the record was a `build` or a `deploy` |
| `--build-status` | Display status (`running`, `succeeded`, `failed`, `canceled`, `abandoned`); computed at read time |
| `--build-source` | Trigger that started the build (e.g. `git-hook`, `ps:rebuild`, `ps:restart`) |
| `--build-pid` | PID of the build process |
| `--build-started-at` | UNIX timestamp the build started |
| `--build-finished-at` | UNIX timestamp the build finished |
| `--build-exit-code` | Exit code of the build process |

View File

@@ -101,18 +101,20 @@ dokku app-json:report
```
=====> node-js-app app-json information
App-json computed appjson path: app2.json
App-json global appjson path: app.json
App-json global appjson path:
App-json appjson path: app2.json
=====> python-sample app-json information
App-json computed appjson path: app.json
App-json global appjson path: app.json
App-json global appjson path:
App-json appjson path:
=====> ruby-sample app-json information
App-json computed appjson path: app.json
App-json global appjson path: app.json
App-json global appjson path:
App-json appjson path:
```
The `appjson-path` and `global-appjson-path` keys hold the raw per-app and global value respectively, and are empty when nothing has been set. The `computed-appjson-path` key holds the effective value used at deploy time, falling back to the global value (where one has been set) and then to the built-in default of `app.json`.
You can run the command for a specific app also.
```shell
@@ -122,7 +124,7 @@ dokku app-json:report node-js-app
```
=====> node-js-app app-json information
App-json computed appjson path: app2.json
App-json global appjson path: app.json
App-json global appjson path:
App-json appjson path: app2.json
```

View File

@@ -4,10 +4,11 @@
> New as of 0.3.17
```
docker-options:add <app> <phase(s)> OPTION # Add Docker option to app for phase (comma-separated phase list)
docker-options:clear <app> [<phase(s)>...] # Clear a docker options from app
docker-options:remove <app> <phase(s)> OPTION # Remove Docker option from app for phase (comma-separated phase list)
docker-options:report [<app>] [<flag>] # Displays a docker options report for one or more apps
docker-options:add [--process PROC...] <app> <phase(s)> OPTION # Add Docker option to app for phase
docker-options:clear [--process PROC...] <app> [<phase(s)>...] # Clear docker options from app
docker-options:list <app> [--process PROC] --phase PHASE # List docker options for one process+phase pair
docker-options:remove [--process PROC...] <app> <phase(s)> OPTION # Remove Docker option from app for phase
docker-options:report [<app>] [<flag>] [--format json|stdout] # Displays a docker options report for one or more apps
```
The `docker-options` plugin allows users to specify custom [container options](https://docs.docker.com/engine/reference/run/) for containers created by Dokku at various phases.
@@ -37,6 +38,16 @@ More information on supported Docker options can be found [here](https://docs.do
Container options configured via the `docker-options` plugin are not used to modify the process a container runs. Container options are the `[OPTIONS]` portion of the following, where `[CONTAINER_COMMAND]` and `[ARG]` are the process and the arguments passed to it that are launched in the created container: `docker run [OPTIONS] [CONTAINER_COMMAND] [ARG...]`. Please see the documentation for [customizing the run command](/docs/deployment/builders/dockerfiles.md#customizing-the-run-command) or use a [Procfile](/docs/deployment/builders/dockerfiles.md#procfiles-and-multiple-processes) to modify the command used by a Dockerfile-based container.
#### Scheduler support
Docker options are written in Docker's own vocabulary and are passed verbatim to `docker run` by the `docker-local` scheduler. Other schedulers translate only the subset that has an equivalent in their own runtime, and ignore the rest.
The `k3s` scheduler translates `--cap-add`, `--cap-drop`, `--privileged`, and `--sysctl` into their Kubernetes equivalents. See the [k3s scheduler documentation](/docs/deployment/schedulers/k3s.md) for details, including the restriction that only namespaced sysctls can be set on a pod.
```shell
dokku docker-options:add node-js-app deploy "--sysctl net.ipv4.ip_unprivileged_port_start=1024"
```
#### Mounting volumes and host directories
Docker supports volume and host directory mounting via the `-v` or `--volume` flags. In order to simplify usage, Dokku provides a `storage` plugin as an abstraction to interact with persistent storage. In most cases, the Dokku project recommends using the persistent storage plugin over directly manipulating docker options at different phases. See the [persistent storage documentation](/docs/advanced-usage/persistent-storage.md) for more information on how to attach persistent storage to your app.
@@ -57,11 +68,31 @@ Multiple phases can be specified by using a comma when specifying phases:
dokku docker-options:add node-js-app deploy,run "--ulimit nofile=12"
```
The `docker-options:add` does not support setting multiple options in a single call. To specify multiple options, call `docker-options:add` multiple times.
Multiple docker options can also be specified in a single call. Each `--flag [value]` group is detected on flag boundaries, shell-tokenized for quoting safety, and stored as its own entry so it round-trips through `docker-options:report` and `docker-options:list`:
```shell
dokku docker-options:add node-js-app deploy "--ulimit nofile=12"
dokku docker-options:add node-js-app deploy "--shm-size 256m"
dokku docker-options:add node-js-app deploy "--ulimit nofile=12" "--shm-size 256m"
```
Option values are stored and passed to the container verbatim. Quoting only controls how a value is split into words - no shell expansion is performed, so `$(...)`, backticks, `$VAR`, and globs are treated literally rather than being interpreted by the shell. This is what lets values such as a Traefik router rule be applied as-is:
```shell
dokku docker-options:add node-js-app deploy '--label "traefik.http.routers.web.rule=Host(`node-js-app.example.com`) && PathPrefix(`/api`)"'
```
> [!WARNING]
> Options added before 0.38.25 were expanded by the shell when a container was created. Any such option that relied on shell expansion - `$(...)`, backticks, or `$VAR` - is treated as a literal string after upgrading and must be re-added with the value already resolved:
>
> ```shell
> dokku docker-options:remove node-js-app deploy "--group-add \$(getent group docker | cut -d: -f3)"
> dokku docker-options:add node-js-app deploy "--group-add $(getent group docker | cut -d: -f3)"
> ```
A misplaced `--process PROC` (i.e. one specified after the app name instead of before it) is honored as a subcommand flag rather than stored as a docker option, so the two invocations below behave identically:
```shell
dokku docker-options:add --process web node-js-app deploy "--ulimit nofile=12" "--shm-size 256m"
dokku docker-options:add node-js-app deploy "--ulimit nofile=12" "--shm-size 256m" --process web
```
#### Remove a Docker option
@@ -69,7 +100,7 @@ dokku docker-options:add node-js-app deploy "--shm-size 256m"
To remove docker options from an app, use the `docker-options:remove` command. This takes an app name, a comma-separated list of phases, and the docker-option to remove.
```shell
dokku docker-options:remove node-js-app run ""--ulimit nofile=12"
dokku docker-options:remove node-js-app run "--ulimit nofile=12"
```
Multiple phases can be specified by using a comma when specifying phases:
@@ -78,11 +109,17 @@ Multiple phases can be specified by using a comma when specifying phases:
dokku docker-options:remove node-js-app deploy,run "--ulimit nofile=12"
```
The `docker-options:remove` does not support setting multiple options in a single call. To specify multiple options, call `docker-options:remove` multiple times.
Multiple docker options can also be removed in a single call, mirroring the splitting that `docker-options:add` performs:
```shell
dokku docker-options:remove node-js-app deploy "--ulimit nofile=12"
dokku docker-options:remove node-js-app deploy "--shm-size 256m"
dokku docker-options:remove node-js-app deploy "--ulimit nofile=12" "--shm-size 256m"
```
A stored option is matched by shell word rather than by exact string, so the value only has to be equivalent to the stored one, not byte-identical. Quoting an option one way removes an option that was stored quoted another way:
```shell
dokku docker-options:add node-js-app deploy "--label 'com.example.owner=platform team'"
dokku docker-options:remove node-js-app deploy '--label "com.example.owner=platform team"'
```
#### Clear all Docker options for an app
@@ -160,3 +197,101 @@ You can pass flags which will output only the value of the specific information
```shell
dokku docker-options:report node-js-app --docker-options-build
```
When process-specific options are configured (see below), the report exposes one additional dynamic flag per configured `process.deploy` pair, named `--docker-options-deploy.<process>`:
```shell
dokku docker-options:report node-js-app --docker-options-deploy.web
```
A machine-readable JSON view is available via `--format json`:
```shell
dokku docker-options:report node-js-app --format json
```
The JSON report includes the existing string keys (`build`, `deploy`, `run`, and `deploy.<process>` when configured) plus parallel `-list` keys for the same shorthand keys. Each `-list` value is a JSON array with one element per option as originally stored via `docker-options:add`, which allows export tooling to round-trip options that contain spaces without splitting the legacy space-joined strings. Empty phases emit an empty array (`[]`). The deprecated `docker-options-*` prefixed keys are unchanged and do not gain `-list` companions.
```json
{
"build": "",
"build-list": [],
"deploy": "-v /logs:/logs --memory=512m",
"deploy-list": ["-v /logs:/logs", "--memory=512m"],
"run": "",
"run-list": [],
"deploy.web": "-p 8080:5000",
"deploy.web-list": ["-p 8080:5000"],
"docker-options-build": "",
"docker-options-deploy": "-v /logs:/logs --memory=512m",
"docker-options-run": "",
"docker-options-deploy.web": "-p 8080:5000"
}
```
### Process-Specific Options
> [!IMPORTANT]
> New as of 0.38.0
Docker options can be scoped to specific process types declared in the app's `Procfile` by passing one or more `--process` flags. This is useful when a deploy-phase option (for example a port mapping) makes sense for one process type but would conflict with another - the canonical case being a `web` process that needs `-p 6789:5000` published while the `worker` process must not bind that port.
Process scoping is supported only for the `deploy` phase. The `build` phase runs once per app and the `run` phase covers ad-hoc commands and cron tasks where no Procfile process type is in play; both reject `--process`.
There is no `--global` flag. Omitting `--process` keeps the historical behavior of applying the option to every container in the app. Avoiding a `--global` flag here is intentional: elsewhere in Dokku `--global` means "across all apps" (e.g. `dokku config:set --global`), which would be misleading in this plugin where the scope is always one app.
#### Setting process-specific options
```shell
# Add a port mapping only to the web process
dokku docker-options:add --process web node-js-app deploy "-p 6789:5000"
# Add a GPU mount only to the worker process
dokku docker-options:add --process worker node-js-app deploy "--gpus all"
```
Multiple `--process` flags can be combined to apply the same option to several process types in one call:
```shell
dokku docker-options:add --process web --process api node-js-app deploy "-v /shared:/shared"
```
If `--process` names a process type that is not currently declared in the app's `Procfile`, the command succeeds but emits a warning. This allows configuring options ahead of a deploy that adds the new process type.
The `_default_` value is reserved internally and cannot be passed to `--process`.
#### Removing and clearing process-specific options
```shell
# Remove a single option from one process
dokku docker-options:remove --process web node-js-app deploy "-p 6789:5000"
# Clear every option for a process+phase
dokku docker-options:clear --process worker node-js-app deploy
```
Without `--process`, `:remove` and `:clear` operate on the default scope only - per-process lists are left untouched.
#### Listing options for a process and phase
The `docker-options:list` command prints the options stored for a single process+phase pair, one option per line. Omitting `--process` lists the default scope.
```shell
dokku docker-options:list node-js-app --process web --phase deploy
dokku docker-options:list node-js-app --phase deploy
```
## Properties
### Internal properties
The following properties are recorded internally by the docker-options plugin and are not exposed via `docker-options:report`:
| Property | Scope | Description | Source |
|---|---|---|---|
| `migrated-from-files` | global | Global migration sentinel that records that the legacy `DOCKER_OPTIONS_<PHASE>` flat-file store has been drained into plugin properties | `plugins/docker-options/functions.go` writes `"true"` once the install-time migration runs |
| `migrated-build` | per-app | Per-app marker recording that the app's legacy `DOCKER_OPTIONS_BUILD` file was drained into the `_default_.build` property list. Only set when the legacy file contained non-empty content | `plugins/docker-options/functions.go` writes `"true"` after the per-phase drain |
| `migrated-deploy` | per-app | Per-app marker recording that the app's legacy `DOCKER_OPTIONS_DEPLOY` file was drained into the `_default_.deploy` property list. Only set when the legacy file contained non-empty content | `plugins/docker-options/functions.go` writes `"true"` after the per-phase drain |
| `migrated-run` | per-app | Per-app marker recording that the app's legacy `DOCKER_OPTIONS_RUN` file was drained into the `_default_.run` property list. Only set when the legacy file contained non-empty content | `plugins/docker-options/functions.go` writes `"true"` after the per-phase drain |
| `migrated-traefik-backticks` | global | Global sentinel recording that stored Traefik labels whose backticks carried a stray backslash have been repaired | `plugins/docker-options/functions.go` writes `"true"` once the install-time repair runs |
| `migrated-canonical-options` | global | Global sentinel recording that stored options have been rewritten into the canonical form, quoting values whose shell metacharacters were left bare by an older legacy-file drain and splitting entries that carried several flags | `plugins/docker-options/functions.go` writes `"true"` once the install-time rewrite runs |

View File

@@ -1,24 +1,41 @@
# Persistent Storage
> [!IMPORTANT]
> New as of 0.5.0
> New as of 0.5.0. Named storage entries new as of 0.38.0.
The preferred method to mount external containers to a Dokku managed container, is to use the Dokku storage plugin.
The preferred method to attach persistent storage to a Dokku-managed container is the Dokku storage plugin.
```
storage:ensure-directory [--chown option] <directory> # Creates a persistent storage directory in the recommended storage path
storage:list <app> [--format text|json] # List bind mounts for app's container(s) (host:container)
storage:mount <app> <host-dir:container-dir> # Create a new bind mount
storage:report [<app>] [<flag>] # Displays a checks report for one or more apps
storage:unmount <app> <host-dir:container-dir> # Remove an existing bind mount
storage:annotations:report [<name>] [<flag>] # Display annotations for one or more storage entries
storage:annotations:set <name> <key> [<value>] # Set or clear a single annotation on a storage entry
storage:create <name> [<path>] [flags] # Register a named storage entry
storage:destroy <name> [--force] [--destroy-host-dir] # Remove a named storage entry (must be unmounted from every app first)
storage:ensure-directory [--chown option] <directory> # [DEPRECATED] use storage:create instead
storage:exec <name> [-- <cmd>...] # Run a command (or shell) in a temporary container that mounts the entry
storage:info <name> [--format text|json] # Show details for one storage entry
storage:labels:report [<name>] [<flag>] # Display labels for one or more storage entries
storage:labels:set <name> <key> [<value>] # Set or clear a single label on a storage entry
storage:list <app> [--format text|json] # List bind mounts for an app's container(s) (legacy host:container view)
storage:list-entries [--scheduler s] [--format text|json] # List registered storage entries
storage:mount <app> <name> --container-dir <path> [flags] # Mount a named entry into an app
storage:mount <app> <host-dir:container-dir> # [LEGACY] colon-form mount, docker-local only
storage:report [<app>] [<flag>] # Display a storage report for one or more apps
storage:report --global # Display a cluster-wide entry inventory
storage:set <name> <property> [<value>] # Update a storage entry in place
storage:unmount <app> <name> [--container-dir <path>] # Remove an attachment
storage:wait <name> # Block until a k3s entry's PVC is bound
```
> The storage plugin is compatible with storage mounts created with the docker-options. The storage plugin will only list mounts from the deploy/run phase.
A storage entry is the source of truth for the underlying volume - a host directory on docker-local, or a PersistentVolumeClaim on k3s. Multiple apps can mount the same entry, and an attachment carries the per-app details (container path, phases, subpath, readonly, process type). Names are globally unique across the install and must be DNS-1123 labels (lowercase letters, digits, dashes) of 45 characters or less so they can be used verbatim as Helm release and PVC names.
The legacy `storage:mount <app> <host>:<container>` form continues to work on docker-local. On a k3s app it is rejected; create a named entry with `storage:create --scheduler k3s` and mount it instead. Existing colon-form mounts are migrated automatically the first time the new code runs - they show up as `legacy-<hash>` entries in `storage:list-entries`.
The storage plugin supports the following mount points:
- explicit paths that exist on the host
- docker volumes
- explicit paths that exist on the host (docker-local)
- docker volumes (docker-local)
- PersistentVolumeClaims provisioned via a StorageClass (k3s)
- hostPath-backed PVs (k3s)
## Usage
@@ -44,9 +61,23 @@ dokku storage:list node-js-app --format json
```
[
{
"entry_name": "node-js-app",
"host_path": "/var/lib/dokku/data/storage/node-js-app",
"container_path": "/app/storage"
}
]
```
Each entry mirrors the underlying attachment. `readonly` (boolean) and `volume_options` (string) reflect `Attachment.Readonly` and `Attachment.VolumeOptions` directly and are only present when set, so external tooling can drift-detect attachments against the raw attachment fields. For example, a mount created with `--volume-options noexec,nosuid --volume-readonly` renders as:
```
[
{
"entry_name": "node-js-data",
"host_path": "/var/lib/dokku/data/storage/node-js-data",
"container_path": "/app/storage",
"volume_options": ""
"readonly": true,
"volume_options": "noexec,nosuid"
}
]
```
@@ -74,17 +105,135 @@ By default, permissions are set for usage with Herokuish buildpacks. These permi
- This is used for apps deployed with Buildpacks via Herokuish.
- `--chown heroku`: Use `1000:1000` as the folder permissions.
- This is used for apps deployed with Cloud Native Buildpacks using the `heroku/builder` builder.
- `--chown packeto`: Use `2000:2000` as the folder permissions.
- This is used for apps deployed with Cloud Native Buildpacks using the `cloudfoundry/cnb` or `packeto` builders.
- `--chown paketo`: Use `2000:2000` as the folder permissions.
- This is used for apps deployed with Cloud Native Buildpacks using the `cloudfoundry/cnb` or `paketo` builders.
- `--chown root`: Use `0:0` as the folder permissions.
- This is used for containers that run their processes as root, as is typical for most Dockerfile or Docker image deploys.
- `--chown false`: Skips the `chown` call.
- `--chown <uid>`: Use `<uid>:<uid>` as the folder permissions, where `<uid>` is a custom numeric user/group id.
- This is used for containers that run their processes as a uid/gid that doesn't correspond to any of the above named options.
Users deploying via Dockerfile will want to specify `--chown false` and manually `chown` the created directory if the user and/or group id of the runnning process in the deployed container do not correspond to any of the above options.
The `--chown` flag - whether on `storage:create` or `storage:ensure-directory` - only manages the default `/var/lib/dokku/data/storage/<name>` location. If a custom `<path>` is passed to `storage:create`, the chown call is refused and the operator must chown the path themselves.
> [!WARNING]
> Failing to set the correct directory ownership may result in issues in persisting files written to the mounted storage directory.
### Setting directory permissions
> [!IMPORTANT]
> New as of 0.38.27
Where `--chown` states who owns the host directory, `--mode` states its permission bits. It takes a 3 or 4 digit octal mode, and is a `--mode` flag on `storage:create` and a `mode` property on `storage:set`:
```shell
dokku storage:create node-js-data --mode 0777
```
```shell
dokku storage:set node-js-data mode 0770
```
Omitting the value clears the mode, leaving the directory's permissions alone on subsequent runs:
```shell
dokku storage:set node-js-data mode
```
Without a mode, a newly created directory keeps the `0755` default and a pre-existing directory keeps whatever permissions it already had. The value is stored on the entry and re-applied every time `storage:create` or `storage:set` runs against it, so a declarative caller converges the directory by re-running the same command rather than reaching for `chmod` over SSH. The mode is shown by `storage:info`:
```shell
dokku storage:info node-js-data
```
```
-----> Storage entry node-js-data
Scheduler: docker-local
Host path: /var/lib/dokku/data/storage/node-js-data
Mode: 0777
```
The mode is applied to the directory itself and does not recurse into its contents. Like `--chown`, it is docker-local only and only manages the default `/var/lib/dokku/data/storage/<name>` location - it is refused for k3s entries and for entries created with a custom `<path>`. That refusal also covers migrated `legacy-*` entries, whose host paths come from the original colon-form mount rather than the default location.
### Updating a storage entry
> [!IMPORTANT]
> The property form is new as of 0.38.27. Prior versions used flags, which still work but emit a deprecation warning.
An existing entry is edited with `storage:set`, which takes a property and a value. Omitting the value unsets the property, restoring whatever the entry defaults to:
```shell
dokku storage:set node-js-data chown herokuish
dokku storage:set node-js-data chown
```
The following properties can be set:
| Property | Description | Unsetting it means |
|---|---|---|
| `chown` | Ownership preset or numeric uid for the host directory | no chown is performed |
| `mode` | Octal permissions for the host directory | permissions are left alone |
| `namespace` | Namespace holding the PVC (k3s) | the `default` namespace |
| `reclaim-policy` | Whether the underlying volume survives `storage:destroy` | `Retain` |
| `size` | PVC size (k3s) | rejected, since k3s entries require a size |
| `access-mode` | PVC access mode (k3s) | rejected, see below |
| `storage-class-name` | PVC storage class (k3s) | rejected, see below |
`access-mode` and `storage-class-name` cannot be changed on an entry that already exists, because Kubernetes cannot apply either to a bound PVC. Both a different value and an empty one are refused, since clearing is equally a change:
```shell
dokku storage:set node-js-data access-mode ReadWriteMany
```
```
! storage:set cannot change access-mode in place; recreate the entry
```
Setting `chown` or `mode` on a docker-local entry applies the change to the host directory immediately. Every other property is a metadata write, and k3s entries re-apply their helm release so the cluster picks the change up.
The older flag form - `dokku storage:set node-js-data --mode 0770` - continues to work and warns. It gained unset semantics too, so `--mode ""` clears the mode the same way omitting the positional value does.
### Annotations and labels
> [!IMPORTANT]
> New as of 0.38.27
Annotations and labels are attached to a storage entry one key at a time, matching the [scheduler-k3s equivalents](/docs/deployment/schedulers/k3s.md#setting-annotations). On k3s they propagate to both the PersistentVolumeClaim and the PersistentVolume, so backup tools like Velero and Longhorn can find the volume.
```shell
dokku storage:annotations:set node-js-data backup.velero.io/backup-volumes node-js-data
dokku storage:labels:set node-js-data app.kubernetes.io/part-of billing
```
Keys may contain `/`, as the Kubernetes-style keys above do, and are stored verbatim. To clear a single key, omit the value. Other keys are left untouched, so a declarative caller does not need to re-send the whole set on every call:
```shell
dokku storage:annotations:set node-js-data backup.velero.io/backup-volumes
```
Configured annotations and labels can be inspected with the matching report commands. Without an entry name they cover every registered entry:
```shell
dokku storage:annotations:report
dokku storage:annotations:report node-js-data
dokku storage:labels:report node-js-data
```
```
=====> node-js-data annotations information
Annotation backup.velero.io/backup-volumes: node-js-data
```
JSON output emits the keys flat, and a single value can be read directly with a flag of the form `--storage-annotations.<key>` (or `--storage-labels.<key>`), which requires an entry name:
```shell
dokku storage:annotations:report node-js-data --format json
dokku storage:annotations:report node-js-data --storage-annotations.backup.velero.io/backup-volumes
```
`storage:create` still accepts repeatable `--annotation key=value` and `--label key=value` flags for setting the initial set at creation time. The same flags on `storage:set` are deprecated in favor of these commands, because they replace the entire map rather than a single key.
### Mounting storage into apps
Dokku supports mounting both explicit host paths as well as docker volumes via the `storage:mount` command. This takes two arguments, an app name and a `host-path:container-path` or `docker-volume:container-path` combination.
@@ -103,6 +252,17 @@ In the first example, Dokku will then mount the shared contents of `/var/lib/dok
> If the `/storage` path within the container had pre-existing content, the container files will be over-written. This may be an issue for users that create assets at build time but then mount a directory at the same place during runtime. Files are not merged.
For named storage entries, additional Docker mount options can be passed via `--volume-options`. The value is a comma-separated mount-options string stored verbatim on the attachment and rendered into the `-v` flag at deploy time. This is useful for SELinux labels (`Z`, `z`) or hardening flags (`noexec,nosuid`):
```shell
dokku storage:create node-js-data
dokku storage:mount node-js-app node-js-data --container-dir /app/storage --volume-options Z
```
When combined with `--volume-readonly`, the rendered options become `ro,<volume-options>` - for example, `--volume-options noexec,nosuid --volume-readonly` renders as `:ro,noexec,nosuid`.
Re-running `storage:mount` against a named entry with the same `--container-dir` and `--process-type` updates the existing attachment's mount-time attributes (`--phase`, `--volume-subpath`, `--volume-readonly`, `--volume-chown`, `--volume-options`) in place rather than appending a duplicate. This is the idempotent equivalent of `storage:set` for entries, and lets declarative tooling change a mount-time attribute without an unmount-then-remount dance that would briefly drop the volume from `storage:report`. Mount-time fields are rewritten wholesale, not merged - omitting a flag on a re-mount clears any previously-set value. The legacy `host:container[:opts]` form still rejects duplicates with `Mount path already exists.`.
Once persistent storage is mounted, the app requires a restart. See the [process scaling documentation](/docs/processes/process-management.md) for more information.
```shell
@@ -127,6 +287,65 @@ Once persistent storage is unmounted, the app requires a restart. See the [proce
dokku ps:restart app-name
```
### Destroying storage entries
A named storage entry can be removed with the `storage:destroy` command. The entry must first be unmounted from every app that mounts it.
```shell
dokku storage:destroy rdmtest-entry
```
As the command is destructive - removing the registry entry and, depending on the scheduler and reclaim policy, the underlying volume - it will default to asking for confirmation before executing the removal.
```
! WARNING: Potentially Destructive Action
! This command will destroy storage entry rdmtest-entry.
! To proceed, type "rdmtest-entry"
> rdmtest-entry
-----> Storage entry rdmtest-entry destroyed
```
The confirmation may be avoided by providing the `--force` flag, which is useful for non-interactive or automated callers:
```shell
dokku storage:destroy rdmtest-entry --force
```
The global `--force` flag is also supported:
```shell
dokku --force storage:destroy rdmtest-entry
```
#### Removing the host directory
> [!IMPORTANT]
> New as of 0.38.27
By default a docker-local entry's host directory survives `storage:destroy` - the entry is deregistered but the data stays on disk. The `--destroy-host-dir` flag removes the directory and everything in it:
```shell
dokku storage:destroy node-js-data --destroy-host-dir
```
```
! Storage entry node-js-data is backed by /var/lib/dokku/data/storage/node-js-data, which will be removed along with its contents.
! WARNING: Potentially Destructive Action
! This command will destroy storage entry node-js-data.
! To proceed, type "node-js-data"
```
The removal is recursive, so it succeeds whether or not the directory is empty. It is only permitted for entries at the default `/var/lib/dokku/data/storage/<name>` location; an entry created with a custom `<path>` is refused, and the operator removes the path themselves.
The same removal can be declared ahead of time with `--reclaim-policy`, which behaves for a docker-local host directory the way it behaves for a k3s PersistentVolume. An entry created with `Delete` has its host directory removed on `storage:destroy` without any extra flag, while `Retain` - the default when unset - keeps it:
```shell
dokku storage:create node-js-data --reclaim-policy Delete
dokku storage:destroy node-js-data --force
```
`--destroy-host-dir` is docker-local only. On a k3s entry the underlying volume is already governed by the reclaim policy recorded on the entry, so passing the flag is an error.
### Displaying storage reports for an app
> [!IMPORTANT]
@@ -172,6 +391,60 @@ You can pass flags which will output only the value of the specific information
dokku storage:report node-js-app --storage-deploy-mounts
```
In addition to the aggregated `Storage build/deploy/run mounts:` lines, the report emits one flat dotted key per attachment field, indexed from `1`. The key shape is `--storage-attachment.<index>.<field>` for each of `entry-name`, `host-path`, `container-path`, `phases`, `process-type`, `subpath`, `readonly`, `volume-options`, and `volume-chown`. Fields render as empty strings when unset, and attachments are ordered by lex-sort of the index (so `10` sorts before `2`):
```shell
dokku storage:create node-js-data
dokku storage:mount node-js-app node-js-data --container-dir /app/storage --volume-options Z --volume-chown herokuish --volume-subpath uploads
dokku storage:report node-js-app
```
```
=====> node-js-app storage information
Storage attachment 1 container path: /app/storage
Storage attachment 1 entry name: node-js-data
Storage attachment 1 host path: /var/lib/dokku/data/storage/node-js-data
Storage attachment 1 phases: deploy,run
Storage attachment 1 process type: _default_
Storage attachment 1 readonly: false
Storage attachment 1 subpath: uploads
Storage attachment 1 volume chown: herokuish
Storage attachment 1 volume options: Z
Storage build mounts:
Storage deploy mounts: -v /var/lib/dokku/data/storage/node-js-data:/app/storage:Z
Storage run mounts: -v /var/lib/dokku/data/storage/node-js-data:/app/storage:Z
```
The same keys are exposed in JSON output, both in the stripped (`attachment.1.volume-options`) and legacy (`storage-attachment.1.volume-options`) forms:
```shell
dokku storage:report node-js-app --format json | jq '. | with_entries(select(.key | startswith("attachment.")))'
```
```json
{
"attachment.1.container-path": "/app/storage",
"attachment.1.entry-name": "node-js-data",
"attachment.1.host-path": "/var/lib/dokku/data/storage/node-js-data",
"attachment.1.phases": "deploy,run",
"attachment.1.process-type": "_default_",
"attachment.1.readonly": "false",
"attachment.1.subpath": "uploads",
"attachment.1.volume-chown": "herokuish",
"attachment.1.volume-options": "Z"
}
```
A single attachment field can be fetched directly via the info-flag form:
```shell
dokku storage:report node-js-app --storage-attachment.1.volume-options
```
```
Z
```
## Use Cases
### Sharing storage across deploys
@@ -214,3 +487,13 @@ By default, Dokku will execute your buildpack app processes as the `herokuishuse
> this user must exist in your herokuish image.
Additionally, the default `docker-local` scheduler that comes with Dokku will ensure your storage mounts are owned by either `herokuishuser` or the overridden value you have set in `DOKKU_APP_USER`. See the [docker-local scheduler documentation](/docs/deployment/schedulers/docker-local.md#disabling-chown-of-persistent-storage) docs for more information.
## Properties
### Internal properties
The following property is recorded internally by the storage plugin and is not exposed via `storage:report`:
| Property | Scope | Description | Source |
|---|---|---|---|
| `legacy-mounts-migrated` | per-app | Per-app marker recording that the app's legacy `-v` docker-options entries were drained into named storage entries plus attachments. Only set when at least one `-v` line was actually migrated; apps that have never had legacy mounts never receive this marker | `plugins/storage/migrate.go` writes `"true"` after a successful drain |

View File

@@ -6,10 +6,10 @@
```
plugin:disable <name> # Disable an installed plugin (third-party only)
plugin:enable <name> # Enable a previously disabled plugin
plugin:install [--core|--git-url] [--committish branch|commit|tag] [--name custom-plugin-name] # Optionally download git-url (and pin to the specified branch/commit/tag) & run install trigger for active plugins (or only core ones)
plugin:install [--core|git-url] [--committish branch|commit|tag] [--name custom-plugin-name] [--skip-install-trigger] # Optionally download git-url (and pin to the specified branch/commit/tag) & run install trigger for active plugins (or only core ones)
plugin:installed <name> # Checks if a plugin is installed
plugin:install-dependencies [--core] # Run install-dependencies trigger for active plugins (or only core ones)
plugin:list # Print active plugins
plugin:list [--format stdout|json] # Print active plugins
plugin:trigger <args...>. # Trigger an arbitrary plugin hook
plugin:uninstall <name> # Uninstall a plugin (third-party only)
plugin:update [name [branch|commit|tag]] # Optionally update named plugin from git (and pin to the specified branch/commit/tag) & run update trigger for active plugins
@@ -36,37 +36,70 @@ dokku plugin:list
```
plugn: dev
00_dokku-standard 0.35.16 enabled dokku core standard plugin
20_events 0.35.16 enabled dokku core events logging plugin
app-json 0.35.16 enabled dokku core app-json plugin
apps 0.35.16 enabled dokku core apps plugin
build-env 0.35.16 enabled dokku core build-env plugin
buildpacks 0.35.16 enabled dokku core buildpacks plugin
certs 0.35.16 enabled dokku core certificate management plugin
checks 0.35.16 enabled dokku core checks plugin
common 0.35.16 enabled dokku core common plugin
config 0.35.16 enabled dokku core config plugin
docker-options 0.35.16 enabled dokku core docker-options plugin
domains 0.35.16 enabled dokku core domains plugin
enter 0.35.16 enabled dokku core enter plugin
git 0.35.16 enabled dokku core git plugin
logs 0.35.16 enabled dokku core logs plugin
network 0.35.16 enabled dokku core network plugin
nginx-vhosts 0.35.16 enabled dokku core nginx-vhosts plugin
plugin 0.35.16 enabled dokku core plugin plugin
proxy 0.35.16 enabled dokku core proxy plugin
ps 0.35.16 enabled dokku core ps plugin
repo 0.35.16 enabled dokku core repo plugin
resource 0.35.16 enabled dokku core resource plugin
scheduler-docker-local 0.35.16 enabled dokku core scheduler-docker-local plugin
shell 0.35.16 enabled dokku core shell plugin
ssh-keys 0.35.16 enabled dokku core ssh-keys plugin
storage 0.35.16 enabled dokku core storage plugin
tags 0.35.16 enabled dokku core tags plugin
tar 0.35.16 enabled dokku core tar plugin
trace 0.35.16 enabled dokku core trace plugin
00_dokku-standard 0.38.27 enabled dokku core standard plugin
20_events 0.38.27 enabled dokku core events logging plugin
app-json 0.38.27 enabled dokku core app-json plugin
apps 0.38.27 enabled dokku core apps plugin
build-env 0.38.27 enabled dokku core build-env plugin
buildpacks 0.38.27 enabled dokku core buildpacks plugin
certs 0.38.27 enabled dokku core certificate management plugin
checks 0.38.27 enabled dokku core checks plugin
common 0.38.27 enabled dokku core common plugin
config 0.38.27 enabled dokku core config plugin
docker-options 0.38.27 enabled dokku core docker-options plugin
domains 0.38.27 enabled dokku core domains plugin
enter 0.38.27 enabled dokku core enter plugin
git 0.38.27 enabled dokku core git plugin
logs 0.38.27 enabled dokku core logs plugin
network 0.38.27 enabled dokku core network plugin
nginx-vhosts 0.38.27 enabled dokku core nginx-vhosts plugin
plugin 0.38.27 enabled dokku core plugin plugin
proxy 0.38.27 enabled dokku core proxy plugin
ps 0.38.27 enabled dokku core ps plugin
repo 0.38.27 enabled dokku core repo plugin
resource 0.38.27 enabled dokku core resource plugin
scheduler-docker-local 0.38.27 enabled dokku core scheduler-docker-local plugin
shell 0.38.27 enabled dokku core shell plugin
ssh-keys 0.38.27 enabled dokku core ssh-keys plugin
storage 0.38.27 enabled dokku core storage plugin
tags 0.38.27 enabled dokku core tags plugin
tar 0.38.27 enabled dokku core tar plugin
trace 0.38.27 enabled dokku core trace plugin
```
The list can also be emitted as JSON via the `--format json` flag. In addition to the name, version, enabled state, and description shown in the default output, the JSON output includes whether a plugin is a core plugin and - for git-based third-party plugins - the install source (the git remote URL, the currently checked-out commit, and the followed branch). This is useful for tooling that reconstructs a server's set of installed plugins:
```shell
dokku plugin:list --format json
```
```json
[
{
"name": "apps",
"version": "0.38.27",
"enabled": true,
"core": true,
"description": "dokku core apps plugin",
"source_url": "",
"committish": "",
"branch": ""
},
{
"name": "postgres",
"version": "1.42.0",
"enabled": true,
"core": false,
"description": "dokku postgres service plugin",
"source_url": "https://github.com/dokku/dokku-postgres.git",
"committish": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0",
"branch": "master"
}
]
```
The `source_url`, `committish`, and `branch` fields are only populated for plugins installed from a git repository. They are empty for core plugins as well as for plugins installed from a tarball or a local `file://` path. When a plugin is pinned to a specific commit or tag (a detached checkout), the `branch` field is empty while `committish` still reports the exact commit.
> [!WARNING]
> All plugin commands other than `plugin:list` and `plugin:help` require sudo access and must be run directly from the Dokku server.
@@ -128,6 +161,12 @@ The `--core` flag may also be indicated as the sole argument, though it is only
dokku plugin:install --core
```
If installing plugins in a Dockerfile, you will want to skip the `install` trigger. This will be run on container boot.
```shell
dokku plugin:install https://github.com/dokku/smoke-test-plugin.git --name smoke-test-plugin --skip-install-trigger
```
Finally, all flags may be omitted to trigger the `install` procedures for both core and third-party plugins:
```shell

View File

@@ -4,9 +4,10 @@
> New as of 0.25.0
```
registry:login [--password-stdin] <server> <username> [<password>] # Login to a docker registry
registry:report [<app>] [<flag>] # Displays a registry report for one or more apps
registry:set <app> <key> (<value>) # Set or clear a registry property for an app
registry:login [--global|--password-stdin] [<app>] <server> <username> [<password>] # Login to a docker registry
registry:logout [--global] [<app>] <server> # Logout from a docker registry
registry:report [<app>] [<flag>] # Displays a registry report for one or more apps
registry:set <app>|--global <key> (<value>) # Set or clear a registry property for an app
```
The registry plugin enables interacting with remote registries, which is useful when either deploying images via `git:from-image` or when interacting with custom schedulers to deploy built image artifacts.
@@ -15,34 +16,75 @@ The registry plugin enables interacting with remote registries, which is useful
### Logging into a registry
The `registry:login` command can be used to log into a docker registry. The following are examples for logging into various common registries:
The `registry:login` command can be used to log into a docker registry. Credentials can be stored globally (for all apps) or on a per-app basis.
#### Global login
To log in globally (credentials shared by all apps), use the `--global` flag:
```shell
# hub.docker.com
dokku registry:login docker.io $USERNAME $PASSWORD
dokku registry:login --global docker.io $USERNAME $PASSWORD
# digitalocean
# the username and password are both defined as the same api token
dokku registry:login registry.digitalocean.com $DIGITALOCEAN_API_TOKEN $DIGITALOCEAN_API_TOKEN
dokku registry:login --global registry.digitalocean.com $DIGITALOCEAN_API_TOKEN $DIGITALOCEAN_API_TOKEN
# github container registry
# see the following link for information on retrieving a personal access token
# https://docs.github.com/en/packages/guides/pushing-and-pulling-docker-images#authenticating-to-github-container-registry
dokku registry:login ghcr.io $USERNAME $REGISTRY_PAT_TOKEN
dokku registry:login --global ghcr.io $USERNAME $REGISTRY_PAT_TOKEN
# quay
# a robot user may be used to login
dokku registry:login quay.io $USERNAME $PASSWORD
dokku registry:login --global quay.io $USERNAME $PASSWORD
```
For security reasons, the password may also be specified as stdin by specifying the `--password-stdin` flag. This is supported regardless of the registry being logged into.
> [!NOTE]
> For backwards compatibility, if the `--global` flag is omitted and only three arguments are provided (server, username, password), the command will behave as a global login but will show a deprecation warning.
#### Per-app login
To log in for a specific app, specify the app name as the first argument:
```shell
echo "$PASSWORD" | dokku registry:login --password-stdin docker.io $USERNAME
# log into docker.io for a specific app
dokku registry:login node-js-app docker.io $USERNAME $PASSWORD
# log into ghcr.io for a specific app
dokku registry:login node-js-app ghcr.io $USERNAME $REGISTRY_PAT_TOKEN
```
Per-app credentials are stored in `/var/lib/dokku/config/registry/$APP/config.json` and are automatically used for docker operations (build, push, pull) for that specific app.
#### Password via stdin
For security reasons, the password may also be specified as stdin by specifying the `--password-stdin` flag. This is supported for both global and per-app logins:
```shell
# global login via stdin
echo "$PASSWORD" | dokku registry:login --global --password-stdin docker.io $USERNAME
# per-app login via stdin
echo "$PASSWORD" | dokku registry:login node-js-app --password-stdin docker.io $USERNAME
```
For certain Docker registries - such as Amazon ECR or Google's GCR registries - users may instead wish to use a docker credential helper to automatically authenticate against a server; please see the documentation regarding the credential helper in question for further setup instructions.
### Logging out from a registry
The `registry:logout` command can be used to log out from a docker registry:
```shell
# global logout
dokku registry:logout --global docker.io
# per-app logout
dokku registry:logout node-js-app docker.io
```
When an app is destroyed, any per-app registry credentials are automatically removed.
### Setting a remote server
To specify a remote server registry for pushes, set the `server` property via the `registry:set` command. The default value for this property is empty string. Setting the value to `docker.io` or `hub.docker.com` will result in the computed value being empty string (as that is the default, implicit registry), while any non-zero length value will have a `/` appended to it if there is not one already.
@@ -104,13 +146,27 @@ dokku registry:set node-js-app image-repo
### Templating the image repository name
Instead of setting the image repository name on a per-app basis, it can be set via a template globally with the `image-repo-template` property:
Instead of setting the image repository name on a per-app basis, it can be set via a template with the `image-repo-template` property. The property can be set globally or for a specific app, with the per-app value overriding the global value when both are present:
```shell
# globally
dokku registry:set --global image-repo-template "my-awesome-prefix/{{ .AppName }}"
# per-app
dokku registry:set node-js-app image-repo-template "my-awesome-prefix/{{ .AppName }}-prod"
```
Dokku uses a Golang template and has access to the `AppName` variable as shown above.
Dokku uses a Golang template and has access to the `AppName` variable as shown above. The per-app `image-repo` property always takes precedence over the rendered template when both are set.
Setting the property value to an empty string will reset the value to the system default. Resetting the value can be done per app or globally.
```shell
# per-app
dokku registry:set node-js-app image-repo-template
# globally
dokku registry:set --global image-repo-template
```
### Pushing images on build
@@ -136,6 +192,10 @@ dokku registry:set node-js-app push-on-release
dokku registry:set --global push-on-release
```
#### Recovering from local image GC
When `push-on-release` is enabled, Dokku treats the remote registry as the canonical store for app images. If a local image disappears - for example because a `docker image prune` cron ran, the host rebooted, or an operator removed it manually - subsequent commands that need the image (`ps:restart`, `ps:scale`, `dokku run`, `domains:add`, `certs:add`, etc.) will pull the missing tag back from the registry automatically. Per-app registry credentials configured via `registry:login` are honored during the pull. This recovery covers the deployed numeric tag pushed by the registry plugin - a missing `latest` tag will be ignored.
### Push extra tags
To push the image on release with extra tags, set the `push-extra-tags` to a comma-separated list of tags via the `registry:set` command. The default value for this property is empty. Setting the property will result in the image being tagged with extra tags every release.
@@ -166,3 +226,18 @@ dokku registry:set node-js-app push-extra-tags
# globally
dokku registry:set --global push-extra-tags
```
## Properties
### Settable properties
> [!NOTE]
> The `Report flags` column lists the CLI argument names accepted by `registry:report`. The JSON keys emitted by `registry:report --format json` are the same names with the leading `--registry-` stripped (e.g. `image-repo`, `global-server`, `computed-push-on-release`). Legacy keys with the `registry-` prefix (e.g. `registry-image-repo`) are also emitted during the 0.38.x deprecation window and will be removed in a future major release.
| Property | Scope | Default | Report flags | Description |
|---|---|---|---|---|
| `image-repo` | app only | `dokku/<app>` | `--registry-image-repo`, `--registry-computed-image-repo` | Repository name used when pushing the app's image (overrides the global template) |
| `image-repo-template` | app + global | none | `--registry-image-repo-template`, `--registry-global-image-repo-template`, `--registry-computed-image-repo-template` | Go template used to compute the per-app image repository when `image-repo` is unset |
| `push-extra-tags` | app + global | none | `--registry-push-extra-tags`, `--registry-global-push-extra-tags`, `--registry-computed-push-extra-tags` | Comma-separated list of additional tags pushed alongside the deploy tag |
| `push-on-release` | app + global | `false` | `--registry-push-on-release`, `--registry-global-push-on-release`, `--registry-computed-push-on-release` | When `true`, pushes the image to the registry on every successful build |
| `server` | app + global | none | `--registry-server`, `--registry-global-server`, `--registry-computed-server` | Registry server host (e.g. `ghcr.io`) used when pushing images |

View File

@@ -32,7 +32,7 @@ Valid resource options include:
See the [Supported Resource Management Properties](/docs/deployment/schedulers/docker-local.md#supported-resource-management-properties) section of the docker local scheduler documentation for more information on how each resource limit maps to Docker.
Resource limits and reservations are applied only during the `run` and `deploy` phases of an application, and will not impact the `build` phase of an application.
Resource reservations are applied only during the `run` and `deploy` phases of an application. Resource limits also apply during the `build` phase when explicitly configured against the `build` process type - see [Build-time Resource Limits](#build-time-resource-limits) below.
### Resource Limits
@@ -120,6 +120,40 @@ dokku resource:limit --process-type web node-js-app
nvidia-gpu:
```
#### Build-time Resource Limits
> [!IMPORTANT]
> New as of 0.38.0
Resource limits may be applied to the build container by using the special `build` process type. This allows constraining memory and CPU usage during the `build` phase, which is otherwise unconstrained.
```shell
dokku resource:limit --memory 4g --process-type build node-js-app
```
```
=====> Setting resource limits for node-js-app (build)
memory: 4g
```
Build-time limits are applied via the `docker-args-process-build` plugin trigger. They do not inherit from default (`_default_`) limits - only limits explicitly set against the `build` process type are applied at build time. This is intentional: build phases often require more memory than the runtime process, and silently inheriting a small runtime limit would cause confusing OOM failures.
> [!WARNING]
> Do not use `build` as a runtime process type in your `Procfile`. The `build` name is reserved by the resource plugin to scope limits to the build container, and using it as a Procfile entry will cause those limits to be applied to that runtime container as well.
Supported limits per builder:
| Builder | `--cpu` | `--memory` | `--memory-swap` | `--nvidia-gpu` |
|------------|---------|------------|-----------------|----------------|
| herokuish | yes | yes | yes | yes |
| dockerfile | no | yes | yes | no |
| pack | no | no | no | no |
| nixpacks | no | no | no | no |
| railpack | no | no | no | no |
| lambda | no | no | no | no |
Resource keys outside the supported set for a builder are silently ignored. Reservations (`resource:reserve`) are never applied at build time - only limits.
#### Clearing Resource Limits
In cases where the values are incorrect - or there is no desire to limit resources - resource limits may be cleared using the `resource:limit-clear` command.

View File

@@ -4,5 +4,5 @@
- The `plugin:list` command no longer outputs the version for the `plugn` binary.
- Users building docker images that run Dokku will need to use a new sudoer wrapper for the `docker-image-labeler` binary to work correctly. A reference version has been placed in the `docker` skeleton directory. This should only impact platform developers, and users of our Docker image will already have the file available.
- The `dokku` user's cron is now in use by Dokku itself. Customizations will be overwritten. Users are encouraged to use a cron entry in `/etc/cron.d/dokku` to avoid this issue.
- The `dokku` user's cron is now in use by Dokku itself. Customizations will be overwritten. Users are encouraged to use a cron file at `/etc/cron.d/dokku` to avoid this issue.
- As of 0.23.0, Dokku will now inject the `max-size` log driver option for applications. This is restricted to app-configured log driver values empty, `local` or `json-file` in 0.23.1 to increase setup compatibility. Users who configure alternative log drivers at the system level will need to either set the global `max-size` property to `unlimited` or switch to the built-in `vector` logging support.

View File

@@ -0,0 +1,12 @@
# 0.36.0 Migration Guide
## Changes
- Process stop timeouts are now configured via the `ps` property `stop-timeout-seconds`. Existing `DOKKU_DOCKER_STOP_TIMEOUT` environment variables will be automatically migrated to the new value.
- Processes now default to a `30` second stop timeout.
- The `domains:clear` command no longer runs domain setup after clearing the domains. Use `domains:reset` or run `domains:setup` manually to have the same effect.
- The deprecated `DOKKU_DISABLE_ANSI_PREFIX_REMOVAL` setting has been removed. Dokku deploys no longer use shell escape codes to modify output, and thus deploy output may now contain `remote:` as a prefix in each lines output.
## Deprecations
Ubuntu 20.04 is now a deprecated installation target. The operating system will be considered EOL by Canonical in April 2025. Users are encouraged to upgrade to Ubuntu 24.04 or consider switching their instllation method to the [Docker-based installation method](/docs/getting-started/install/docker.md) to avoid any disruption in usage.

View File

@@ -0,0 +1,15 @@
# 0.37.0 Migration Guide
## Changes
- The `app.json` file format is now parsed as JSONC and supports inline comments.
- The `scheduler-k3s:cluster-add` command is now `scheduler-k3s:cluster:add`.
- The `scheduler-k3s:cluster-list` command is now `scheduler-k3s:cluster:list`.
- The `scheduler-k3s:cluster-remove` command is now `scheduler-k3s:cluster:remove`.
## Removals
- Support for the `DOKKU_DOCKERFILE_CACHE_BUILD` environment variable has been removed. Use the `docker-options` plugin to set build arguments for your app instead.
- Support for the `DOKKU_DOCKER_BUILD_OPTS` environment variable has been removed. Use the `docker-options` plugin to set build arguments for your app instead.
- Support for the `no-cache` nixpacks property has been removed. Use the `docker-options` plugin to set build arguments for your app instead.
- Support for customizing the label-key for the caddy proxy has been removed. Always use `caddy.` as a prefix for your caddy directives.

View File

@@ -0,0 +1,72 @@
# 0.38.0 Migration Guide
## Changes
- Dokku now generates a minimal nginx configuration for apps without running `web` processes (undeployed apps, apps with no `web` process type, or apps with stopped web processes). This configuration returns `502 Bad Gateway` responses, ensuring the app's domain resolves and monitoring tools can detect non-200 status codes. The configuration is automatically replaced with the full proxy configuration once the app is deployed with running `web` processes. See the [nginx documentation](/docs/networking/proxies/nginx.md#nginx-configuration-for-undeployed-apps) for more details.
- Users with custom `nginx.conf.sigil` templates that reference `DOKKU_APP_WEB_LISTENERS` should be aware that this variable may now be empty when the template is rendered for apps without running web processes. Custom templates should handle this case gracefully, for example by using a conditional to serve an error page instead of proxying:
```
location / {
{{ if $.DOKKU_APP_WEB_LISTENERS }}
proxy_pass http://{{ $.APP }}-{{ $upstream_port }};
{{ else }}
return 502;
{{ end }}
}
```
- The path on disk to both the global `ENV` file and app `ENV` files have been moved. Users should reference environment variables via the provided plugin triggers rather than directly sourcing the ENV files. Existing ENV files are merged into the new location and removed once they have been drained. **Changed in 0.38.26:** removal previously happened on the subsequent Dokku install for app ENV files, and never happened at all for the global ENV file. **Changed in 0.38.27:** an ENV file found at the old path after its migration has been recorded is never merged into the new location, because the new location holds every change made since. Such a file is removed when its values agree with the current config, and otherwise moved aside to `ENV.migrated` with the keys it disagrees on named in a warning, so its values can still be applied by hand with `dokku config:set`. That copy is left for review and should be deleted afterwards: Dokku no longer reads it, and it holds everything it was not allowed to import - including keys that were unset on purpose, which for a revoked secret means a copy lingering on disk.
- During a fresh apt install, the upstream nginx default vhost files (`/etc/nginx/sites-enabled/default`, `/etc/nginx/sites-available/default`, and `/etc/nginx/conf.d/default.conf`) are renamed to `${path}.dokku-disabled` (not deleted) to avoid a `duplicate default server for 0.0.0.0:80` error. Operators with local customizations can recover them by inspecting the `.dokku-disabled` siblings. Upgrade-in-place installs do not touch any existing nginx files.
- Fresh apt installs now ship a catch-all default site at `/etc/nginx/conf.d/00-default-vhost.conf` that rejects requests with unknown Host headers using `ssl_reject_handshake on` (HTTPS) and `return 444` (HTTP). This replaces the manual workaround previously documented in the nginx docs. The behavior can be opted out at install time via the `dokku/install_default_site` debconf prompt. On nginx older than 1.19.4 (e.g., Debian Bullseye's nginx 1.18.0), the postinst installs an HTTP-only variant of the catch-all that omits the SSL listener and `ssl_reject_handshake`, since that directive is unsupported on those versions. See the [Default site documentation](/docs/networking/proxies/nginx.md#default-site).
- The `docker-local` scheduler now sends `SIGTERM` to old containers immediately after a successful deploy, rather than waiting `wait-to-retire` seconds before signaling. This matches Heroku's graceful-shutdown contract and lets applications begin draining in-flight work as soon as proxy traffic switches. The `wait-to-retire` grace period and `stop-timeout-seconds` hard-stop continue to apply as before. See the [zero downtime deploys documentation](/docs/deployment/zero-downtime-deploys.md#wait-to-retire) for more details.
- The `docker-local` scheduler no longer queues an image for retirement when another running container of the same app still uses it. This fixes the case where a `ps:rebuild` against an image-based deploy (`git:from-image`) produced an identical-SHA image and the `dokku-retire` cron timer would log `Image ... has running containers, skipping rm` on every run. Stuck entries from prior versions are pruned automatically on the next `ps:retire` run.
- All `:report` subcommands now accept the `--global` flag, which scopes the report to globally-configured properties. The flag composes with `--format json`, so a JSON report of global properties can be obtained via, for example, `dokku scheduler:report --global --format json`. Previously, combining `--global` with `--format json` was rejected with an "info flag" error, and `--global` on its own was treated as an unknown flag.
- Every `:report` key of the form `<plugin>-global-<property>` now returns the raw stored global value (empty when the property has never been set) instead of the resolved value with the built-in default substituted in. A new `<plugin>-computed-<property>` key has been added wherever a default existed and returns the effective value (per-app value, falling back to the global value, then to the built-in default). This affects `app-json`, `builder-dockerfile`, `builder-herokuish`, `builder-lambda`, `builder-nixpacks`, `builder-pack`, `builder-railpack`, `caddy`, `checks`, `git`, `haproxy`, `logs`, `network`, `nginx`, `openresty`, `proxy`, `registry`, `scheduler`, `scheduler-k3s` and `traefik`. External tooling that read `<plugin>-global-<property>` and depended on the default value should switch to `<plugin>-computed-<property>`. The bare `<plugin>-<property>` keys for caddy/haproxy/traefik/openresty global-only properties (`caddy-image`, `haproxy-log-level`, `traefik-api-enabled`, `openresty-image`, `openresty-letsencrypt-email`, `openresty-letsencrypt-server`, `openresty-allowed-letsencrypt-domains-func-base64`, etc.) have also been replaced by the `global-` and `computed-` pair.
- The `ps` and `cron` plugins now follow the same `<plugin>-global-<property>` / `<plugin>-computed-<property>` convention. The `ps:report` keys `stop-timeout-seconds`, `global-stop-timeout-seconds`, and `computed-stop-timeout-seconds` have been renamed to `ps-stop-timeout-seconds`, `ps-global-stop-timeout-seconds`, and `ps-computed-stop-timeout-seconds`. The `cron:report` keys `cron-mailfrom` and `cron-mailto` have been renamed to `cron-global-mailfrom` and `cron-global-mailto`, and new `cron-computed-mailfrom` and `cron-computed-mailto` keys have been added. The corresponding user-facing `--<flag>` arguments to `ps:report` and `cron:report` were renamed alongside the JSON keys; no aliases are kept. Additionally, both `ps:report --global` and `cron:report --global` now emit the `<plugin>-computed-<property>` keys for every settable global property with a default (`ps-computed-procfile-path`, `ps-computed-stop-timeout-seconds`, `cron-computed-maintenance`, `cron-computed-mailfrom`, `cron-computed-mailto`), matching the shape used by the other plugins.
- A second round of `:report` additions surfaces every remaining settable-but-unreported property under the same raw/global/computed convention so external tooling can verify drift via `:report --format json` without falling back to a generic bash task. The `ps` plugin gains `--ps-dockerfile-start-cmd` and `--ps-computed-dockerfile-start-cmd`, `--ps-start-cmd` and `--ps-computed-start-cmd`, and the `--ps-skip-deploy` / `--ps-global-skip-deploy` / `--ps-computed-skip-deploy` triple (default `false`). The `builder` plugin gains the `--builder-skip-cleanup` triple (default `false`). The `scheduler` plugin gains the `--scheduler-shell` triple. The `proxy` plugin gains the `--proxy-proxy-port` and `--proxy-proxy-ssl-port` triples and exposes the raw `disabled` property as `--proxy-disabled` / `--proxy-computed-disabled`, alongside the existing inverted `--proxy-enabled`. The `openresty` plugin gains `--openresty-global-log-level` and `--openresty-computed-log-level` (default `ERROR`). The `nginx` plugin gains the `--nginx-nginx-service-command` triple. The `scheduler-k3s` plugin gains `--scheduler-k3s-global-token`, but the value is masked as `*******` in default stdout output; the raw value is returned only when the report is requested via `--format json` or when this flag is queried explicitly by name. The traefik `dns-provider-<env_var>` keys are reported as `--traefik-global-dns-provider-<env_var>` and follow the same masking and explicit-query rules, as does the traefik `basic-auth-password` property, whose `--traefik-global-basic-auth-password` and `--traefik-computed-basic-auth-password` keys are masked in default stdout output.
- All Go-implemented plugins (`app-json`, `apps`, `builder`, `buildpacks`, `builds`, `cron`, `docker-options`, `logs`, `network`, `ports`, `proxy`, `ps`, `registry`, `resource`, `scheduler`, `scheduler-k3s`, `storage`) now emit JSON keys from `:report --format json` without the `<plugin>-` head segment, matching the shape bash plugins have always emitted. For example, `dokku ps:report myapp --format json` now contains `stop-timeout-seconds`, `global-stop-timeout-seconds`, and `computed-stop-timeout-seconds` keys. The CLI flag names (`--ps-stop-timeout-seconds`, etc.) are unchanged, and `:set` semantics are unchanged. For backwards compatibility during the 0.38.x patch series, the old `<plugin>-<property>` JSON keys are emitted side-by-side with the new keys, so external scripts reading either shape continue to work. The legacy keys will be dropped in a future major release. External JSON consumers should migrate to the new key shape.
- The `scheduler-k3s` plugin now manages env config and the dokku-generated image pull Secret as their own helm releases with stable names (`config-{app}` and `pull-secret-{app}`) rather than bundling them into the app helm chart with a per-deploy timestamp suffix (`env-{app}.{ts}` / `ims-{app}.{ts}`). This fixes two bugs: a helm rollback of the app chart no longer deletes Secrets that older ReplicaSets still reference, and the Deployment's `imagePullSecrets` list no longer accumulates references to nonexistent Secrets across deploys. The next deploy of an app switches the Deployment's `envFrom` and `imagePullSecrets` references to the stable names and prunes any leaked entries; existing live Deployments do not need to be patched manually. App rename now also uninstalls the old `tls-{app}`, `config-{app}`, and `pull-secret-{app}` releases under the previous app name; the new name's releases are recreated on the next deploy or certs sync.
- **New in 0.38.25:** Values supplied through docker options, `dokku run`'s `-e`/`--env` flag, and `--ttl-seconds` are no longer evaluated by the shell when assembling a container's arguments; they are now tokenized and passed through verbatim. This closes a command-injection vector where a `$(...)` or backtick expression in one of these values executed on the host as the `dokku` user during build, deploy, or run. As a result, shell metacharacters such as `$(...)`, backticks, `$VAR`, and globs in these values are treated literally instead of being expanded, and `--ttl-seconds` must now be a plain integer. Existing Traefik docker-options labels (those whose label key begins with `traefik.`) whose backticks were stored with a stray backslash are repaired automatically the first time `dokku` runs after the upgrade, so they become valid on the next deploy.
- **New in 0.38.26:** Docker options drained out of the pre-0.38.0 `DOCKER_OPTIONS_<PHASE>` files were copied verbatim rather than being re-serialized the way `docker-options:add` stores them, so `docker-options:remove` compared the canonical string it builds against a value that could never match it and exited successfully without removing anything. Removal now matches stored options by shell word instead of by exact string, so those entries can be removed with the value as originally written. Stored options are also rewritten into the canonical form the first time `dokku` runs after the upgrade: values whose shell metacharacters were left unquoted are quoted, and an entry that carried several flags on one line becomes one entry per flag, which additionally fixes `ps:report` reading a restart policy off such a line and the `k3s` scheduler translating only the first of several `--cap-add`/`--sysctl` flags. Options added through `docker-options:add` are already canonical and are left untouched.
- **New in 0.38.26:** Deprecated `DOKKU_*` config variables belonging to plugins whose install step runs before the `config` plugin's were not migrated to their plugin property on the upgrade run. Install steps fire in alphabetical order, so `apps`, `builder`, and `checks` read an app's environment before the `config` plugin had relocated the `ENV` file, found nothing, and moved nothing - without reporting anything. `dokku config:show` kept listing the variable while the plugin behaved as though it were unset, which for `DOKKU_CHECKS_SKIPPED` meant a process type silently regained a health check it was meant to skip. The relocation is now performed before any deprecated variable is read, regardless of install order. Affected installs recover on their next `dokku plugin:install --core`, which the upgrade already runs; the variables listed below can also be re-applied by hand using their replacement command.
- **New in 0.38.27:** The 0.38.26 upgrade merged the leftover pre-0.38.0 `ENV` file back over the current config. Releases 0.38.0 through 0.38.25 recorded the migration and left that file on disk on purpose, and 0.38.26 read it as a hand-edit, so the environment as it stood at the 0.38.x upgrade won over every `dokku config:set` and `dokku config:unset` made since - including reinstating variables and secrets that had been deliberately unset. Nothing appeared broken, because running containers keep the environment they were created with; the rewound values would have reached containers on the next deploy. The 0.38.26 run consumed the leftover file, so this cannot happen a second time, but it also cannot be undone automatically. To check an app that was upgraded to 0.38.26 and has a container still running from before that upgrade, compare each key in `dokku config:show <app>` against `docker exec <container> printenv <key>` - `GIT_REV` is expected to differ after a deploy, anything else that differs was rewound. Repair with `dokku config:set --no-restart <app> KEY=VALUE` for values that regressed and `dokku config:unset --no-restart <app> KEY` for variables that came back.
- The storage plugin now treats persistent volumes as named, scheduler-aware first-class resources via `storage:create`, `storage:mount`, `storage:set`, and `storage:destroy`. The legacy `storage:mount <app> <host>:<container>` colon form continues to work on docker-local apps but is deprecated; on k3s apps it is rejected. Existing colon-form mounts are migrated automatically the first time the new storage plugin runs (during the install trigger) - they appear as `legacy-<hash>` entries in `storage:list-entries`. The migration is idempotent and tied to a per-app flag file at `$DOKKU_LIB_ROOT/config/storage/.migrated/<app>`; deleting that file forces a re-scan on the next install. The `storage:ensure-directory` command keeps working but now emits a deprecation warning - prefer `storage:create <name> [<path>]` (the path defaults to the same `$DOKKU_LIB_ROOT/data/storage/<name>` location). Storage entry names must now be DNS-1123 labels of 45 characters or less so they can be used verbatim as Helm release and Kubernetes resource names; underscores and uppercase characters that the older `ensure-directory` validator accepted are rejected for new names. The migration synthesizer always uses lowercase hex hashes so existing data is never locked out.
### TLS handshake behavior change
With the new catch-all installed on nginx 1.19.4+, an HTTPS request to a hostname that matches a configured dokku app but where the app has no TLS certificate configured will have its TLS handshake rejected by the catch-all (via `ssl_reject_handshake on`). Previously, nginx fell through to the lexicographically first port-443 server block and presented that block's certificate, producing a cert-mismatch error on the client. The new behavior is a correctness improvement, but operators who deliberately relied on the old fall-through certificate (for monitoring probes, for example) need to either configure a certificate for the target app or remove the catch-all on that host. Existing apps that already have certificates configured are unaffected: nginx selects the right server block via SNI before TLS completion, so the catch-all is never consulted for legitimate requests.
This change does not apply to nginx older than 1.19.4 (e.g., Debian Bullseye's nginx 1.18.0), where the catch-all is installed as an HTTP-only variant. On those systems, HTTPS handshakes to unknown hosts continue to fall through to the first port-443 server block as before.
### Environment variables migrated to plugin properties
A number of `DOKKU_*` config environment variables have been replaced with properly-namespaced plugin properties. Existing values are migrated automatically the first time `dokku` runs after the upgrade, and the original config variable is unset. No manual action is required.
Going forward, configure these settings using the property commands listed below. Setting the deprecated env vars via `dokku config:set` will no longer have any effect.
| Deprecated Env Var | Replacement Command |
|---|---|
| `DOKKU_APP_PROXY_TYPE` | `dokku proxy:set <app> type <value>` |
| `DOKKU_APP_RESTORE` | `dokku ps:set <app> restore <true\|false>` |
| `DOKKU_APP_SHELL` | `dokku scheduler:set <app> shell <value>` |
| `DOKKU_CHECKS_DISABLED` | `dokku checks:disable <app> [proctypes]` |
| `DOKKU_CHECKS_ENABLED` | `dokku checks:enable <app> [proctypes]` |
| `DOKKU_CHECKS_SKIPPED` | `dokku checks:skip <app> [proctypes]` |
| `DOKKU_CHECKS_WAIT` | `dokku checks:set <app> wait <value>` |
| `DOKKU_CHECKS_TIMEOUT` | `dokku checks:set <app> timeout <value>` |
| `DOKKU_CHECKS_ATTEMPTS` | `dokku checks:set <app> attempts <value>` |
| `DOKKU_DEFAULT_CHECKS_WAIT` | `dokku checks:set --global default-wait <value>` |
| `DOKKU_DISABLE_APP_AUTOCREATION` | `dokku apps:set --global disable-autocreation <true\|false>` |
| `DOKKU_DISABLE_PROXY` | `dokku proxy:disable <app>` / `dokku proxy:enable <app>` |
| `DOKKU_DOCKERFILE_START_CMD` | `dokku ps:set <app> dockerfile-start-cmd <value>` |
| `DOKKU_PROXY_PORT` | `dokku proxy:set <app> proxy-port <value>` |
| `DOKKU_PROXY_SSL_PORT` | `dokku proxy:set <app> proxy-ssl-port <value>` |
| `DOKKU_SKIP_ALL_CHECKS` | `dokku checks:disable <app>` |
| `DOKKU_SKIP_CLEANUP` | `dokku builder:set <app> skip-cleanup <true\|false>` |
| `DOKKU_SKIP_DEFAULT_CHECKS` | `dokku checks:skip <app>` |
| `DOKKU_SKIP_DEPLOY` | `dokku ps:set <app> skip-deploy <true\|false>` |
| `DOKKU_START_CMD` | `dokku ps:set <app> start-cmd <value>` |
`DOKKU_PARALLEL_ARGUMENTS` is removed entirely; it has no replacement.
`DOKKU_SKIP_CLEANUP` continues to be honored when set in `/etc/environment` or `~dokku/.dokkurc/*` so that bootstrap-time configuration keeps working, but the `builder skip-cleanup` property is the canonical interface and takes precedence when set.

View File

@@ -5,11 +5,30 @@
> [!IMPORTANT]
> While the `app.json` format used by Dokku is based on the one [supported by Heroku](https://devcenter.heroku.com/articles/app-json-schema), not all Heroku functionality is supported by Dokku.
## Buildpacks
```json
{
"buildpacks": [
{
"url": "heroku/python"
},
{
"url": "https://github.com/heroku/heroku-buildpack-nodejs.git"
}
]
}
```
(list, optional) A list of buildpacks to use when deploying the app. Each entry is an object with a `url` property. Buildpacks specified via the `buildpacks:add` or `buildpacks:set` commands take precedence over those specified in `app.json`. Buildpack URLs may use the shorthand format (e.g., `heroku/python`) which will be expanded to the full GitHub URL.
- `url`: (string, required) The URL or shorthand reference of the buildpack.
## Cron
```json
{
"crons": [
"cron": [
{
"command": "echo 'hello'",
"schedule": "0 1 * * *"
@@ -21,7 +40,106 @@
(list, optional) A list of cron resources. Keys are the names of the process types. The values are an object containing one or more of the following properties:
- `command`: (string, required)
- `maintenance`: (boolean, optional)
- `schedule`: (string, required)
- `concurrency_policy`: (string, optional, default: `allow`, options: `allow`, `forbid`, `replace`)
## Env
```json
{
"env": {
"SIMPLE_VAR": "default_value",
"SECRET_KEY": {
"description": "A secret key for signing tokens",
"generator": "secret"
},
"DATABASE_URL": {
"description": "PostgreSQL connection string",
"required": true
},
"OPTIONAL_VAR": {
"description": "An optional configuration value",
"value": "default",
"required": false
},
"SYNC_VAR": {
"description": "A variable that updates on every deploy",
"value": "synced_value",
"sync": true
}
}
}
```
(object, optional) A key-value object for environment variable configuration. Keys are the variable names. Values can be either a string (used as the default value) or an object with the following properties:
- `description`: (string, optional) Human-readable explanation of the variable's purpose
- `value`: (string, optional) Default value for the variable
- `required`: (boolean, optional, default: `true`) Whether the variable must have a value
- `generator`: (string, optional) Function to generate the value. Currently only `"secret"` is supported, which generates a 64-character cryptographically secure hex string
- `sync`: (boolean, optional, default: `false`) If `true`, the value will be set on every deploy, overwriting any existing value
### Behavior
Environment variables from `app.json` are processed during the first deploy, before the predeploy script runs. The behavior depends on the variable configuration:
1. **Variables with `value` or simple string**: The default value is set if the variable doesn't already exist
2. **Variables with `generator: "secret"`**: A random 64-character hex string is generated if the variable doesn't exist
3. **Required variables without a value or generator**: If a TTY is available, the user is prompted for a value. Otherwise, the deploy fails with an error
4. **Optional variables without a value**: Skipped silently if no TTY is available
On subsequent deploys:
- Variables are NOT re-set unless `sync: true` is specified
- Variables with `sync: true` are always set to their configured value, overwriting any manual changes
- Variables that already have values are not modified
### Examples
**Simple default value:**
```json
{
"env": {
"WEB_CONCURRENCY": "5"
}
}
```
**Generated secret (recommended for API keys, tokens, etc.):**
```json
{
"env": {
"SECRET_KEY_BASE": {
"description": "Base secret for session encryption",
"generator": "secret"
}
}
}
```
**Required variable that must be provided:**
```json
{
"env": {
"DATABASE_URL": {
"description": "PostgreSQL connection URL",
"required": true
}
}
}
```
**Variable that stays in sync with app.json:**
```json
{
"env": {
"FEATURE_FLAGS": {
"value": "new_ui,dark_mode",
"sync": true
}
}
}
```
## Formation
@@ -41,6 +159,7 @@
- `autoscaling` (map of string to object, optional) autoscaling rules. See the autoscaling section for more details
- `max_parallel`: (int, optional) number of instances to deploy in parallel at a given time
- `quantity`: (int, optional) number of processes to maintain. Default 1 for web processes, 0 for all others.
- `service`: (map of string to oject, optional) governs how non-web processes are exposed as services on the network
### Autoscaling
@@ -80,6 +199,24 @@ An autoscaling trigger consists of the following properties:
- `type`: (string, optional)
- `metadata`: (object, optional)
### Service
```json
{
"formation": {
"internal-web": {
"service": {
"exposed": true
}
}
}
}
```
(object, optional) A key-value object specifying how to expose non-web processes as services.
- `service`: (boolean, optional) Whether to expose a process as a network service. The `PORT` variable will be set to 5000.
## Healthchecks
```json
@@ -151,3 +288,14 @@ An autoscaling trigger consists of the following properties:
- Example use-cases
- Setting up OAuth clients and DNS
- Loading seed/test data into the app’s test database
## Properties
### Settable properties
> [!NOTE]
> The `Report flags` column lists the CLI argument names accepted by `app-json:report`. The JSON keys emitted by `app-json:report --format json` are the same names with the leading `--app-json-` stripped (e.g. `appjson-path`, `global-appjson-path`, `computed-appjson-path`). Legacy keys with the `app-json-` prefix are also emitted during the 0.38.x deprecation window and will be removed in a future major release.
| Property | Scope | Default | Report flags | Description |
|---|---|---|---|---|
| `appjson-path` | app + global | `app.json` | `--app-json-appjson-path`, `--app-json-global-appjson-path`, `--app-json-computed-appjson-path` | Path within the app to the `app.json` manifest, relative to the build root |

View File

@@ -1,3 +1,65 @@
# nginx.conf.sigil
The `nginx.conf.sigil` file is used to configure the nginx server for an application. The default template can be found [here](https://github.com/dokku/dokku/blob/master/plugins/nginx-vhosts/templates/nginx.conf.sigil). Dokku uses a tool named [sigil](https://github.com/gliderlabs/sigil) to generate the nginx configuration based on the template provided.
## Validation
A custom `nginx.conf.sigil` is pre-validated at the start of every deploy, immediately after it is extracted from the source tree and before the build phase runs. Pre-validation renders the template via sigil with the same parameters used at deploy time, wraps the rendered config in a minimal `events`/`http` scaffold, and runs `nginx -t` against the result. The deploy is aborted if either the sigil render or the `nginx -t` check fails, so build work is not wasted on a syntactically invalid template. When no app listeners exist yet (typical for first deploys), pre-validation injects a placeholder `127.0.0.1:5000` listener for `DOKKU_APP_WEB_LISTENERS` so that the rendered upstream block has a static server entry and `nginx -t` does not bail out on "host not found in upstream".
Pre-validation is skipped when the proxy type is not `nginx` or when `disable-custom-config` is set to `true` for the app.
### Custom nginx modules
Pre-validation runs `nginx -t` against a minimal wrapper config that does _not_ include the top-level `load_module` directives from the global `/etc/nginx/nginx.conf`. A `nginx.conf.sigil` that uses a directive provided by a dynamically loaded module - such as `image_filter`, provided by the [ngx_http_image_filter_module](https://nginx.org/en/docs/http/ngx_http_image_filter_module.html) - therefore fails pre-validation with an `unknown directive` error, even though `nginx -t` succeeds against the real server config where the module is loaded.
The `load_module` directive cannot be added to the app's `nginx.conf.sigil` to work around this, as that file is included inside the `http { }` block while `load_module` is only valid in nginx's top-level main context.
To make pre-validation aware of a module, override the wrapper template used for validation. The [`nginx-app-template-source`](/docs/development/plugin-triggers.md#nginx-app-template-source) trigger returns the path to the `sigil` template used to generate a given nginx configuration file, and its `validate-config` template type controls the pre-validation wrapper. Create a [custom plugin](/docs/development/plugin-creation.md) that implements the trigger and returns a `validate.conf.sigil` that adds the required `load_module` line at the top of the wrapper.
The trigger file (named `nginx-app-template-source` and marked executable):
```shell
#!/usr/bin/env bash
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
APP="$1"
TEMPLATE_TYPE="$2"
if [[ "$TEMPLATE_TYPE" == "validate-config" ]]; then
echo "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/validate.conf.sigil"
fi
```
The custom `validate.conf.sigil`, which is the [default wrapper](https://github.com/dokku/dokku/blob/master/plugins/nginx-vhosts/templates/validate.conf.sigil) with the required `load_module` line added at the top. Use the same `load_module` line that the host's global `/etc/nginx/nginx.conf` uses:
```
load_module modules/ngx_http_image_filter_module.so;
events { worker_connections 768; }
http {
access_log off;
error_log /dev/null;
include {{ $.NGINX_CONF }};
}
```
The same override also governs the standalone `dokku nginx:validate-config` command, which renders the `validate-config` template as well.
## HTTP/2
nginx 1.25.1 deprecated the `http2` parameter on the `listen` directive in favor of a standalone `http2 on;` directive. Custom `nginx.conf.sigil` templates that hardcode `listen ... ssl http2;` will produce `nginx: [warn] the "listen ... http2" directive is deprecated` warnings when run against nginx 1.25.1 or newer.
Dokku exposes the `HTTP2_DIRECTIVE_SUPPORTED` template variable, set to `"true"` when the host nginx is 1.25.1 or newer, so a single template can render the correct syntax against either version. The default template uses this pattern:
```
{{ if eq $.HTTP2_DIRECTIVE_SUPPORTED "true" }}
listen [{{ $.NGINX_BIND_ADDRESS_IP6 }}]:{{ $listen_port }} ssl;
listen {{ if $.NGINX_BIND_ADDRESS_IP4 }}{{ $.NGINX_BIND_ADDRESS_IP4 }}:{{end}}{{ $listen_port }} ssl;
http2 on;
{{ else }}
listen [{{ $.NGINX_BIND_ADDRESS_IP6 }}]:{{ $listen_port }} ssl http2;
listen {{ if $.NGINX_BIND_ADDRESS_IP4 }}{{ $.NGINX_BIND_ADDRESS_IP4 }}:{{end}}{{ $listen_port }} ssl http2;
{{ end }}
```
Dokku logs a deprecation warning during deploys when a custom template still uses the `listen ... http2` form, so the offending template can be located via the deploy output.

View File

@@ -0,0 +1,3 @@
# railpack.json
The `railpack.json` file is used to configure an application when built with the `railpack` builder. Please refer to the [railpack.json documentation](https://railpack.com/config/file) for more information.

View File

@@ -2,10 +2,10 @@
<browserconfig>
<msapplication>
<tile>
<square70x70logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.16/docs/assets/favicons/mstile-70x70.png"/>
<square150x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.16/docs/assets/favicons/mstile-150x150.png"/>
<square310x310logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.16/docs/assets/favicons/mstile-310x310.png"/>
<wide310x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.16/docs/assets/favicons/mstile-310x150.png"/>
<square70x70logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.38.27/docs/assets/favicons/mstile-70x70.png"/>
<square150x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.38.27/docs/assets/favicons/mstile-150x150.png"/>
<square310x310logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.38.27/docs/assets/favicons/mstile-310x310.png"/>
<wide310x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.38.27/docs/assets/favicons/mstile-310x150.png"/>
<TileColor>#da532c</TileColor>
</tile>
</msapplication>

View File

@@ -2,37 +2,37 @@
"name": "Dokku",
"icons": [
{
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.35.16\/docs\/assets\/favicons\/android-chrome-36x36.png",
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.38.27\/docs\/assets\/favicons\/android-chrome-36x36.png",
"sizes": "36x36",
"type": "image\/png",
"density": "0.75"
},
{
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.35.16\/docs\/assets\/favicons\/android-chrome-48x48.png",
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.38.27\/docs\/assets\/favicons\/android-chrome-48x48.png",
"sizes": "48x48",
"type": "image\/png",
"density": "1.0"
},
{
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.35.16\/docs\/assets\/favicons\/android-chrome-72x72.png",
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.38.27\/docs\/assets\/favicons\/android-chrome-72x72.png",
"sizes": "72x72",
"type": "image\/png",
"density": "1.5"
},
{
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.35.16\/docs\/assets\/favicons\/android-chrome-96x96.png",
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.38.27\/docs\/assets\/favicons\/android-chrome-96x96.png",
"sizes": "96x96",
"type": "image\/png",
"density": "2.0"
},
{
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.35.16\/docs\/assets\/favicons\/android-chrome-144x144.png",
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.38.27\/docs\/assets\/favicons\/android-chrome-144x144.png",
"sizes": "144x144",
"type": "image\/png",
"density": "3.0"
},
{
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.35.16\/docs\/assets\/favicons\/android-chrome-192x192.png",
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.38.27\/docs\/assets\/favicons\/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image\/png",
"density": "4.0"

View File

@@ -25,9 +25,9 @@
/* Avatar section darkmode fade */
--avatar-before-gradient: rgba(0, 0, 0, 0) linear-gradient(90deg, white 2.52%, rgba(255, 255, 255, 0) 100%) repeat scroll 0% 0%;
--avatar-darkmode-before-gradient: rgba(0, 0, 0, 0) linear-gradient(90deg, #043791 2.52%, rgba(255, 255, 255, 0) 100%) repeat scroll 0% 0%;
--avatar-darkmode-before-gradient: rgba(0, 0, 0, 0) linear-gradient(90deg, #0.38.27 2.52%, rgba(255, 255, 255, 0) 100%) repeat scroll 0% 0%;
--avatar-after-gradient: rgba(0, 0, 0, 0) linear-gradient(270deg, white 2.52%, rgba(255, 255, 255, 0) 100%) repeat scroll 0% 0%;
--avatar-darkmode-after-gradient: rgba(0, 0, 0, 0) linear-gradient(270deg, #043791 2.52%, rgba(255, 255, 255, 0) 100%) repeat scroll 0% 0%;
--avatar-darkmode-after-gradient: rgba(0, 0, 0, 0) linear-gradient(270deg, #0.38.27 2.52%, rgba(255, 255, 255, 0) 100%) repeat scroll 0% 0%;
}
body {
@@ -1191,15 +1191,15 @@ ul.fas li .fa-large:before {
.getting-started::after {
background: linear-gradient(0deg, rgba(52, 52, 87, 0.2) -40.97%, rgba(0, 0, 0, 0) 103.19%),
#043791;
#0.38.27;
}
.tab-content {
background: #043791;
background: #0.38.27;
}
.nav-tabs {
background: #043791;
background: #0.38.27;
}
.powered-by_brands {

View File

@@ -32,6 +32,9 @@
"0.32.4",
"0.33.9",
"0.34.9",
"0.35.16"
"0.35.20",
"0.36.11",
"0.37.10",
"0.38.27"
]
}

View File

@@ -28,26 +28,6 @@ gem install dokku-cli
See [documentation here](https://github.com/SebastianSzturo/dokku-cli) for more information.
## (ruby) DokkuClient
DokkuClient is another rubygem that acts as a client for your Dokku installation with built-in support for certain external plugins. You can install it via the following shell command (assuming you have ruby and rubygems installed):
```shell
gem install dokku_client
```
See [documentation here](https://github.com/netguru/dokku_client) for more information.
## (ruby) Dokkufy
Dokkufy is a rubygem that handles automation of certain tasks, such as Dokku setup, plugin installation, etc. You can install it via the following shell command (assuming you have ruby and rubygems installed):
```shell
gem install dokkufy
```
See [documentation here](https://github.com/cbetta/dokkufy) for more information.
## (ruby) Dockland
Dockland is a rubygem that acts as a client for your Dokku installation. You can install it via the following shell command (assuming you have ruby and rubygems installed):

View File

@@ -104,6 +104,7 @@ The following plugins are available and provided by Dokku maintainers. Please f
| [InfluxDB](https://github.com/basgys/dokku-influxdb) | [basgys][] | 0.4.x |
| [RethinkDB](https://github.com/stuartpb/dokku-rethinkdb-plugin) | [stuartpb][] | 0.3.x |
| [Headless Chrome](https://github.com/lazyatom/dokku-chrome) | [lazyatom][] | 0.8.1+ |
| [HTTP OAuth](https://github.com/cheif/dokku-http-oauth) | [cheif][] | 0.4.0+ |
### Plugins Implementing New Dokku Functionality
@@ -113,6 +114,7 @@ The following plugins are available and provided by Dokku maintainers. Please f
| [APT](https://github.com/dokku-community/dokku-apt) | [dokku-community][] | 0.18.x+ |
| [Auto Sync](https://github.com/IdeaSynthesis/dokku-autosync)<sup>1</sup> | [fomojola][] | 0.8.1+ |
| [Deploy Webhook](https://github.com/IdeaSynthesis/dokku-deploy-webhook)<sup>2</sup> | [fomojola][] | 0.8.1+ |
| [DNS](https://github.com/deanmarano/dokku-dns) | [deanmarano][] | 0.31.0+ |
| [Docker auto persist volumes](https://github.com/Flink/dokku-docker-auto-volumes) | [flink][] | 0.4.0+ |
| [Docker Direct](https://github.com/dokku-community/dokku-docker-direct) | [josegonzalez][] | 0.4.0+ |
| [Dokku Clone](https://github.com/crisward/dokku-clone) | [crisward][] | 0.4.0+ |
@@ -123,7 +125,6 @@ The following plugins are available and provided by Dokku maintainers. Please f
| [Host post-build command hook](https://github.com/baikunz/dokku-post-deploy-script) | [baikunz][] | 0.4.0+ |
| [Host pre-build command hook](https://github.com/fteychene/dokku-build-hook) | [fteychene][] | 0.4.0+ |
| [Hostname](https://github.com/michaelshobbs/dokku-hostname) | [michaelshobbs][] | 0.4.0+ |
| [Hostname](https://github.com/michaelshobbs/dokku-hostname) | [michaelshobbs][] | 0.4.0+ |
| [HTTP Auth Secure Apps](https://github.com/matto1990/dokku-secure-apps) | [matto1990][] | 0.4.0+ |
| [Image Size Limit](https://github.com/Tashows/dokku-image-size-limit) | [Tashows][] | |
| [Litestream](https://github.com/AxelTheGerman/dokku-litestream)<sup>4</sup> | [AxelTheGerman][] | 0.27.0+ |
@@ -267,10 +268,12 @@ The following plugins are no longer maintained by their developers.
[candlewaster]: https://notabug.org/candlewaster
[cedricziel]: https://github.com/cedricziel
[cef]: https://github.com/cef
[cheif]: https://github.com/cheif
[cjblomqvist]: https://github.com/cjblomqvist
[crisward]: https://github.com/crisward
[cu12]: https://github.com/cu12
[darkpixel]: https://github.com/darkpixel
[deanmarano]: https://github.com/deanmarano
[dokku]: https://github.com/dokku
[dokku-community]: https://github.com/dokku-community
[dyson]: https://github.com/dyson

View File

@@ -13,6 +13,7 @@ domains:enable <app> # Enable VHOST support
domains:remove <app> <domain> [<domain> ...] # Remove domains from app
domains:remove-global <domain> [<domain> ...] # Remove global domain names
domains:report [<app>|--global] [<flag>] # Displays a domains report for one or more apps
domains:reset <app> # Reset app domains to global-configured domains
domains:set <app> <domain> [<domain> ...] # Set domains for app
domains:set-global <domain> [<domain> ...] # Set global domain names
```
@@ -33,7 +34,7 @@ If an FQDN such as `dokku.org` is used as the application name, the global virtu
You can optionally override this in a plugin by implementing the `nginx-hostname` plugin trigger. If the `nginx-hostname` plugin has no output, the normal hostname algorithm will be executed. See the [plugin trigger documentation](/docs/development/plugin-triggers.md#nginx-hostname) for more information.
## Disabling VHOSTS
## Enabling and disabling VHOSTS
If desired, it is possible to disable vhosts with the domains plugin.
@@ -41,7 +42,20 @@ If desired, it is possible to disable vhosts with the domains plugin.
dokku domains:disable node-js-app
```
On subsequent deploys, the nginx virtualhost will be discarded. This is useful when deploying internal-facing services that should not be publicly routeable. As of 0.4.0, nginx will still be configured to proxy your app on some random high port. This allows internal services to maintain the same port between deployments. You may change this port by setting `DOKKU_PROXY_PORT` and/or `DOKKU_PROXY_SSL_PORT` (for services configured to use SSL.)
Vhosts can also be disabled for all apps:
```shell
dokku domains:disable --all
```
On subsequent deploys, the nginx virtualhost will be discarded. This is useful when deploying internal-facing services that should not be publicly routeable. As of 0.4.0, nginx will still be configured to proxy your app on some random high port. This allows internal services to maintain the same port between deployments. The non-SSL and SSL ports used can be customized via `dokku proxy:set <app> proxy-port <value>` and `dokku proxy:set <app> proxy-ssl-port <value>` - see the [proxy management documentation](/docs/networking/proxy-management.md#setting-proxy-ports) for details.
To re-enable, run the `domains:enable` subcommand:
```shell
dokku domains:enable node-js-app
dokku domains:enable --all
```
The domains plugin allows you to specify custom domains for applications. This plugin is aware of any ssl certificates that are imported via `certs:add`. Be aware that disabling domains (with `domains:disable`) will override any custom domains.
@@ -62,6 +76,9 @@ dokku domains:remove node-js-app dokku.me
# set all custom domains for app
dokku domains:set node-js-app dokku.me dokku.org
# delete all app domains and configure available global domains on it
dokku domains:reset node-js-app
```
## Displaying domains reports for an app

View File

@@ -8,7 +8,7 @@ The `config` plugin provides the following commands to manage your variables:
config:show (<app>|--global) Pretty-print an app or global environment
config:bundle (<app>|--global) [--merged] Bundle environment into tarfile
config:clear (<app>|--global) Clears environment variables
config:export (<app>|--global) [--envfile] Export a global or app environment
config:export (<app>|--global) [--format <format>] Export a global or app environment
config:get (<app>|--global) KEY Display a global or app-specific config value
config:keys (<app>|--global) [--merged] Show keys set in environment
config:set [--encoded] [--no-restart] (<app>|--global) KEY1=VALUE1 [KEY2=VALUE2 ...] Set one or more config vars
@@ -22,12 +22,12 @@ Environment variables are available both at run time and during the application
For buildpack deploys, Dokku will create a `/app/.env` file that can be used for legacy buildpacks. Note that this is _not_ updated when `config:set` or `config:unset` is called, and is only written during a `deploy` or `ps:rebuild`. Developers are encouraged to instead read from the application environment directly, as the proper values will be available then.
> [!NOTE]
> Global `ENV` files are sourced before app-specific `ENV` files. This means that app-specific variables will take precedence over global variables. Configuring your global `ENV` file is manual, and should be considered potentially dangerous as configuration applies to all applications.
> Global environment variables are sourced before app-specific environment variables. This means that app-specific variables will take precedence over global variables. Configuring global environment variables should be considered potentially dangerous as configuration applies to all applications.
You can set multiple environment variables at once:
```shell
dokku config:set node-js-app ENV=prod COMPILE_ASSETS=1
dokku config:set node-js-app APP_ENV=prod COMPILE_ASSETS=1
```
Whitespace and special characters get tricky. If you are using dokku locally you don't need to do any special escaping. If you are using dokku over ssh you will need to backslash-escape spaces:
@@ -42,10 +42,23 @@ Dokku can also read base64 encoded values. That's the easiest way to set a value
dokku config:set --encoded node-js-app KEY="$(base64 -w 0 ~/.ssh/id_rsa)"
```
Decoded values are stored byte-for-byte exactly as they were encoded. Be aware that `echo "value" | base64` appends a trailing `\n` before encoding because `echo` always adds a newline, and that newline becomes part of the stored value. This is rarely what you want for short inline values - use `printf '%s'` or `echo -n` instead:
```shell
dokku config:set --encoded node-js-app KEY="$(printf '%s' "myvalue" | base64 -w 0)"
dokku config:set --encoded node-js-app KEY="$(echo -n "myvalue" | base64 -w 0)"
```
For multi-line values from a file (such as an SSH private key), `cat` and `base64 -w 0` preserve the file contents exactly:
```shell
dokku config:set --encoded node-js-app KEY="$(cat ~/.ssh/id_rsa | base64 -w 0)"
```
When setting or unsetting environment variables, you may wish to avoid an application restart. This is useful when developing plugins or when setting multiple environment variables in a scripted manner. To do so, use the `--no-restart` flag:
```shell
dokku config:set --no-restart node-js-app ENV=prod
dokku config:set --no-restart node-js-app APP_ENV=prod
```
If you wish to have the variables output in an `eval`-compatible form, you can use the `config:export` command
@@ -54,7 +67,7 @@ If you wish to have the variables output in an `eval`-compatible form, you can u
dokku config:export node-js-app
# outputs variables in the form:
#
# export ENV='prod'
# export APP_ENV='prod'
# export COMPILE_ASSETS='1'
# source in all the node-js-app app environment variables
@@ -68,9 +81,38 @@ dokku config:export --format shell node-js-app
# outputs variables in the form:
#
# ENV='prod' COMPILE_ASSETS='1'
# APP_ENV='prod' COMPILE_ASSETS='1'
```
## Setting Environment Variables via app.json
Environment variables can also be declared in an `app.json` file in your repository root. This is useful for setting default values, generating secrets, or requiring certain variables to be set before deployment.
```json
{
"env": {
"SIMPLE_VAR": "default_value",
"SECRET_KEY": {
"description": "A secret key for signing tokens",
"generator": "secret"
},
"DATABASE_URL": {
"description": "PostgreSQL connection string",
"required": true
}
}
}
```
Environment variables from `app.json` are processed during the first deploy, before the predeploy script runs. Variables can be configured as:
- **Simple string values**: Set as defaults if not already configured
- **Generated secrets**: Use `"generator": "secret"` to auto-generate a 64-character hex string
- **Required variables**: Use `"required": true` to prompt for or require a value
- **Synced variables**: Use `"sync": true` to update the value on every deploy
For full details on the `env` schema and behavior, see the [app.json documentation](/docs/appendices/file-formats/app-json.md#env).
## Special Config Variables
The following config variables have special meanings and can be set in a variety of ways. Unless specified via global app config, the values may not be passed into applications. Usage of these values within applications should be considered unsafe, as they are an internal configuration values that may be moved to the internal properties system in the future.
@@ -98,30 +140,15 @@ The following config variables have special meanings and can be set in a variety
| `DOKKU_QUIET_OUTPUT` | none | `--quiet` flag | Silences certain header output for `dokku` commands. |
| `DOKKU_RM_CONTAINER` | none | `dokku config:set` <br /> | Deprecated: Whether to keep `dokku run` containers around or not. |
| `DOKKU_TRACE` | none | `dokku trace:on` <br /> `dokku trace:off` <br /> `--trace` flag | Turn on very verbose debugging. |
| `DOKKU_APP_PROXY_TYPE` | `nginx` | `dokku proxy:set` | |
| `DOKKU_APP_RESTORE` | `1` | `dokku config:set` <br /> `dokku ps:stop` | |
| `DOKKU_APP_SHELL` | `/bin/bash` | `dokku config:set` | Allows users to change the default shell used by Dokku for `dokku enter` and execution of deployment tasks. |
| `DOKKU_APP_TYPE` | `herokuish` | Auto-detected by using buildpacks or dockerfile | |
| `DOKKU_CHECKS_DISABLED` | none | `dokku checks:disable` | |
| `DOKKU_CHECKS_ENABLED` | none | `dokku checks:enable` | |
| `DOKKU_CHECKS_SKIPPED` | none | `dokku checks:skip` | |
| `DOKKU_CHECKS_WAIT` | `5` | `dokku config:set` | Wait this many seconds for the container to start before running checks.
| `DOKKU_CHECKS_TIMEOUT` | `30` | `dokku config:set` | Wait this many seconds for each response before marking it as a failure.
| `DOKKU_CHECKS_ATTEMPTS` | `5` | `dokku config:set` | Number of retries for to run for a specific check before marking it as a failure
| `DOKKU_DEFAULT_CHECKS_WAIT` | `10` | `dokku config:set` | If no user-defined checks are specified - or if the process being checked is not a `web` process - this is the period of time Dokku will wait before checking that a container is still running. |
| `DOKKU_DISABLE_PROXY` | none | `dokku proxy:disable` <br /> `dokku proxy:enable` | Disables the proxy in front of your application, resulting in publicly routing the docker container. |
| `DOKKU_DISABLE_ANSI_PREFIX_REMOVAL` | none | `dokku config:set` <br /> `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | Disables removal of the ANSI prefix during deploys. Can be used in cases where the client deployer does not understand ansi escape codes. |
| `DOKKU_DISABLE_APP_AUTOCREATION` | none | `dokku config:set` | Disables automatic creation of a non-existent app on deploy. |
| `DOKKU_DOCKER_STOP_TIMEOUT` | `10` | `dokku config:set` | Configurable grace period given to the `docker stop` command. If a container has not stopped by this time, a `kill -9` signal or equivalent is sent in order to force-terminate the container. Both the `ps:stop` and `apps:destroy` commands _also_ respect this value. If not specified, the docker defaults for the [docker stop command](https://docs.docker.com/engine/reference/commandline/stop/) will be used.|
| `DOKKU_DOCKERFILE_CACHE_BUILD` | none | `dokku config:set` | |
| `DOKKU_DOCKERFILE_START_CMD` | none | `dokku config:set` | |
| `DOKKU_PARALLEL_ARGUMENTS`. | none | `dokku config:set` | Allows passing custom arguments to parallel for `ps:*all` commands |
| `DOKKU_PROXY_PORT` | automatically assigned | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` <br /> `dokku config:set` | |
| `DOKKU_PROXY_SSL_PORT` | automatically assigned | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` <br /> `dokku config:set` | |
| `DOKKU_SKIP_ALL_CHECKS` | none | `dokku config:set` | |
| `DOKKU_SKIP_CLEANUP` | | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | When a deploy is triggered, if this is set to a non-empty value, then old docker containers and images will not be removed. |
| `DOKKU_SKIP_DEFAULT_CHECKS` | | `dokku config:set` | |
| `DOKKU_SKIP_DEPLOY` | | `dokku config:set` | |
| `DOKKU_START_CMD` | none | `dokku config:set` | Command to run instead of `/start $PROC_TYPE` |
| `DOKKU_SYSTEM_GROUP` | `dokku` | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | System group to chown files as. |
| `DOKKU_SYSTEM_USER` | `dokku` | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | System user to chown files as. |
## Properties
### Internal properties
The following property is recorded internally by the config plugin and is not exposed via `config:report`:
| Property | Description | Source |
|---|---|---|
| `env-migrated` | Migration sentinel that records that the per-app or global `ENV` file has been drained out of its pre-0.38.0 location into the config path. The drain happens once: a file found at the old path once this is recorded is never imported, since the config path holds every change made since. Such a file is removed when it agrees with the current config, and otherwise moved aside to `ENV.migrated` with the keys it disagrees on named in a warning. The preserved copy is left for review and should be deleted afterwards, since it holds keys that were unset on purpose | `plugins/config/migrate.go` writes `"true"` once the file has been drained |

View File

@@ -41,6 +41,9 @@ dokku certs:add node-js-app < cert-key.tar
cat yourdomain_com.crt yourdomain_com.ca-bundle > server.crt
```
> [!NOTE]
> Archives passed to `certs:add` are validated before extraction to prevent path traversal and symlink escape attacks. Archives containing absolute paths, parent directory traversal entries, or symlinks pointing outside the extraction directory will be rejected.
#### SSL and Multiple Domains
When an SSL certificate is associated to an application, the certificate will be associated with _all_ domains currently associated with said application. Your certificate _should_ be associated with all of those domains, otherwise accessing the application will result in SSL errors. If you wish to remove one of the domains from the application, refer to the [domain configuration documentation](/docs/configuration/domains.md).
@@ -140,8 +143,27 @@ Certain versions of nginx have bugs that prevent [HTTP/2](https://nginx.org/en/d
When your app is served from port `80` then the `/home/dokku/APP/nginx.conf` file will automatically be updated to instruct nginx to respond to ssl on port 443 as a new cert is added. If your app uses a non-standard port (perhaps you have a dockerfile deploy exposing port `99999`) you may need to manually expose an ssl port via `dokku ports:add <APP> https:443:99999`.
If an `https:443:*` port mapping already exists when a certificate is installed or renewed, Dokku will preserve it rather than rewriting it from the `http:80:*` mappings. This allows apps that terminate TLS inside the container (for example, with a configuration like `http:80:80 https:443:443`) to keep their explicit mapping across `dokku certs:add` and unattended renewals.
## Other
### Running behind a proxy (`X-Forwarded-Ssl`, etc.)
See the [running behind another proxy documentation](/docs/networking/proxies/nginx.md#running-behind-another-proxy--configuring-x-forwarded--headers) for more information on how to configure your Nginx config when your server is running behind a proxy (e.g. load balancer, etc.).
## Properties
### Read-only flags
The following flags surface in `certs:report` but are not managed by `certs:set` - they are derived from the on-disk certificate:
| Flag | Description |
|---|---|
| `--ssl-enabled` | `true` when an SSL certificate is installed for the app |
| `--ssl-dir` | Absolute path to the per-app certificate directory |
| `--ssl-hostnames` | Hostnames the certificate covers (CN plus Subject Alternative Names) |
| `--ssl-issuer` | Certificate issuer DN |
| `--ssl-subject` | Certificate subject DN |
| `--ssl-verified` | `true` if the certificate chain verifies against the system CA bundle |
| `--ssl-expires-at` | Certificate `notAfter` timestamp |
| `--ssl-starts-at` | Certificate `notBefore` timestamp |

View File

@@ -143,11 +143,11 @@ dokku letsencrypt:cron-job --add
### Skipping deployment
If you only want to rebuild and tag a container, you can skip the deployment phase by setting `$DOKKU_SKIP_DEPLOY` to `true` by running:
If you only want to rebuild and tag a container, you can skip the deployment phase by setting the `skip-deploy` property to `true`:
``` shell
# on the Dokku host
dokku config:set ruby-getting-started DOKKU_SKIP_DEPLOY=true
dokku ps:set ruby-getting-started skip-deploy true
```
### Redeploying or restarting

View File

@@ -8,11 +8,12 @@ apps:clone <old-app> <new-app> # Clones an app
apps:create <app> # Create a new app
apps:destroy <app> # Permanently destroy an app
apps:exists <app> # Checks if an app exists
apps:list # List your apps
apps:list [--format stdout|json] # List your apps
apps:lock <app> # Locks an app for deployment
apps:locked <app> # Checks if an app is locked for deployment
apps:rename <old-app> <new-app> # Rename an app
apps:report [<app>] [<flag>] # Display report about an app
apps:set [--global] <app> <key> (<value>) # Set or clear an apps property for an app
apps:unlock <app> # Unlocks an app for deployment
```
@@ -46,6 +47,18 @@ node-js-app
python-app
```
You can also retrieve the list of apps as a JSON array by using the `--format json` flag, which is useful for programmatic consumption:
```shell
dokku apps:list --format json
```
```json
["node-js-app","python-app"]
```
When no apps exist, the JSON output is an empty array (`[]`).
### Checking if an application exists
For CI/CD pipelines, it may be useful to see if an application exists before creating a "review" application for a specific branch. You can do so via the `apps:exists` command:
@@ -78,6 +91,20 @@ Once created, you can configure the application as normal, and deploy the applic
- Create and link datastores.
- Set environment variables.
### Disabling automatic app creation
By default, pushing to a git remote for an app that does not yet exist on the Dokku host will cause the app to be created automatically. On shared or production hosts this may be undesirable - operators may prefer that an explicit `apps:create` is required first. The `disable-autocreation` global property controls this behavior:
```shell
dokku apps:set --global disable-autocreation true
```
While set, pushes targeting an app that does not exist will be rejected. The default behavior may be restored by passing an empty value:
```shell
dokku apps:set --global disable-autocreation
```
### Removing a deployed app
In some cases, you may need to destroy an application, whether it is because the application is temporary or because it was misconfigured. In these cases, you can use the `apps:destroy` command. Performing any destructive actions in Dokku requires confirmation, and this command will ask for the name of the application being deleted before doing so.
@@ -297,3 +324,26 @@ You can pass flags which will output only the value of the specific information
```shell
dokku apps:report node-js-app --app-dir
```
## Properties
### Settable properties
> [!NOTE]
> The `Report flags` column lists the CLI argument names accepted by `apps:report`. The JSON keys emitted by `apps:report --format json` are the same names with the leading `--app-` stripped (e.g. `global-disable-autocreation`). Legacy keys with the `app-` prefix (e.g. `app-global-disable-autocreation`) are also emitted during the 0.38.x deprecation window and will be removed in a future major release.
| Property | Scope | Default | Report flags | Description |
|---|---|---|---|---|
| `disable-autocreation` | global only | `false` | `--app-global-disable-autocreation` | When `true`, pushes to a remote for an app that does not yet exist are rejected instead of auto-creating the app |
### Read-only flags
The following flags surface in `apps:report` but are not managed by `apps:set`:
| Flag | Description |
|---|---|
| `--app-created-at` | UNIX timestamp of app creation |
| `--app-deploy-source` | Source kind of the last deploy (`git`, `archive`, `docker-image`, `git-sync`) |
| `--app-deploy-source-metadata` | Free-form metadata for the deploy source (commit sha, image ref, URL) |
| `--app-dir` | Absolute path of the app root on disk |
| `--app-locked` | `true` while a deploy or rebuild holds the app lock |

View File

@@ -82,6 +82,28 @@ The default value may be set by passing an empty value for the option.
dokku builder:set --global build-dir
```
#### Skipping container and image cleanup
After a successful deploy, Dokku removes old containers and images that are no longer referenced by the app. On hosts where image rebuilds are expensive or where operators want to retain prior images for manual rollback, this cleanup can be disabled per-app or globally via the `skip-cleanup` property:
```shell
dokku builder:set node-js-app skip-cleanup true
```
The property can also be set globally:
```shell
dokku builder:set --global skip-cleanup true
```
The default behavior (cleanup enabled) may be restored by passing an empty value:
```shell
dokku builder:set node-js-app skip-cleanup
```
For backwards compatibility with bootstrap-time configuration, the `DOKKU_SKIP_CLEANUP` environment variable in `/etc/environment` or `~dokku/.dokkurc/*` is still honored when the `skip-cleanup` property is unset. The property is the canonical interface and takes precedence when set.
### Displaying builder reports for an app
You can get a report about the app's builder status using the `builder:report` command:
@@ -150,3 +172,24 @@ Custom plugins names _must_ have the prefix `builder-` or builder overriding via
Builders can use any tools available on the system to build the docker image, and may even be used to schedule building off-server. The only current requirement is that the image must exist on the server at the end of the `builder-build` command, though this requirement may be relaxed in a future release.
For a simple example of how to implement this trigger, see `builder-pack`, which utilizes a cli tool - `pack-cli` - to generate an OCI image that is compatible with Docker and can be scheduled by the official scheduling plugins.
## Properties
### Settable properties
> [!NOTE]
> The `Report flags` column lists the CLI argument names accepted by `builder:report`. The JSON keys emitted by `builder:report --format json` are the same names with the leading `--builder-` stripped (e.g. `selected`, `global-selected`, `computed-selected`). Legacy keys with the `builder-` prefix are also emitted during the 0.38.x deprecation window and will be removed in a future major release.
| Property | Scope | Default | Report flags | Description |
|---|---|---|---|---|
| `build-dir` | app + global | none | `--builder-build-dir`, `--builder-global-build-dir`, `--builder-computed-build-dir` | Subdirectory within the repository to use as the build context |
| `selected` | app + global | none | `--builder-selected`, `--builder-global-selected`, `--builder-computed-selected` | Builder plugin to use; overrides automatic detection |
| `skip-cleanup` | app + global | `false` | `--builder-skip-cleanup`, `--builder-global-skip-cleanup`, `--builder-computed-skip-cleanup` | When `true`, leaves intermediate build artifacts in place after the build |
### Read-only flags
The following flags surface in `builder:report` but are not managed by `builder:set`:
| Flag | Description |
|---|---|
| `--builder-detected` | Builder auto-selected for the app when `selected` is unset |

View File

@@ -0,0 +1,225 @@
# Buildpacks Management
> [!NOTE]
> Buildpacks commands apply to both herokuish and CNB-based builds
```
buildpacks:add [--index 1] <app> <buildpack> # Add new app buildpack while inserting into list of buildpacks if necessary
buildpacks:clear <app> # Clear all buildpacks set on the app
buildpacks:list <app> # List all buildpacks for an app
buildpacks:remove <app> <buildpack> # Remove a buildpack set on the app
buildpacks:report [<app>] [<flag>] # Displays a buildpack report for one or more apps
buildpacks:set [--index 1] <app> <buildpack> # Set new app buildpack at a given position defaulting to the first buildpack if no index is specified
buildpacks:set --replace <app> <buildpack> [<buildpack> ...] # Replace the entire ordered buildpack list with the specified buildpacks
```
## Usage
### Listing Buildpacks in Use
The `buildpacks:list` command can be used to show buildpacks that have been set for an app. This will omit any auto-detected buildpacks.
```shell
# running for an app with no buildpacks specified
dokku buildpacks:list node-js-app
```
```
-----> test buildpack urls
```
```shell
# running for an app with two buildpacks specified
dokku buildpacks:list node-js-app
```
```
-----> test buildpack urls
https://github.com/heroku/heroku-buildpack-python.git
https://github.com/heroku/heroku-buildpack-nodejs.git
```
### Adding custom buildpacks
> Please check the documentation for your particular buildpack as you may need to include configuration files (such as a Procfile) in your project root.
To add a custom buildpack, use the `buildpacks:add` command:
```shell
dokku buildpacks:add node-js-app https://github.com/heroku/heroku-buildpack-nodejs.git
```
When no buildpacks are currently specified, the specified buildpack will be the only one executed for detection and compilation.
Multiple buildpacks may be specified by using the `buildpacks:add` command multiple times.
```shell
dokku buildpacks:add node-js-app https://github.com/heroku/heroku-buildpack-ruby.git
dokku buildpacks:add node-js-app https://github.com/heroku/heroku-buildpack-nodejs.git
```
Buildpacks are executed in order, may be inserted at a specified index via the `--index` flag. This flag is specified starting at a 1-index value.
```shell
# will add the golang buildpack at the second position, bumping all proceeding ones by 1 position
dokku buildpacks:add --index 2 node-js-app https://github.com/heroku/heroku-buildpack-golang.git
```
### Overwriting a buildpack position
In some cases, it may be necessary to swap out a given buildpack. Rather than needing to re-specify each buildpack, the `buildpacks:set` command can be used to overwrite a buildpack at a given position.
```shell
dokku buildpacks:set node-js-app https://github.com/heroku/heroku-buildpack-ruby.git
```
By default, this will overwrite the _first_ buildpack specified. To specify an index, the `--index` flag may be used. This flag is specified starting at a 1-index value, and defaults to `1`.
```shell
# the following are equivalent commands
dokku buildpacks:set node-js-app https://github.com/heroku/heroku-buildpack-ruby.git
dokku buildpacks:set --index 1 node-js-app https://github.com/heroku/heroku-buildpack-ruby.git
```
If the index specified is larger than the number of buildpacks currently configured, the buildpack will be appended to the end of the list.
```shell
dokku buildpacks:set --index 99 node-js-app https://github.com/heroku/heroku-buildpack-ruby.git
```
### Replacing the entire buildpack list
To replace the complete ordered buildpack list in a single command, use the `--replace` flag. This is useful for tooling that needs to apply a full buildpack list atomically instead of running `buildpacks:clear` followed by multiple `buildpacks:add` calls.
```shell
dokku buildpacks:set --replace node-js-app https://github.com/heroku/heroku-buildpack-ruby.git https://github.com/heroku/heroku-buildpack-nodejs.git
```
The buildpacks are executed in the order they are specified, and the previous list is discarded. If any specified buildpack is invalid, the existing list is left unchanged.
A single buildpack may also be specified to replace the entire list with just that buildpack:
```shell
dokku buildpacks:set --replace node-js-app https://github.com/heroku/heroku-buildpack-ruby.git
```
> [!NOTE]
> The `--replace` flag cannot be combined with the `--index` flag. To remove all buildpacks, use the `buildpacks:clear` command instead of `--replace` with no buildpacks.
### Removing a buildpack
> At least one of a buildpack or index must be specified
A single buildpack can be removed by name via the `buildpacks:remove` command.
```shell
dokku buildpacks:remove node-js-app https://github.com/heroku/heroku-buildpack-ruby.git
```
Buildpacks can also be removed by index via the `--index` flag. This flag is specified starting at a 1-index value.
```shell
dokku buildpacks:remove node-js-app --index 1
```
### Clearing all buildpacks
> This does not affect automatically detected buildpacks, nor does it impact any specified `BUILDPACK_URL` environment variable.
The `buildpacks:clear` command can be used to clear all configured buildpacks for a specified app.
```shell
dokku buildpacks:clear node-js-app
```
### Using a specific buildpack version
> Always remember to pin your buildpack versions when using the multi-buildpacks method, or you may find deploys changing your deployed environment.
By default, builders will pin their vendored buildpacks, resulting in a consistent build result for your application. There may be occasions where the pinned version results in a broken deploy, or does not have a particular feature that is required to build your project. To use a more recent version of a given buildpack, the buildpack may be specified _without_ a Git commit SHA like so:
```shell
# using the latest nodejs buildpack
dokku buildpacks:set node-js-app https://github.com/heroku/heroku-buildpack-nodejs
```
This will use the latest commit on the `master` branch of the specified buildpack. To pin to a newer version of a buildpack, a sha may also be specified by using the form `REPOSITORY_URL#COMMIT_SHA`, where `COMMIT_SHA` is any tree-ish git object - usually a git tag.
```shell
# using v87 of the nodejs buildpack
dokku buildpacks:set node-js-app https://github.com/heroku/heroku-buildpack-nodejs#v87
```
### Specifying buildpacks via app.json
Buildpacks can also be specified in the `app.json` file at the root of your repository:
```json
{
"buildpacks": [
{
"url": "heroku/python"
}
]
}
```
Buildpacks configured via `buildpacks:add` or `buildpacks:set` commands take precedence over those specified in `app.json`. If no buildpacks are configured via commands and `app.json` contains a `buildpacks` entry, those buildpacks will be used.
Shorthand buildpack references (e.g., `heroku/python`) are expanded to full GitHub URLs automatically.
### Displaying buildpack reports for an app
You can get a report about the app's buildpacks status using the `buildpacks:report` command:
```shell
dokku buildpacks:report
```
```
=====> node-js-app buildpacks information
Buildpacks computed stack: gliderlabs/herokuish:v0.7.0-22
Buildpacks global stack: gliderlabs/herokuish:latest-24
Buildpacks list: https://github.com/heroku/heroku-buildpack-nodejs.git
Buildpacks stack: gliderlabs/herokuish:v0.7.0-20
=====> python-sample buildpacks information
Buildpacks computed stack: gliderlabs/herokuish:latest-24
Buildpacks global stack: gliderlabs/herokuish:latest-24
Buildpacks list: https://github.com/heroku/heroku-buildpack-nodejs.git,https://github.com/heroku/heroku-buildpack-python.git
Buildpacks stack:
=====> ruby-sample buildpacks information
Buildpacks computed stack: gliderlabs/herokuish:latest-24
Buildpacks global stack: gliderlabs/herokuish:latest-24
Buildpacks list:
Buildpacks stack:
```
You can run the command for a specific app also.
```shell
dokku buildpacks:report node-js-app
```
```
=====> node-js-app buildpacks information
Buildpacks list: https://github.com/heroku/heroku-buildpack-nodejs.git
```
You can pass flags which will output only the value of the specific information you want. For example:
```shell
dokku buildpacks:report node-js-app --buildpacks-list
```
## Properties
### Settable properties
These properties are managed via `buildpacks:set-property` (the legacy command name for this plugin).
> [!NOTE]
> The `Report flags` column lists the CLI argument names accepted by `buildpacks:report`. The JSON keys emitted by `buildpacks:report --format json` are the same names with the leading `--buildpacks-` stripped (e.g. `stack`, `global-stack`, `computed-stack`). Legacy keys with the `buildpacks-` prefix are also emitted during the 0.38.x deprecation window and will be removed in a future major release.
| Property | Scope | Default | Report flags | Description |
|---|---|---|---|---|
| `stack` | app + global | none | `--buildpacks-stack`, `--buildpacks-global-stack`, `--buildpacks-computed-stack` | Herokuish stack image used to compile the app (e.g. `heroku/heroku:24`) |

View File

@@ -14,8 +14,8 @@ buildpacks:set-property [--global|<app>] <key> <value> # Set or clear a buildpa
Cloud Native Buildpacks are an evolution over the Buildpacks technology provided by the Herokuish builder. See the [herokuish buildpacks documentation](/docs/deployment/builders/herokuish-buildpacks.md) for more information on how to clear buildpack build cache for an application.
> [!WARNING]
> This functionality uses the `pack` cli from the [Cloud Native Buildpacks](https://buildpacks.io) project to build apps. As the integration is experimental in Dokku, it is likely to change over time.
> [!NOTE]
> This functionality uses the `pack` cli from the [Cloud Native Buildpacks](https://buildpacks.io) project to build apps.
## Usage
@@ -27,7 +27,7 @@ Builds will proceed with the `pack` cli for the app from then on.
### Caveats
As this functionality is highly experimental, there are a number of caveats. Please note that not all issues are listed below.
While pack is well-supported in Dokku, there are a number of caveats. Please note that not all issues are listed below.
- Specifying specific buildpacks is not currently possible.
- A future release will add support for specifying buildpacks via the `buildpacks` plugin.
@@ -41,16 +41,7 @@ As this functionality is highly experimental, there are a number of caveats. Ple
### Detection
This builder will be auto-detected in either the following cases:
- The `DOKKU_CNB_EXPERIMENTAL` app environment variable is set to `1`.
```shell
dokku config:set --no-restart node-js-app DOKKU_CNB_EXPERIMENTAL=1
```
- A `project.toml` file exists in the root of the app repository.
- This file is consumed by `pack-cli` and used to describe how the app is built.
This builder will be auto-detected if a `project.toml` file exists in the root of the app repository. This file is consumed by `pack-cli` and used to describe how the app is built.
The builder can also be specified via the `builder:set` command:
@@ -107,18 +98,20 @@ dokku builder-pack:report
```
=====> node-js-app builder-pack information
Builder pack computed projecttoml path: project2.toml
Builder pack global projecttoml path: project.toml
Builder pack global projecttoml path:
Builder pack projecttoml path: project2.toml
=====> python-sample builder-pack information
Builder pack computed projecttoml path: project.toml
Builder pack global projecttoml path: project.toml
Builder pack global projecttoml path:
Builder pack projecttoml path:
=====> ruby-sample builder-pack information
Builder pack computed projecttoml path: project.toml
Builder pack global projecttoml path: project.json
Builder pack global projecttoml path:
Builder pack projecttoml path:
```
The `projecttoml-path` and `global-projecttoml-path` keys hold the raw per-app and global value respectively, and are empty when nothing has been set. The `computed-projecttoml-path` key holds the effective value used at build time, falling back to the global value (where one has been set) and then to the built-in default of `project.toml`.
You can run the command for a specific app also.
```shell
@@ -128,7 +121,7 @@ dokku builder-pack:report node-js-app
```
=====> node-js-app builder-pack information
Builder pack computed projecttoml path: project2.toml
Builder pack global projecttoml path: project.toml
Builder pack global projecttoml path:
Builder pack projecttoml path: project2.toml
```
@@ -174,3 +167,11 @@ dokku buildpacks:set-property --global stack
### Specifying commands via Procfile
See the [Procfile documentation](/docs/processes/process-management.md#procfile) for more information on how to specify different processes for your app.
## Properties
### Settable properties
| Property | Scope | Default | Report flags | Description |
|---|---|---|---|---|
| `projecttoml-path` | app + global | `project.toml` | `--builder-pack-projecttoml-path`, `--builder-pack-global-projecttoml-path`, `--builder-pack-computed-projecttoml-path` | Path within the app to the CNB `project.toml` manifest, relative to the build root |

View File

@@ -82,18 +82,20 @@ dokku builder-dockerfile:report
```
=====> node-js-app builder-dockerfile information
Builder dockerfile computed dockerfile path: Dockerfile2
Builder dockerfile global dockerfile path: Dockerfile
Builder dockerfile global dockerfile path:
Builder dockerfile dockerfile path: Dockerfile2
=====> python-sample builder-dockerfile information
Builder dockerfile computed dockerfile path: Dockerfile
Builder dockerfile global dockerfile path: Dockerfile
Builder dockerfile global dockerfile path:
Builder dockerfile dockerfile path:
=====> ruby-sample builder-dockerfile information
Builder dockerfile computed dockerfile path: Dockerfile
Builder dockerfile global dockerfile path: Dockerfile
Builder dockerfile global dockerfile path:
Builder dockerfile dockerfile path:
```
The `dockerfile-path` and `global-dockerfile-path` keys hold the raw per-app and global value respectively, and are empty when nothing has been set. The `computed-dockerfile-path` key holds the effective value used at deploy time, falling back to the global value (where one has been set) and then to the built-in default of `Dockerfile`.
You can run the command for a specific app also.
```shell
@@ -103,7 +105,7 @@ dokku builder-dockerfile:report node-js-app
```
=====> node-js-app builder-dockerfile information
Builder dockerfile computed dockerfile path: Dockerfile2
Builder dockerfile global dockerfile path: Dockerfile
Builder dockerfile global dockerfile path:
Builder dockerfile dockerfile path: Dockerfile2
```
@@ -185,7 +187,7 @@ You would adjust the cache directory for whatever application cache you have, e.
### Customizing the run command
By default no arguments are passed to `docker run` when deploying the container and the `CMD` or `ENTRYPOINT` defined in the `Dockerfile` are executed. You can take advantage of docker ability of overriding the `CMD` or passing parameters to your `ENTRYPOINT` setting `$DOKKU_DOCKERFILE_START_CMD`. Let's say for example you are deploying a base Node.js image, with the following `ENTRYPOINT`:
By default no arguments are passed to `docker run` when deploying the container and the `CMD` or `ENTRYPOINT` defined in the `Dockerfile` are executed. You can take advantage of docker's ability to override the `CMD` or pass parameters to your `ENTRYPOINT` by setting the `dockerfile-start-cmd` property on the `ps` plugin. Let's say for example you are deploying a base Node.js image, with the following `ENTRYPOINT`:
```Dockerfile
ENTRYPOINT ["node"]
@@ -194,12 +196,14 @@ ENTRYPOINT ["node"]
You can do:
```shell
dokku config:set node-js-app DOKKU_DOCKERFILE_START_CMD="--harmony server.js"
dokku ps:set node-js-app dockerfile-start-cmd "--harmony server.js"
```
To tell Docker what to run.
To tell Docker what to run. Pass an empty value to clear the override:
Setting `$DOKKU_DOCKERFILE_CACHE_BUILD` to `true` or `false` will enable or disable Docker's image layer cache. Lastly, for more granular build control, you may also pass any `docker build` option to `docker`, by setting `$DOKKU_DOCKER_BUILD_OPTS`.
```shell
dokku ps:set node-js-app dockerfile-start-cmd
```
### Procfiles and multiple processes
@@ -211,3 +215,11 @@ See the [Procfile documentation](/docs/processes/process-management.md#procfile)
### Exposed ports
See the [port management documentation](/docs/networking/port-management.md) for more information on how Dokku exposes ports for applications and how you can configure these for your app.
## Properties
### Settable properties
| Property | Scope | Default | Report flags | Description |
|---|---|---|---|---|
| `dockerfile-path` | app + global | `Dockerfile` | `--builder-dockerfile-dockerfile-path`, `--builder-dockerfile-global-dockerfile-path`, `--builder-dockerfile-computed-dockerfile-path` | Path within the app to the Dockerfile used by the dockerfile builder |

View File

@@ -4,12 +4,6 @@
> Subcommands new as of 0.15.0
```
buildpacks:add [--index 1] <app> <buildpack> # Add new app buildpack while inserting into list of buildpacks if necessary
buildpacks:clear <app> # Clear all buildpacks set on the app
buildpacks:list <app> # List all buildpacks for an app
buildpacks:remove <app> <buildpack> # Remove a buildpack set on the app
buildpacks:report [<app>] [<flag>] # Displays a buildpack report for one or more apps
buildpacks:set [--index 1] <app> <buildpack> # Set new app buildpack at a given position defaulting to the first buildpack if no index is specified
buildpacks:set-property [--global|<app>] <key> <value> # Set or clear a buildpacks property for an app
```
@@ -49,104 +43,6 @@ dokku builder:set node-js-app selected herokuish
> Dokku will only select the `dockerfile` builder if both the `herokuish` and `pack` builders are not detected and a Dockerfile exists. See the [dockerfile builder documentation](/docs/deployment/builders/dockerfiles.md) for more information on how that builder functions.
### Listing Buildpacks in Use
The `buildpacks:list` command can be used to show buildpacks that have been set for an app. This will omit any auto-detected buildpacks.
```shell
# running for an app with no buildpacks specified
dokku buildpacks:list node-js-app
```
```
-----> test buildpack urls
```
```shell
# running for an app with two buildpacks specified
dokku buildpacks:list node-js-app
```
```
-----> test buildpack urls
https://github.com/heroku/heroku-buildpack-python.git
https://github.com/heroku/heroku-buildpack-nodejs.git
```
### Adding custom buildpacks
> Please check the documentation for your particular buildpack as you may need to include configuration files (such as a Procfile) in your project root.
To add a custom buildpack, use the `buildpacks:add` command:
```shell
dokku buildpacks:add node-js-app https://github.com/heroku/heroku-buildpack-nodejs.git
```
When no buildpacks are currently specified, the specified buildpack will be the only one executed for detection and compilation.
Multiple buildpacks may be specified by using the `buildpacks:add` command multiple times.
```shell
dokku buildpacks:add node-js-app https://github.com/heroku/heroku-buildpack-ruby.git
dokku buildpacks:add node-js-app https://github.com/heroku/heroku-buildpack-nodejs.git
```
Buildpacks are executed in order, may be inserted at a specified index via the `--index` flag. This flag is specified starting at a 1-index value.
```shell
# will add the golang buildpack at the second position, bumping all proceeding ones by 1 position
dokku buildpacks:add --index 2 node-js-app https://github.com/heroku/heroku-buildpack-golang.git
```
### Overwriting a buildpack position
In some cases, it may be necessary to swap out a given buildpack. Rather than needing to re-specify each buildpack, the `buildpacks:set` command can be used to overwrite a buildpack at a given position.
```shell
dokku buildpacks:set node-js-app https://github.com/heroku/heroku-buildpack-ruby.git
```
By default, this will overwrite the _first_ buildpack specified. To specify an index, the `--index` flag may be used. This flag is specified starting at a 1-index value, and defaults to `1`.
```shell
# the following are equivalent commands
dokku buildpacks:set node-js-app https://github.com/heroku/heroku-buildpack-ruby.git
dokku buildpacks:set --index 1 node-js-app https://github.com/heroku/heroku-buildpack-ruby.git
```
If the index specified is larger than the number of buildpacks currently configured, the buildpack will be appended to the end of the list.
```shell
dokku buildpacks:set --index 99 node-js-app https://github.com/heroku/heroku-buildpack-ruby.git
```
### Removing a buildpack
> At least one of a buildpack or index must be specified
A single buildpack can be removed by name via the `buildpacks:remove` command.
```shell
dokku buildpacks:remove node-js-app https://github.com/heroku/heroku-buildpack-ruby.git
```
Buildpacks can also be removed by index via the `--index` flag. This flag is specified starting at a 1-index value.
```shell
dokku buildpacks:remove node-js-app --index 1
```
### Clearing all buildpacks
> This does not affect automatically detected buildpacks, nor does it impact any specified `BUILDPACK_URL` environment variable.
The `buildpacks:clear` command can be used to clear all configured buildpacks for a specified app.
```shell
dokku buildpacks:clear node-js-app
```
### Customizing the Buildpack stack builder
> [!IMPORTANT]
@@ -207,49 +103,6 @@ The default value may be set by passing an empty value for the option.
dokku builder-herokuish:set --global allowed
```
### Displaying buildpack reports for an app
You can get a report about the app's buildpacks status using the `buildpacks:report` command:
```shell
dokku buildpacks:report
```
```
=====> node-js-app buildpacks information
Buildpacks computed stack: gliderlabs/herokuish:v0.7.0-22
Buildpacks global stack: gliderlabs/herokuish:latest-24
Buildpacks list: https://github.com/heroku/heroku-buildpack-nodejs.git
Buildpacks stack: gliderlabs/herokuish:v0.7.0-20
=====> python-sample buildpacks information
Buildpacks computed stack: gliderlabs/herokuish:latest-24
Buildpacks global stack: gliderlabs/herokuish:latest-24
Buildpacks list: https://github.com/heroku/heroku-buildpack-nodejs.git,https://github.com/heroku/heroku-buildpack-python.git
Buildpacks stack:
=====> ruby-sample buildpacks information
Buildpacks computed stack: gliderlabs/herokuish:latest-24
Buildpacks global stack: gliderlabs/herokuish:latest-24
Buildpacks list:
Buildpacks stack:
```
You can run the command for a specific app also.
```shell
dokku buildpacks:report node-js-app
```
```
=====> node-js-app buildpacks information
Buildpacks list: https://github.com/heroku/heroku-buildpack-nodejs.git
```
You can pass flags which will output only the value of the specific information you want. For example:
```shell
dokku buildpacks:report node-js-app --buildpacks-list
```
### Displaying builder-herokuish reports for an app
> [!IMPORTANT]
@@ -264,18 +117,20 @@ dokku builder-herokuish:report
```
=====> node-js-app builder-herokuish information
Builder herokuish computed allowed: false
Builder herokuish global allowed: true
Builder herokuish global allowed:
Builder herokuish allowed: false
=====> python-sample builder-herokuish information
Builder herokuish computed allowed: true
Builder herokuish global allowed: true
Builder herokuish global allowed:
Builder herokuish allowed:
=====> ruby-sample builder-herokuish information
Builder herokuish computed allowed: true
Builder herokuish global allowed: true
Builder herokuish global allowed:
Builder herokuish allowed:
```
The `allowed` and `global-allowed` keys hold the raw per-app and global value respectively, and are empty when nothing has been set. The `computed-allowed` key holds the effective value used at build time, falling back to the global value (where one has been set) and then to the built-in default (`true` on amd64, `false` otherwise).
You can run the command for a specific app also.
```shell
@@ -285,7 +140,7 @@ dokku builder-herokuish:report node-js-app
```
=====> node-js-app builder-herokuish information
Builder herokuish computed allowed: false
Builder herokuish global allowed: true
Builder herokuish global allowed:
Builder herokuish allowed: false
```
@@ -309,24 +164,6 @@ If an application was previously deployed via Dockerfile, the following commands
dokku ports:clear node-js-app
```
### Using a specific buildpack version
> Always remember to pin your buildpack versions when using the multi-buildpacks method, or you may find deploys changing your deployed environment.
By default, Dokku uses the [gliderlabs/herokuish](https://github.com/gliderlabs/herokuish/) project, which pins all of it's vendored buildpacks. There may be occasions where the pinned version results in a broken deploy, or does not have a particular feature that is required to build your project. To use a more recent version of a given buildpack, the buildpack may be specified _without_ a Git commit SHA like so:
```shell
# using the latest nodejs buildpack
dokku buildpacks:set node-js-app https://github.com/heroku/heroku-buildpack-nodejs
```
This will use the latest commit on the `master` branch of the specified buildpack. To pin to a newer version of a buildpack, a sha may also be specified by using the form `REPOSITORY_URL#COMMIT_SHA`, where `COMMIT_SHA` is any tree-ish git object - usually a git tag.
```shell
# using v87 of the nodejs buildpack
dokku buildpacks:set node-js-app https://github.com/heroku/heroku-buildpack-nodejs#v87
```
### `curl` build timeouts
Certain buildpacks may time out in retrieving dependencies via `curl`. This can happen when your network connection is poor or if there is significant network congestion. You may see a message similar to `gzip: stdin: unexpected end of file` after a `curl` command.
@@ -345,3 +182,40 @@ See the [repository management documentation](/docs/advanced-usage/repository-ma
### Specifying commands via Procfile
See the [Procfile documentation](/docs/processes/process-management.md#procfile) for more information on how to specify different processes for your app.
### Listing Buildpacks in Use
See the [buildpack management documentation](/docs/deployment/builders/buildpack-management.md#listing-buildpacks-in-use) for more information on how to list buildpacks in use.
### Adding custom buildpacks
See the [buildpack management documentation](/docs/deployment/builders/buildpack-management.md#adding-custom-buildpacks) for more information on how to add custom buildpacks.
### Overwriting a buildpack position
See the [buildpack management documentation](/docs/deployment/builders/buildpack-management.md#overwriting-a-buildpack-position) for more information on how to overwrite a buildpack position.
### Removing a buildpack
See the [buildpack management documentation](/docs/deployment/builders/buildpack-management.md#removing-a-buildpack) for more information on how to remove a buildpack.
### Clearing all buildpacks
See the [buildpack management documentation](/docs/deployment/builders/buildpack-management.md#clearing-all-buildpacks) for more information on how to clear all buildpacks.
### Using a specific buildpack version
See the [buildpack management documentation](/docs/deployment/builders/buildpack-management.md#using-a-specific-buildpack-version) for more information on how to using a specific buildpack version
### Displaying buildpack reports for an app
See the [buildpack management documentation](/docs/deployment/builders/buildpack-management.md#displaying-buildpack-reports-for-an-app) for more information on how to display buildpack reports for an app.
## Properties
### Settable properties
| Property | Scope | Default | Report flags | Description |
|---|---|---|---|---|
| `allowed` | app + global | `true` | `--builder-herokuish-allowed`, `--builder-herokuish-global-allowed`, `--builder-herokuish-computed-allowed` | When `false`, the herokuish builder is skipped during builder detection for this app |

View File

@@ -84,18 +84,20 @@ dokku builder-lambda:report
```
=====> node-js-app builder-lambda information
Builder lambda computed lambdayml path: lambda2.yml
Builder lambda global lambdayml path: lambda.yml
Builder lambda global lambdayml path:
Builder lambda lambdayml path: lambda2.yml
=====> python-sample builder-lambda information
Builder lambda computed lambdayml path: lambda.yml
Builder lambda global lambdayml path: lambda.yml
Builder lambda global lambdayml path:
Builder lambda lambdayml path:
=====> ruby-sample builder-lambda information
Builder lambda computed lambdayml path: lambda.yml
Builder lambda global lambdayml path: lambda.yml
Builder lambda global lambdayml path:
Builder lambda lambdayml path:
```
The `lambdayml-path` and `global-lambdayml-path` keys hold the raw per-app and global value respectively, and are empty when nothing has been set. The `computed-lambdayml-path` key holds the effective value used at build time, falling back to the global value (where one has been set) and then to the built-in default of `lambda.yml`.
You can run the command for a specific app also.
```shell
@@ -105,7 +107,7 @@ dokku builder-lambda:report node-js-app
```
=====> node-js-app builder-lambda information
Builder lambda computed lambdayml path: lambda2.yml
Builder lambda global lambdayml path: lambda.yml
Builder lambda global lambdayml path:
Builder lambda lambdayml path: lambda2.yml
```
@@ -118,3 +120,11 @@ dokku builder-lambda:report node-js-app --builder-lambda-lambdayml-path
```
lambda2.yml
```
## Properties
### Settable properties
| Property | Scope | Default | Report flags | Description |
|---|---|---|---|---|
| `lambdayml-path` | app + global | `lambda.yml` | `--builder-lambda-lambdayml-path`, `--builder-lambda-global-lambdayml-path`, `--builder-lambda-computed-lambdayml-path` | Path within the app to the `lambda.yml` manifest used by the lambda builder |

View File

@@ -80,28 +80,10 @@ dokku builder-nixpacks:set --global nixpackstoml-path
### Disabling cache
Cache is enabled by default, but can be disabled by setting the `no-cache` property to `true`:
Disable cache using the [docker-options] plugin:
```shell
dokku builder-nixpacks:set node-js-app no-cache true
```
The default value may be set by passing an empty value for the option:
```shell
dokku builder-nixpacks:set node-js-app no-cache
```
The `no-cache` property can also be set globally. The global default is `false`, and the global value is used when no app-specific value is set.
```shell
dokku builder-nixpacks:set --global no-cache true
```
The default value may be set by passing an empty value for the option.
```shell
dokku builder-nixpacks:set --global no-cache
dokku docker-options:add node-js-app build "--no-cache"
```
### Displaying builder-nixpacks reports for an app
@@ -115,27 +97,20 @@ dokku builder-nixpacks:report
```
=====> node-js-app builder-nixpacks information
Builder-nixpacks computed nixpackstoml path: nixpacks2.toml
Builder-nixpacks global nixpackstoml path: nixpacks.toml
Builder-nixpacks global nixpackstoml path:
Builder-nixpacks nixpackstoml path: nixpacks2.toml
Builder-nixpacks computed no cache: true
Builder-nixpacks global no cache: false
Builder-nixpacks no cache: true
=====> python-sample builder-nixpacks information
Builder-nixpacks computed nixpackstoml path: nixpacks.toml
Builder-nixpacks global nixpackstoml path: nixpacks.toml
Builder-nixpacks global nixpackstoml path:
Builder-nixpacks nixpackstoml path:
Builder-nixpacks computed no cache: false
Builder-nixpacks global no cache: false
Builder-nixpacks no cache:
=====> ruby-sample builder-nixpacks information
Builder-nixpacks computed nixpackstoml path: nixpacks.toml
Builder-nixpacks global nixpackstoml path: nixpacks.toml
Builder-nixpacks global nixpackstoml path:
Builder-nixpacks nixpackstoml path:
Builder-nixpacks computed no cache: false
Builder-nixpacks global no cache: false
Builder-nixpacks no cache:
```
The `nixpackstoml-path` and `global-nixpackstoml-path` keys hold the raw per-app and global value respectively, and are empty when nothing has been set. The `computed-nixpackstoml-path` key holds the effective value used at build time, falling back to the global value (where one has been set) and then to the built-in default of `nixpacks.toml`.
You can run the command for a specific app also.
```shell
@@ -145,19 +120,24 @@ dokku builder-nixpacks:report node-js-app
```
=====> node-js-app builder-nixpacks information
Builder-nixpacks computed nixpackstoml path: nixpacks2.toml
Builder-nixpacks global nixpackstoml path: nixpacks.toml
Builder-nixpacks global nixpackstoml path:
Builder-nixpacks nixpackstoml path: nixpacks2.toml
Builder-nixpacks computed no cache: true
Builder-nixpacks global no cache: false
Builder-nixpacks no cache: true
```
You can pass flags which will output only the value of the specific information you want. For example:
```shell
dokku builder-nixpacks:report node-js-app --builder-nixpacks-no-cache
dokku builder-nixpacks:report node-js-app --builder-nixpacks-nixpackstoml-path
```
```
true
nixpacks2.toml
```
## Properties
### Settable properties
| Property | Scope | Default | Report flags | Description |
|---|---|---|---|---|
| `nixpackstoml-path` | app + global | `nixpacks.toml` | `--builder-nixpacks-nixpackstoml-path`, `--builder-nixpacks-global-nixpackstoml-path`, `--builder-nixpacks-computed-nixpackstoml-path` | Path within the app to the `nixpacks.toml` manifest used by the nixpacks builder |

View File

@@ -0,0 +1,152 @@
# Railpack
> [!IMPORTANT]
> New as of 0.37.0
The `railpack` builder builds apps via [Railpack](https://railpack.com/), a buildpack alternative.
## Usage
### Requirements
Before using Railpacks, the following steps must be taken:
- Install the `railpack` cli: The `railpack` cli tool is not included by default with Dokku or as a dependency. It must also be installed as shown on [this page](https://railpack.com/installation).
- Create a `buildkit` builder: Railpack uses buildkit.
```shell
docker run --rm --privileged -d --name buildkit moby/buildkit
```
- Set the buildkit builder: Update the `/etc/default/dokku` file to set `BUILDKIT_HOST`:
```shell
touch /etc/default/dokku
echo "export BUILDKIT_HOST='docker-container://buildkit'" >> /etc/default/dokku
```
### Detection
This builder will be auto-detected in the following case:
- A `railpack.json` exists in the root of the app repository.
The builder may also be selected via the `builder:set` command
```shell
dokku builder:set node-js-app selected railpack
```
### Supported languages
See the [upstream railpack documentation](https://railpack.com/) for further information on what languages and frameworks are supported.
### Build-time configuration variables
For security reasons - and as per [Docker recommendations](https://github.com/docker/docker/issues/13490) - railpack-based deploys have variables available only during runtime.
For users that require customization in the `build` phase, you may use build arguments via the [docker-options plugin](/docs/advanced-usage/docker-options.md). All environment variables set by the `config` plugin are automatically exported within the railpack build environment, and thus `--env` only requires setting a key without a value.
```shell
dokku docker-options:add node-js-app build '--env NODE_ENV'
```
Alternatively, a full value may be provided in the form of `--env KEY=VALUE`:
```shell
dokku docker-options:add node-js-app build '--env NODE_ENV=production'
```
### Changing the `railpack.json` location
The `railpack.json` is expected to be found in a specific directory, depending on the deploy approach:
- The `WORKDIR` of the Docker image for deploys resulting from `git:from-image` and `git:load-image` commands.
- The root of the source code tree for all other deploys (git push, `git:from-archive`, `git:sync`).
Sometimes it may be desirable to set a different path for a given app, e.g. when deploying from a monorepo. This can be done via the `railpackjson-path` property:
```shell
dokku builder-railpack:set node-js-app railpackjson-path .dokku/railpack.json
```
The value is the path to the desired file *relative* to the base search directory, and will never be treated as absolute paths in any context. If that file does not exist within the repository, the build will fail.
The default value may be set by passing an empty value for the option:
```shell
dokku builder-railpack:set node-js-app railpackjson-path
```
The `railpackjson-path` property can also be set globally. The global default is `railpack.json`, and the global value is used when no app-specific value is set.
```shell
dokku builder-railpack:set --global railpackjson-path railpack2.json
```
The default value may be set by passing an empty value for the option.
```shell
dokku builder-railpack:set --global railpackjson-path
```
### Disabling cache
Disable cache using the [docker-options] plugin:
```shell
dokku docker-options:add node-js-app build "--no-cache"
```
### Displaying builder-railpack reports for an app
You can get a report about the app's storage status using the `builder-railpack:report` command:
```shell
dokku builder-railpack:report
```
```
=====> node-js-app builder-railpack information
Builder-railpack computed railpackjson path: railpack2.json
Builder-railpack global railpackjson path:
Builder-railpack railpackjson path: railpack2.json
=====> python-sample builder-railpack information
Builder-railpack computed railpackjson path: railpack.json
Builder-railpack global railpackjson path:
Builder-railpack railpackjson path:
=====> ruby-sample builder-railpack information
Builder-railpack computed railpackjson path: railpack.json
Builder-railpack global railpackjson path:
Builder-railpack railpackjson path:
```
The `railpackjson-path` and `global-railpackjson-path` keys hold the raw per-app and global value respectively, and are empty when nothing has been set. The `computed-railpackjson-path` key holds the effective value used at build time, falling back to the global value (where one has been set) and then to the built-in default of `railpack.json`.
You can run the command for a specific app also.
```shell
dokku builder-railpack:report node-js-app
```
```
=====> node-js-app builder-railpack information
Builder-railpack computed railpackjson path: railpack2.json
Builder-railpack global railpackjson path:
Builder-railpack railpackjson path: railpack2.json
```
You can pass flags which will output only the value of the specific information you want. For example:
```shell
dokku builder-railpack:report node-js-app --builder-railpack-railpackjson-path
```
```
railpack2.json
```
## Properties
### Settable properties
| Property | Scope | Default | Report flags | Description |
|---|---|---|---|---|
| `railpackjson-path` | app + global | `railpack.json` | `--builder-railpack-railpackjson-path`, `--builder-railpack-global-railpackjson-path`, `--builder-railpack-computed-railpackjson-path` | Path within the app to the `railpack.json` manifest used by the railpack builder |

View File

@@ -11,6 +11,7 @@ Assuming a Docker image can be run as a CI task with environment variables injec
- [gitlab-ci](https://about.gitlab.com/stages-devops-lifecycle/continuous-integration/)
- [semaphoreci](https://semaphoreci.com/)
- [travisci](https://travis-ci.com/)
- [woodpecker ci](https://woodpecker-ci.org/)
## Simple Usage

View File

@@ -16,7 +16,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: Cloning repo
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0

View File

@@ -0,0 +1,29 @@
# Woodpecker CI
[Woodpecker CI](https://woodpecker-ci.org/docs/intro) can be used to automatically deploy a Dokku application via the official [dokku/ci-docker-image](https://github.com/dokku/ci-docker-image). The simplest example is as follows:
```yaml
when:
- event: push
branch: main
clone:
git:
image: woodpeckerci/plugin-git
settings:
partial: false
depth: 0
steps:
- name: deploy
image: dokku/ci-docker-image
environment:
GIT_REMOTE_URL: ssh://dokku@dokku.me:22/appname
SSH_PRIVATE_KEY:
from_secret: DOKKU_ME_SSH_DEPLOY_KEY
commands:
- dokku-deploy
```
- The standard `clone` stage is replaced with one that performs a complete clone of the repository (the default is a shallow clone, which dokku would reject).
- A `GIT_REMOTE_URL` and a `SSH_PRIVATE_KEY` (with help of the `from_secret` directive) suffice to carry out a deployment.

View File

@@ -124,6 +124,21 @@ The `/etc/vector` mount includes the `vector.json` configuration file, but also
The final volume mount - `/var/log/dokku/apps` - may be used for users that wish to ship logs to a file on disk that may be later logrotated. This directory is owned by the `dokku` user and group, with permissions set to `0755`. At this time, log-rotation is not configured for this directory.
Operators using a `file` sink are encouraged to configure rotation themselves, as Dokku will not truncate these files. A minimal `/etc/logrotate.d/dokku-app-logs` might look like:
```
/var/log/dokku/apps/*/*.log {
daily
rotate 14
compress
missingok
notifempty
copytruncate
}
```
`copytruncate` is used because Vector holds the file open between writes.
#### Stopping the Vector container
Vector may be stopped via the `logs:vector-stop` command.
@@ -178,6 +193,39 @@ Setting this to an empty string will reset the version to the version currently
dokku logs:set --global vector-image
```
#### Attaching Vector to additional Docker networks
By default, the Vector container runs with `network_mode: bridge` and can only reach app containers that are also on the default bridge network. Apps deployed onto a per-app network or a custom network - typically via `dokku network:set <app> initial-network <name>` - are not reachable from Vector over Docker's internal DNS, so sinks that need to talk to those apps directly (for example, an in-host log search service such as [Logpond](https://github.com/dokku/logpond)) would have to route traffic out through the external proxy.
The global `vector-networks` property accepts a comma-separated list of Docker networks for Vector to join.
```shell
dokku logs:set --global vector-networks dokku-logs
```
Multiple networks may be specified by separating them with a comma.
```shell
dokku logs:set --global vector-networks dokku-logs,observability
```
Setting this property **replaces** the default bridge attachment: the Vector container will be on the configured user-defined networks only, not the default Docker `bridge` network. Outbound traffic continues to work through the user-defined networks' NAT, so external sinks such as Datadog or hosted HTTP endpoints remain reachable.
Each network must already exist; setting a non-existent network or the reserved `bridge` value will fail. The list can be cleared by setting an empty value, which restores the default `network_mode: bridge` configuration.
```shell
dokku logs:set --global vector-networks
```
Network attachments are reconciled by `docker compose` on every `logs:vector-start`, so after changing the value the Vector container must be cycled.
```shell
dokku logs:vector-stop
dokku logs:vector-start
```
Once attached, an app on `dokku-logs` (for example via `dokku network:set node-js-app initial-network dokku-logs`) is reachable from Vector at `<app>.<process>:<port>` over the shared network without round-tripping through the external proxy.
#### Configuring a log sink
Vector uses the concept of log "sinks" to send logs to a given endpoint. Log sinks may be configured globally or on a per-app basis by specifying a `vector-sink` in DSN form with the `logs:set` command. Specifying a sink value will reload any running vector container.
@@ -208,6 +256,8 @@ As with app-specific sink settings, the global value may also be cleared by sett
dokku logs:set --global vector-sink
```
The generated vector configuration is also rewritten whenever an app is renamed, cloned or destroyed. A renamed app keeps shipping to its sink under the new name, a cloned app gets a source of its own for the sink it inherited, and a destroyed app's source and sink are removed rather than left pointing at an endpoint that was decommissioned with the app.
##### Log Sink DSN Format
The DSN form of a sink is as follows:
@@ -234,30 +284,100 @@ For some sinks - such as the `http` sink - it may be useful to use special chara
dokku logs:set test vector-sink "http://?uri=https%3A//loggerservice.com%3A1234/%3Ftoken%3Dabc1234%26type%3Dvector"
```
For kubernetes, it may be necessary to use template syntax - `{{ .parent.child }}` - in the sink configuration. Naively using brackets will fail due to the Helm chart install process assuming that the template should be interpreted at Helm install time vs by Vector itself. To avoid this, use `base64enc:` values (available only for top-level properties at this time). The following example shows how to use `{{ pod }}` as a value.
```shell
# encode the value with a Helm `print` statement wrapper
encoded="$(echo '{{ print "{{ pod }}" }}' | base64)"
# the value of encoded should be: e3sgcHJpbnQgInt7IHBvZCB9fSIgfX0K
# set the value
dokku logs:set test vector-sink "http://?process=base64enc%3A${encoded}"
```
This will transform the value to it's encoded form when configuring Vector sinks for Kubernetes.
Please read the [sink documentation](https://vector.dev/docs/reference/configuration/sinks/) for your sink of choice to configure the sink as desired.
#### Configuring a cron task log sink
Scheduled cron tasks run in one-off containers that carry the app's usual labels, so their output is already collected by the `vector-sink` configured for the app or globally. To send that output somewhere separate, set a `vector-cron-sink`.
```shell
dokku logs:set node-js-app vector-cron-sink "console://?encoding[codec]=text"
```
As with `vector-sink`, the value may be cleared by setting an empty value, and may also be set globally:
```shell
dokku logs:set --global vector-cron-sink "console://?encoding[codec]=text"
```
Setting a cron sink **moves** cron task output rather than copying it. Vector routes each log line to exactly one of the two sinks:
| Configuration | Where cron output goes | Where all other output goes |
|---|---|---|
| `vector-sink` only | `vector-sink` | `vector-sink` |
| `vector-cron-sink` only | `vector-cron-sink` | nowhere |
| both | `vector-cron-sink` | `vector-sink` |
If an app is already shipping to a metered service via `vector-sink`, adding a cron sink will stop cron output from arriving there.
Events on the cron branch have two extra fields added to them, so that they can be used in sink options that support templating:
- `dokku_app`: the name of the app the task belongs to
- `dokku_cron_id`: the cron task ID, as shown by `dokku cron:list`
> [!WARNING]
> Cron task containers are removed as soon as the task exits. Vector attaches to a container after it starts, so output from tasks that finish almost immediately - a bare `echo`, for instance - may be missed. Log shipping should not be relied on as the sole record that a task ran; use an external check for that.
##### Writing cron output to a file on disk
The `file` sink writes to a path within the vector container. The `/var/log/dokku/apps` directory is mounted into that container from the host at the same path, so it is the correct destination for output that should survive on the host.
```shell
dokku logs:set node-js-app vector-cron-sink "file://?path=/var/log/dokku/apps/node-js-app/cron.log&encoding[codec]=text"
```
Because `path` supports templating, `dokku_cron_id` can be used to give each task its own file:
```shell
dokku logs:set node-js-app vector-cron-sink "file://?path=/var/log/dokku/apps/node-js-app/cron-{{ dokku_cron_id }}.log&encoding[codec]=text"
```
Quoting the value is required, both for the `&` separators and for the spaces inside the template.
> [!WARNING]
> Vector drops any event whose templated `path` references a field it cannot resolve. Only `dokku_app` and `dokku_cron_id` are guaranteed to exist on cron events - referencing anything else risks silently discarding log lines.
Vector creates missing parent directories, and buffers writes before flushing. Set `idle_timeout_secs` to shorten that delay for infrequent tasks:
```shell
dokku logs:set node-js-app vector-cron-sink "file://?path=/var/log/dokku/apps/node-js-app/cron.log&encoding[codec]=text&idle_timeout_secs=5"
```
##### Configuring the app label
Logs shipped by vector include the label `com.dokku.app-name`, which is an alias for the app name. This can be changed via the `app-label-alias` logs property with the `logs:set` command. Specifying a new alias will reload any running vector container.
Dokku labels every app container with `com.dokku.app-name`, and events shipped by vector carry that label as the field `label."com.dokku.app-name"`. Some sinks cannot use a field named that way - Loki label names, for instance, may only contain letters, digits and underscores - so the field can be renamed on the way to the sink via the `app-label-alias` logs property. Specifying a new alias will reload any running vector container.
```shell
# setting the sink value in quotes is encouraged to avoid
# issues with ampersand encoding in shell commands
dokku logs:set node-js-app app-label-alias "app-name"
dokku logs:set node-js-app app-label-alias "app_name"
```
Events for `node-js-app` then carry `label.app_name` and no longer carry `label."com.dokku.app-name"`.
An alias may be removed by setting an empty value, which will also reload the running vector container.
```shell
dokku logs:set node-js-app app-label-alias
```
Only one alias may be specified on a per-app basis at a given time.
Only one alias may be specified on a per-app basis at a given time. Valid values start with a letter or number and may otherwise contain letters, numbers, underscores, periods and hyphens.
App label aliases can also be specified globally by specifying the `--global` flag to `logs:set` with no app name specified:
```shell
dokku logs:set --global app-label-alias "app-name"
dokku logs:set --global app-label-alias "app_name"
```
As with app-specific label alias settings, the global value may also be cleared by setting no value.
@@ -265,3 +385,23 @@ As with app-specific label alias settings, the global value may also be cleared
```shell
dokku logs:set --global app-label-alias
```
An app-specific value takes precedence over the global one, and is applied to that app's events whether they are shipped by the app's own `vector-sink` or by the global one.
The alias only changes the shipped event. Containers are always discovered by the `com.dokku.app-name` label, so changing this property never affects which logs are collected, and a change takes effect on the next vector reload without redeploying the app. Cron events are unaffected in another respect too: `dokku_app` is read from the container label before the rename, so it holds the app name regardless of the configured alias.
## Properties
### Settable properties
> [!NOTE]
> The `Report flags` column lists the CLI argument names accepted by `logs:report`. The JSON keys emitted by `logs:report --format json` are the same names with the leading `--logs-` stripped (e.g. `max-size`, `global-max-size`, `computed-max-size`). Legacy keys with the `logs-` prefix are also emitted during the 0.38.x deprecation window and will be removed in a future major release.
| Property | Scope | Default | Report flags | Description |
|---|---|---|---|---|
| `app-label-alias` | app + global | `com.dokku.app-name` | `--logs-app-label-alias`, `--logs-global-app-label-alias`, `--logs-computed-app-label-alias` | Field name the app name is shipped under, renamed from `com.dokku.app-name` on the event |
| `max-size` | app + global | `10m` | `--logs-max-size`, `--logs-global-max-size`, `--logs-computed-max-size` | Maximum size of an individual log file before rotation |
| `vector-image` | global only | _parsed from `plugins/logs/Dockerfile`_ | `--logs-global-vector-image`, `--logs-computed-vector-image` | Docker image used to run the vector log-shipper container |
| `vector-networks` | global only | none | `--logs-global-vector-networks`, `--logs-computed-vector-networks` | Comma-separated list of docker networks the vector container is attached to |
| `vector-cron-sink` | app + global | none | `--logs-vector-cron-sink`, `--logs-global-vector-cron-sink`, `--logs-computed-vector-cron-sink` | DSN-style sink configuration for scheduled cron task output; when set, cron output is routed here instead of to `vector-sink` |
| `vector-sink` | app + global | none | `--logs-vector-sink`, `--logs-global-vector-sink`, `--logs-computed-vector-sink` | DSN-style sink configuration for vector (e.g. `console://` or `loki://...`) |

View File

@@ -32,3 +32,29 @@ Finally, if the archive url is specified as `--`, the archive will be fetched fr
```shell
curl -sSL https://github.com/dokku/smoke-test-app/releases/download/2.0.0/smoke-test-app.tar | dokku git:from-archive node-js-app --
```
## Archive Safety
Archive contents are validated before extraction to prevent path traversal and symlink escape attacks. Archives containing absolute paths, parent directory traversal entries (`..`), or symlinks pointing outside the extraction directory are rejected.
The following limits can be configured via global git properties:
- `archive-max-size` - maximum archive size in bytes (default: `1073741824`, 1 GiB)
- `archive-max-files` - maximum number of entries in an archive (default: `10000`)
```shell
dokku git:set --global archive-max-size 2147483648
dokku git:set --global archive-max-files 20000
```
Unset a property to restore the default:
```shell
dokku git:set --global archive-max-size
```
The current values can be inspected via the global git report:
```shell
dokku git:report --global
```

View File

@@ -6,14 +6,15 @@
```
git:allow-host <host> # Adds a host to known_hosts
git:auth <host> [<username> <password>] # Configures netrc authentication for a given git server
git:auth-status <host> [<username> <password>] # Reports whether the netrc entry matches the requested state
git:from-archive [--archive-type ARCHIVE_TYPE] <app> <archive-url> [<git-username> <git-email>] # Updates an app's git repository with a given archive file
git:from-image [--build-dir DIRECTORY] <app> <docker-image> [<git-username> <git-email>] # Updates an app's git repository with a given docker image
git:generate-deploy-key # Generates a deploy ssh key
git:load-image [--build-dir DIRECTORY] <app> <docker-image> [<git-username> <git-email>] # Updates an app's git repository with a docker image loaded from stdin
git:sync [--build|build-if-changes] <app> <repository> [<git-ref>] # Clone or fetch an app from remote git repo
git:sync [--build|--build-if-changes] [--skip-deploy-branch] <app> <repository> [<git-ref>] # Clone or fetch an app from remote git repo
git:initialize <app> # Initialize a git repository for an app
git:public-key # Outputs the dokku public deploy key
git:report [<app>] [<flag>] # Displays a git report for one or more apps
git:report [<app>] [<flag>|--format json] # Displays a git report for one or more apps
git:set <app> <key> (<value>) # Set or clear a git property for an app
git:status <app> # Show the working tree status for an app
```
@@ -163,6 +164,12 @@ When running `git:sync` without a reference, it may be useful to only build when
dokku git:sync --build-if-changes node-js-app https://github.com/heroku/node-js-getting-started.git
```
By default, when running `git:sync` with a git branch reference, Dokku will automatically set the `deploy-branch` property to the specified branch. To skip setting the deploy branch, specify the `--skip-deploy-branch` flag.
```shell
dokku git:sync --skip-deploy-branch node-js-app https://github.com/heroku/node-js-getting-started.git main
```
### Initializing from private repositories
> [!IMPORTANT]
@@ -185,6 +192,34 @@ dokku git:auth github.com
For syncing to a private repository stored on a remote Git product such as GitHub or GitLab, Dokku's recommendation is to use a personal access token on a bot user where possible. Please see your service's documentation for information regarding the recommended best practices.
The password for `git:auth` may also be provided over `STDIN` to avoid placing it on the command line:
```shell
# pipe the password into git:auth
echo "personal-access-token" | dokku git:auth github.com username
```
#### Checking the configured auth state
> [!IMPORTANT]
> New as of 0.38.0
The `git:auth-status` command reports whether the configured `netrc` entry matches a desired state without exposing the underlying file. It exits `0` when the configured state matches and `1` otherwise. This allows external tooling such as configuration management systems to perform idempotent updates without reading `$DOKKU_ROOT/.netrc` directly.
```shell
# check whether github.com is configured with the expected credentials
dokku git:auth-status github.com username personal-access-token
# check whether no credentials are configured for github.com
dokku git:auth-status github.com
```
As with `git:auth`, the password may be provided via `STDIN`:
```shell
echo "personal-access-token" | dokku git:auth-status github.com username
```
### Allowing remote repository hosts
By default, the Dokku host may not have access to a server containing the remote repository. This can be initialized via the `git:allow-host` command.
@@ -235,3 +270,73 @@ dokku git:public-key
```
If there is no key, an error message is shown that displays the command that can be run on the Dokku server to generate a new public/private ssh key pair.
### Displaying git reports for an app
You can get a report about the app's git configuration using the `git:report` command:
```shell
dokku git:report
```
```
=====> node-js-app git information
Git computed archive max files: 10000
Git computed archive max size: 1073741824
Git computed deploy branch: master
Git computed keep git dir: false
Git deploy branch:
Git global archive max files:
Git global archive max size:
Git global deploy branch:
Git global keep git dir:
Git keep git dir:
Git rev env var: GIT_REV
Git sha: a1b2c3d
Git source image:
Git last updated at: 1700000000
```
The bare per-app keys (`deploy-branch`, `keep-git-dir`) and the `global-<prop>` keys hold the raw per-app or global value respectively, and are empty when nothing has been set. The `computed-<prop>` keys hold the effective value used at deploy time, falling back to the global value (where one has been set) and then to the built-in default.
You can run the command for a specific app also.
```shell
dokku git:report node-js-app
```
You can pass flags which will output only the value of the specific information you want. For example:
```shell
dokku git:report node-js-app --git-deploy-branch
```
The `git:report` command also takes a `--format` flag, with the valid options including `stdout` (default) and `json`. The `json` output format can be used for automation purposes:
```shell
dokku git:report node-js-app --format json
```
The `--format` flag cannot be combined with an info flag.
## Properties
### Settable properties
| Property | Scope | Default | Report flags | Description |
|---|---|---|---|---|
| `archive-max-files` | app + global | none | `--git-global-archive-max-files`, `--git-computed-archive-max-files` | Maximum number of files allowed in an uploaded archive deploy |
| `archive-max-size` | app + global | none | `--git-global-archive-max-size`, `--git-computed-archive-max-size` | Maximum total size of an uploaded archive deploy |
| `deploy-branch` | app + global | `master` | `--git-deploy-branch`, `--git-global-deploy-branch`, `--git-computed-deploy-branch` | Branch name pushed by the git remote that triggers a deploy |
| `keep-git-dir` | app + global | `false` | `--git-keep-git-dir`, `--git-global-keep-git-dir`, `--git-computed-keep-git-dir` | When `true`, retains the `.git` directory inside the build context |
| `rev-env-var` | app + global | `GIT_REV` | `--git-rev-env-var` | Environment variable name receiving the deployed commit SHA; empty disables injection |
| `source-image` | app + global | none | `--git-source-image` | Docker image to clone application source from when deploying from an image |
### Read-only flags
The following flags surface in `git:report` but are not managed by `git:set` - they are derived from repository state:
| Flag | Description |
|---|---|
| `--git-sha` | HEAD commit SHA of the app's git repo |
| `--git-last-updated-at` | UNIX timestamp of the last write to the deploy branch ref |

View File

@@ -17,7 +17,13 @@ In the above example, Dokku will build the app as if the repository contained _o
FROM my-registry/node-js-getting-started:latest
```
If the specified image already exists on the Dokku host, it will not be pulled again, though this behavior may be changed using [build phase docker-options](/docs/advanced-usage/docker-options.md).
If the specified image already exists on the Dokku host, it will not be pulled again. To force a pull even when the image exists locally, use the `--force` flag:
```shell
dokku git:from-image --force node-js-app my-registry/node-js-getting-started:latest
```
This is useful when the remote image has been updated but the tag remains the same.
Triggering a build with the same arguments multiple times will result in Dokku exiting `0` early as there will be no changes detected. If the image tag is reused but the underlying image is different, it is recommended to use the image digest instead of the tag. This can be retrieved via the following command:

View File

@@ -71,7 +71,7 @@ All commands have the application name automatically set via the `--app` flag on
The client supports several environment variables:
- `DOKKU_HOST` (default: `dokku` git remote): Used to interact with a specific remote server. Can be overridden via the `--remote` flag.
- `DOKKU_HOST` (default: `dokku` git remote): Used to interact with a specific remote server. Can be overridden via the `--remote` flag. Must specify the `--app` flag when specified.
- `DOKKU_PORT` (default: `22`): Used to specify a port to connect to the Dokku server on.
It also supports several flags (all flags unspecified here are passed as is to the server):
@@ -99,6 +99,12 @@ To list all available remotes, run `dokku remote:list`. This is equivalent to ru
To add a remote, run `dokku remote:add $REMOTE_NAME dokku@dokku.me:$APP_NAME`, replacing `$REMOTE_NAME` with your desired remote name, the `$APP_NAME` with your desired app name and the host `dokku.me` with your Dokku host. This is equivalent to running `git remote add $REMOTE_NAME dokku@dokku.me:$APP_NAME`.
The following remote formats are supported:
- `dokku@HOSTNAME.TLD:APP_NAME`
- `ssh://dokku@HOSTNAME.TLD/APP_NAME`
- `ssh://dokku@HOSTNAME.TLD:HOST_PORT/APP_NAME`
To remove a remote, run `dokku remote:remove $REMOTE_NAME`. This is equivalent to running `git remote remove $REMOTE_NAME`.
By default, the remote in use is `dokku`. To change the remote the client uses by default, run `dokku remote:set $REMOTE_NAME`, where `$REMOTE_NAME` is the name of your desired remote. This will not check the value specified, so that remote *must* be available or errors will occur when running normal client commands. Note that specifying `--remote` when running dokku commands will override this configuration value.

View File

@@ -5,7 +5,7 @@
```
scheduler-docker-local:report [<app>] [<flag>] # Displays a scheduler-docker-local report for one or more apps
scheduler-docker-local:set <app> <key> (<value>) # Set or clear a scheduler-docker-local property for an app
scheduler-docker-local:set [<app>|--global] <key> (<value>) # Set or clear a scheduler-docker-local property for an app or globally
```
> [!IMPORTANT]
@@ -46,7 +46,19 @@ Once set, you may re-enable it by setting a blank value for `init-process`:
dokku scheduler-docker-local:set node-js-app init-process
```
All image containers with the label `org.opencontainers.image.vendor=linuxserver.io` will have the automatic init process injection force-disabled without further intervention.
The default value may also be configured globally with the `--global` flag. Per-app values take precedence over the global value when set.
```shell
dokku scheduler-docker-local:set --global init-process false
```
The global value may also be unset by setting a blank value.
```shell
dokku scheduler-docker-local:set --global init-process
```
All image containers with the label `org.opencontainers.image.vendor=linuxserver.io` will have the automatic init process injection force-disabled without further intervention when neither an app-level nor a global value is set.
### Deploying Process Types in Parallel
@@ -66,6 +78,18 @@ Once set, you may reset it by setting a blank value for `parallel-schedule-count
dokku scheduler-docker-local:set node-js-app parallel-schedule-count
```
The default value may also be configured globally with the `--global` flag. Per-app values take precedence over the global value when set.
```shell
dokku scheduler-docker-local:set --global parallel-schedule-count 4
```
The global value may also be unset by setting a blank value.
```shell
dokku scheduler-docker-local:set --global parallel-schedule-count
```
If the value of `parallel-schedule-count` is increased and a given process type fails to schedule successfully, then any in-flight process types will continue to be processed, while all process types that have not been scheduled will be skipped before the deployment finally fails.
Container scheduling output is shown in the order it is received, and thus may be out of order in case of output to stderr.
@@ -100,6 +124,57 @@ Note that increasing the value of `max_parallel` may significantly impact CPU ut
See the [app.json location documentation](/docs/advanced-usage/deployment-tasks.md#changing-the-appjson-location) for more information on where to place your `app.json` file.
### Displaying scheduler-docker-local reports for an app
You can get a report about the app's scheduler-docker-local configuration using the `scheduler-docker-local:report` command:
```shell
dokku scheduler-docker-local:report
```
```
=====> node-js-app scheduler-docker-local information
Scheduler docker local computed init process: true
Scheduler docker local computed parallel schedule count:1
Scheduler docker local global init process: true
Scheduler docker local global parallel schedule count: 1
Scheduler docker local init process:
Scheduler docker local parallel schedule count:
```
You can run the command for a specific app also.
```shell
dokku scheduler-docker-local:report node-js-app
```
You can pass flags which will output only the value of the specific information you want. For example:
```shell
dokku scheduler-docker-local:report node-js-app --scheduler-docker-local-computed-init-process
```
When run against `--global`, only the global keys are reported.
```shell
dokku scheduler-docker-local:report --global
```
The available keys are:
- `--scheduler-docker-local-init-process`: the raw per-app init-process value (empty when unset).
- `--scheduler-docker-local-computed-init-process`: the effective init-process value, computed as the per-app value if set, otherwise the global value, otherwise `true`.
- `--scheduler-docker-local-global-init-process`: the global init-process value (defaults to `true`).
- `--scheduler-docker-local-parallel-schedule-count`: the raw per-app parallel-schedule-count value (empty when unset).
- `--scheduler-docker-local-computed-parallel-schedule-count`: the effective parallel-schedule-count value, computed as the per-app value if set, otherwise the global value, otherwise `1`.
- `--scheduler-docker-local-global-parallel-schedule-count`: the global parallel-schedule-count value (defaults to `1`).
The report may also be emitted as JSON using `--format json`, which is useful for external tooling that needs to distinguish a value set on the app from one that is defaulting.
```shell
dokku scheduler-docker-local:report node-js-app --format json
```
## Scheduler Interface
The following sections describe implemented scheduler functionality for the `docker-local` scheduler.
@@ -141,3 +216,12 @@ The `docker-local` scheduler supports a minimal list of resource _limits_ and _r
- memory: (docker option: `--memory-reservation`) should be specified with a suffix of `b` (bytes), `k` (kilobytes), `m` (megabytes), `g` (gigabytes). Default unit is `m` (megabytes).
- See the ["Memory" section](https://docs.docker.com/config/containers/resource_constraints/#memory) of the Docker Runtime Options documentation for more information.
## Properties
### Settable properties
| Property | Scope | Default | Report flags | Description |
|---|---|---|---|---|
| `init-process` | app + global | `true` | `--scheduler-docker-local-init-process`, `--scheduler-docker-local-global-init-process`, `--scheduler-docker-local-computed-init-process` | When `true`, runs containers with Docker's `--init` flag (reaping zombie processes) |
| `parallel-schedule-count` | app + global | `1` | `--scheduler-docker-local-parallel-schedule-count`, `--scheduler-docker-local-global-parallel-schedule-count`, `--scheduler-docker-local-computed-parallel-schedule-count` | Maximum number of containers scheduled in parallel during a deploy |

View File

@@ -4,19 +4,29 @@
> New as of 0.33.0
```
scheduler-k3s:annotations:set <app|--global> <property> (<value>) [--process-type PROCESS_TYPE] <--resource-type RESOURCE_TYPE>, Set or clear an annotation for a given app/process-type/resource-type combination
scheduler-k3s:autoscaling-auth:set <app|--global> <trigger> [<--metadata key=value>...], Set or clear a scheduler-k3s autoscaling keda trigger authentication resource for an app
scheduler-k3s:autoscaling-auth:report <app|--global> [--format stdout|json] [--include-metadata] # Displays a scheduler-k3s autoscaling auth report for an app
scheduler-k3s:cluster-add [ssh://user@host:port] # Adds a server node to a Dokku-managed cluster
scheduler-k3s:cluster-list # Lists all nodes in a Dokku-managed cluster
scheduler-k3s:cluster-remove [node-id] # Removes client node to a Dokku-managed cluster
scheduler-k3s:ensure-charts # Ensures the k3s charts are installed
scheduler-k3s:initialize # Initializes a cluster
scheduler-k3s:labels:set <app|--global> <property> (<value>) [--process-type PROCESS_TYPE] <--resource-type RESOURCE_TYPE>, Set or clear a label for a given app/process-type/resource-type combination
scheduler-k3s:report [<app>] [<flag>] # Displays a scheduler-k3s report for one or more apps
scheduler-k3s:set [<app>|--global] <key> (<value>) # Set or clear a scheduler-k3s property for an app or the scheduler
scheduler-k3s:show-kubeconfig # Displays the kubeconfig for remote usage
scheduler-k3s:uninstall # Uninstalls k3s from the Dokku server
scheduler-k3s:annotations:set <app|--global> <property> (<value>) [--process-type PROCESS_TYPE] <--resource-type RESOURCE_TYPE> # Set or clear an annotation for a given app/process-type/resource-type combination
scheduler-k3s:annotations:report [<app>|--global] [--format stdout|json] [--process-type PROCESS_TYPE] [--resource-type RESOURCE_TYPE] # Displays a scheduler-k3s annotations report for one or more apps
scheduler-k3s:autoscaling-auth:set <app|--global> <trigger> [<--metadata key=value>...] # Set or clear a scheduler-k3s autoscaling keda trigger authentication resource for an app
scheduler-k3s:autoscaling-auth:report [<app>|--global] [--format stdout|json] [--include-metadata] # Displays a scheduler-k3s autoscaling auth report for one or more apps
scheduler-k3s:charts:report [<chart>] [--format stdout|json] # Displays a scheduler-k3s chart override report
scheduler-k3s:charts:set <chart-name.property> (<value>) # Set or clear a chart-specific helm value
scheduler-k3s:cluster:add [--profile PROFILE] [--role ROLE] [--insecure-allow-unknown-hosts] [--server-ip SERVER_IP] [--taint-scheduling] [--kubelet-args KUBELET_ARGS] <ssh://user@host:port> # Adds a server node to a Dokku-managed cluster
scheduler-k3s:cluster:list [--format json|stdout] # Lists all nodes in a Dokku-managed cluster
scheduler-k3s:cluster:remove [node-id] # Removes client node to a Dokku-managed cluster
scheduler-k3s:ensure-charts # Ensures the k3s charts are installed
scheduler-k3s:initialize [--server-ip SERVER_IP] [--taint-scheduling] [--kubelet-args KUBELET_ARGS] # Initializes a cluster
scheduler-k3s:labels:set <app|--global> <property> (<value>) [--process-type PROCESS_TYPE] <--resource-type RESOURCE_TYPE> # Set or clear a label for a given app/process-type/resource-type combination
scheduler-k3s:labels:report [<app>|--global] [--format stdout|json] [--process-type PROCESS_TYPE] [--resource-type RESOURCE_TYPE] # Displays a scheduler-k3s labels report for one or more apps
scheduler-k3s:node-sysctls:set <sysctl> (<value>) [--global|--profile PROFILE] # Set or clear a node-level kernel sysctl for unprofiled nodes or a single node profile
scheduler-k3s:node-sysctls:report [--format stdout|json] # Displays the node-level kernel sysctls applied to each scope
scheduler-k3s:preview <app> [--context N] [--show-secrets] [--show-secrets-decoded] # Displays a diff between the current and next deployment for an app
scheduler-k3s:profiles:add <profile> [--role ROLE] [--insecure-allow-unknown-hosts] [--taint-scheduling] [--kubelet-args KUBELET_ARGS] # Adds a node profile to the k3s cluster
scheduler-k3s:profiles:list [--format json|stdout] # Lists all node profiles in the k3s cluster
scheduler-k3s:profiles:remove <profile> # Removes a node profile from the k3s cluster
scheduler-k3s:report [<app>|--global] [--format stdout|json] [<flag>] # Displays a scheduler-k3s report for one or more apps
scheduler-k3s:set <app|--global> <property> (<value>) # Set or clear a scheduler-k3s property for an app or globally
scheduler-k3s:show-kubeconfig # Displays the kubeconfig for remote usage
scheduler-k3s:uninstall # Uninstalls k3s from the Dokku server
```
> [!NOTE]
@@ -70,6 +80,20 @@ Dokku can also use Traefik on cluster initialization via the [Traefik's CRDs](ht
dokku scheduler-k3s:initialize --ingress-class traefik
```
Kubelet flags for the initial server node can be supplied by passing `--kubelet-args` with a comma-separated `key=value` list. This is the only way to configure the kubelet on the node created by `scheduler-k3s:initialize`, as that node never passes through `scheduler-k3s:cluster:add`.
```shell
dokku scheduler-k3s:initialize \
--kubelet-args allowed-unsafe-sysctls=net.ipv6.conf.all.disable_ipv6
```
Multiple kubelet arguments can be specified in the same call by separating them with commas.
```shell
dokku scheduler-k3s:initialize \
--kubelet-args allowed-unsafe-sysctls=net.ipv6.conf.all.disable_ipv6,max-pods=150
```
### Adding nodes to the cluster
> [!WARNING]
@@ -77,22 +101,38 @@ dokku scheduler-k3s:initialize --ingress-class traefik
#### Adding a worker node
Nodes that run app workloads can be added via the `scheduler-k3s:cluster-add` command. This will ssh onto the specified server, install k3s, and join it to the current Dokku node in worker mode. Workers are typically used to run app workloads.
Nodes that run app workloads can be added via the `scheduler-k3s:cluster:add` command. This will ssh onto the specified server, install k3s, and join it to the current Dokku node in worker mode. Workers are typically used to run app workloads.
```shell
dokku scheduler-k3s:cluster-add ssh://root@worker-1.example.com
dokku scheduler-k3s:cluster:add ssh://root@worker-1.example.com
```
Per-node kubelet flags can be supplied by passing `--kubelet-args` with a comma-separated `key=value` list. This is useful for tuning scheduler capacity or enforcing cluster-wide defaults at the node level.
```shell
dokku scheduler-k3s:cluster:add \
--kubelet-args allowed-unsafe-sysctls=net.ipv6.conf.all.disable_ipv6 \
ssh://root@worker-1.example.com
```
Multiple kubelet arguments can be specified in the same call by separating them with commas. The following example enables IPv4 forwarding while also increasing the pod density on the worker.
```shell
dokku scheduler-k3s:cluster:add \
--kubelet-args allowed-unsafe-sysctls=net.ipv6.conf.all.disable_ipv6,max-pods=150 \
ssh://root@worker-2.example.com
```
If the server isn't in the `known_hosts` file, the connection will fail. This can be bypassed by setting the `--insecure-allow-unknown-hosts` flag:
```shell
dokku scheduler-k3s:cluster-add --insecure-allow-unknown-hosts ssh://root@worker-1.example.com
dokku scheduler-k3s:cluster:add --insecure-allow-unknown-hosts ssh://root@worker-1.example.com
```
By default, Dokku will attempt to auto-detect the IP address of the Dokku server for the remote server to connect to. In cases where the auto-detected IP address is incorrect, an override may be specified via the `--server-ip` flag:
```shell
dokku scheduler-k3s:cluster-add --server-ip 192.168.20.15 ssh://root@worker-1.example.com
dokku scheduler-k3s:cluster:add --server-ip 192.168.20.15 ssh://root@worker-1.example.com
```
#### Adding a server node
@@ -102,28 +142,28 @@ dokku scheduler-k3s:cluster-add --server-ip 192.168.20.15 ssh://root@worker-1.ex
Server nodes are typically used to replicate the cluster state, and it is recommended to have an odd number of nodes spread across several availability zones (datacenters in close proximity within a region). This allows for higher availability in the event of a cluster failure. Server nodes run control-plane services such as the traefik load balancer and the etcd backing store.
Server nodes can also be added with the `scheduler-k3s:cluster-add` command by specifying `--role server`. This will ssh onto the specified server, install k3s, and join it to the current Dokku node in server mode.
Server nodes can also be added with the `scheduler-k3s:cluster:add` command by specifying `--role server`. This will ssh onto the specified server, install k3s, and join it to the current Dokku node in server mode.
```shell
dokku scheduler-k3s:cluster-add --role server ssh://root@server-1.example.com
dokku scheduler-k3s:cluster:add --role server ssh://root@server-1.example.com
```
Server nodes allow any workloads to be scheduled on them by default, in addition to the control-plane, etcd, and the scheduler itself. To avoid app workloads being scheduled on your control-plane, use the `--taint-scheduling` flag:
```shell
dokku scheduler-k3s:cluster-add --role server --taint-scheduling ssh://root@server-1.example.com
dokku scheduler-k3s:cluster:add --role server --taint-scheduling ssh://root@server-1.example.com
```
If the server isn't in the `known_hosts` file, the connection will fail. This can be bypassed by setting the `--insecure-allow-unknown-hosts` flag:
```shell
dokku scheduler-k3s:cluster-add --role server --insecure-allow-unknown-hosts ssh://root@server-1.example.com
dokku scheduler-k3s:cluster:add --role server --insecure-allow-unknown-hosts ssh://root@server-1.example.com
```
By default, Dokku will attempt to auto-detect the IP address of the Dokku server for the remote server to connect to. In cases where the auto-detected IP address is incorrect, an override may be specified via the `--server-ip` flag:
```shell
dokku scheduler-k3s:cluster-add --role server --server-ip 192.168.20.15 ssh://root@server-1.example.com
dokku scheduler-k3s:cluster:add --role server --server-ip 192.168.20.15 ssh://root@server-1.example.com
```
#### Changing the network interface
@@ -134,109 +174,202 @@ When attaching an worker or server node, the K3s plugin will look at the IP asso
dokku scheduler-k3s:set --global network-interface eth1
```
### Changing deploy timeouts
### Node Profiles
By default, app deploys will timeout after 300s. To customize this value, set the `deploy-timeout` property via `scheduler-k3s:set`:
Node profiles capture repeatable `scheduler-k3s:cluster:add` options so you can join multiple nodes with identical settings. A profile name can be specified for the `scheduler-k3s:cluster:add` command via the `--profile <name>` flag. Any flags passed directly to `scheduler-k3s:cluster:add` override the stored values for that run.
#### Listing profiles
Display stored profiles to understand which roles and behaviors will be used.
```shell
dokku scheduler-k3s:profiles:list
```
```
name role
awesome-profile worker
```
This command also takes an optional `--format` flag to specify a format for the output. Options include `json` and `stdout`
#### Adding profiles
Create or update a profile that defines how new nodes should be prepared before joining the cluster.
```shell
dokku scheduler-k3s:profiles:add edge-workers \
--role worker \
--insecure-allow-unknown-hosts \
--kubelet-args protect-kernel-defaults=true,eviction-hard=memory.available<200Mi
```
Profile names must be alphanumeric, may include internal dashes, cannot start/end with a dash, and must be ≤32 characters. Other than the `--server-ip` flag, all flags used for `scheduler-k3s:cluster:add` are valid for the `scheduler-k3s:profiles:add` command.
#### scheduler-k3s:profiles:remove
Delete a profile once it’s no longer required.
```shell
dokku scheduler-k3s:profiles:remove edge-workers
```
Removal only deletes the stored definition; nodes that already joined the cluster keep their existing configuration.
#### The node profile label
When a node joins via `scheduler-k3s:cluster:add --profile <name>`, Dokku labels it with `dokku.com/node-profile=<name>`. This makes a profile selectable after the fact, whether via `kubectl`, a `nodeSelector`, or a node affinity rule.
```shell
kubectl get nodes -L dokku.com/node-profile
```
Nodes added without `--profile` are not labeled, as an empty label value would be indistinguishable from a profile literally named the empty string.
Two limits are worth knowing before relying on this label:
- The server node never carries it. That node is created by `scheduler-k3s:initialize` and never passes through `scheduler-k3s:cluster:add`, so no profile is ever associated with it.
- Nodes that joined before this label existed are not backfilled. Use `kubectl label node <node> dokku.com/node-profile=<name>` to set it on an existing node.
### Changing deployment settings
The k3s plugin provides a number of settings that can be used to managed deployments on a per-app basis. The following table outlines ones not covered elsewhere:
| Name | Description | Global Default |
|-----------------------|---------------------------------------------------|--------------------|
| `deploy-timeout` | Controls when app deploys will timeout in seconds | `300s` |
| `kustomize-root-path` | Controls the folder context from the deployed repository used for Kustomize | `config/kustomize` |
| `image-pull-secrets` | Name of a kubernetes secret used to auth against a registry | Contents of `~/.docker/config.json` from Dokku server |
| `namespace` | Controls the namespace used for resource creation | `default` |
| `rollback-on-failure` | Whether to rollback failed deploys | `false` |
| `shm-size` | Default shared memory size for pods | Kubernetes default |
All settings can be set via the `scheduler-k3s:set` command. Using `deploy-timeout` as an example:
```shell
dokku scheduler-k3s:set node-js-app deploy-timeout 60s
```
The default value may be set by passing an empty value for the option:
The default value may be set by passing an empty value for the option in question:
```shell
dokku scheduler-k3s:set node-js-app deploy-timeout
```
The `deploy-timeout` property can also be set globally. The global default is `300s`.
Properties can also be set globally. If not set for an app, the global value will apply.
```shell
dokku scheduler-k3s:set --global deploy-timeout 60s
```
The default value may be set by passing an empty value for the option.
The global default value may be set by passing an empty value for the option.
```shell
dokku scheduler-k3s:set --global deploy-timeout
```
### Customizing the namespace
### Restarting apps
By default, app deploys will run against the `default` Kubernetes namespace. To customize this value, set the `namespace` property via `scheduler-k3s:set`:
A `ps:restart` re-renders the app's Helm chart from its current configuration and upgrades the release, which is how configuration changes are picked up. Pods cycle because each Deployment's pod template carries an `app.kubernetes.io/version` annotation that changes on restart.
A single process type may be targeted, in which case only that process type's pods are replaced. The rest of the release is still upgraded so configuration converges everywhere, but the untargeted Deployments keep their existing annotation and are left running:
```shell
dokku scheduler-k3s:set node-js-app namespace lollipop
dokku ps:restart node-js-app web
```
The default value may be set by passing an empty value for the option:
The app image does not need to be present on the Dokku host. Kubernetes pulls it from the registry, so a host that has reaped its local copy - as the `registry` plugin does on its own once an app has been deployed a number of times - can still restart, scale, and run one-off commands against the app. The builder type and working directory needed to render the chart are read back from the app's current Helm release when the image is unavailable locally.
There is one exception. An `app.json` with a `scripts.dokku.postdeploy` task runs that task in a container on the Dokku host rather than in the cluster, and so does require the image locally. Apps without a postdeploy task are unaffected.
### Displaying the scheduler report
Configured properties can be inspected with the `scheduler-k3s:report` command. Without arguments, it iterates every app. Passing an app name scopes the report to that app, while `--global` reports the scheduler-wide properties on their own:
```shell
dokku scheduler-k3s:set node-js-app namespace
dokku scheduler-k3s:report
dokku scheduler-k3s:report node-js-app
dokku scheduler-k3s:report --global
```
The `namespace` property can also be set globally. The global default is `default`.
The output can be emitted as JSON for programmatic consumption:
```shell
dokku scheduler-k3s:set --global namespace 60s
dokku scheduler-k3s:report --global --format json
```
The default value may be set by passing an empty value for the option.
A single value can also be read directly by passing its report flag, as listed in the [settable properties](#settable-properties) table:
```shell
dokku scheduler-k3s:set --global namespace
dokku scheduler-k3s:report node-js-app --scheduler-k3s-computed-deploy-timeout
```
### Enabling rollback on failure
### Previewing deployment changes
By default, app deploys do not rollback on failure. To enable this functionality, set the `rollback-on-failure` property via `scheduler-k3s:set`:
Before triggering a deploy, the `scheduler-k3s:preview` command can be used to display a unified diff between the manifests currently stored in the live Helm release for an app and the manifests that the next deploy would roll out:
```shell
dokku scheduler-k3s:set node-js-app rollback-on-failure true
dokku scheduler-k3s:preview node-js-app
```
The default value may be set by passing an empty value for the option:
A clean redeploy with no property changes produces no output. After modifying a property that affects the main app chart (for example `dokku resource:limit --memory 256m node-js-app`), the command shows the unified diff for each changed resource. For an app that has never been deployed, the entire proposed manifest is rendered as added lines.
By default each change is shown with 3 lines of surrounding context, git-diff style. The `--context` flag overrides this; pass `-1` to render the full resource around every change:
```shell
dokku scheduler-k3s:set node-js-app rollback-on-failure
dokku scheduler-k3s:preview node-js-app --context 0
dokku scheduler-k3s:preview node-js-app --context -1
```
The `rollback-on-failure` property can also be set globally. The global default is `false`.
By default any `kind: Secret` resources have their `data` values redacted so secret bytes never appear in terminal scrollback or CI logs. Two flags adjust this behavior:
```shell
dokku scheduler-k3s:set --global rollback-on-failure false
dokku scheduler-k3s:preview node-js-app --show-secrets
dokku scheduler-k3s:preview node-js-app --show-secrets-decoded
```
The default value may be set by passing an empty value for the option.
`--show-secrets` keeps the raw base64-encoded values, and `--show-secrets-decoded` renders them base64-decoded. In current dokku, the only Secret objects in the main app chart come from KEDA autoscaling auth resources configured via [`scheduler-k3s:autoscaling-auth:set`](#workload-autoscaling-authentication); for apps without autoscaling auth, these flags are no-ops.
> [!IMPORTANT]
> The preview only covers the main app helm release (the release named after the app). Dokku installs three auxiliary helm releases per app for config-var storage, image-pull credentials, and TLS certificates, and changes to those releases do **not** appear in this preview. In particular, a `dokku config:set` change followed by `scheduler-k3s:preview` will show no diff because the new config-var value lives in the separate `config-<app>` helm release.
> [!NOTE]
> Helm renders the proposed manifest using a client-side dry-run. The `lookup` template function returns empty values in this mode, so charts overridden via `scheduler-k3s:charts:set` that depend on `lookup` may render differently here than at actual deploy time. Dokku's bundled chart templates do not use `lookup`.
### Exposing services on the network
Dokku will automatically expose the `web` process as a Kubernetes Service, with all others being treated as background processes. In some cases, it may be useful to have other processes exposed as Kubernetes Service objects so as to segregate internal http endpoints from public http endpoints. This can be done by modifying the `app.json` Formation entry for your process type.
```json
{
"formation": {
"internal-web": {
"service": {
"exposed": true
}
}
}
}
```
In the above example, the `internal-web` process is exposed as a service. The `PORT` variable for the process will be set to `5000`, and a kubernetes `Service` object will be created pointing at your processes.
> [!NOTE]
> It is not possible to modify the port mapping, nor is it possible to assign domains or SSL to a non-web process.
### Wildcard domains
Both the `nginx` and `traefik` ingress classes route wildcard domains. Add the wildcard as a domain on the app:
```shell
dokku scheduler-k3s:set --global rollback-on-failure
dokku domains:add node-js-app '*.node-js-app.com'
```
### Using image pull secrets
A wildcard matches exactly one label, matching DNS itself, so `*.node-js-app.com` covers `api.node-js-app.com` but not `node-js-app.com` or `api.staging.node-js-app.com`. Add the apex as a separate domain if it should also be served.
When authenticating against a registry via `registry:login`, the scheduler-k3s plugin will authenticate all servers in the cluster against the registry specified. If desired, an image pull secret can be used instead. To customize this value, set the `image-pull-secrets` property via `scheduler-k3s:set`:
An exact domain always takes precedence over a wildcard, including across apps. If one app serves `*.node-js-app.com` and another serves `api.node-js-app.com`, requests for `api.node-js-app.com` are routed to the second app.
```shell
dokku scheduler-k3s:set node-js-app image-pull-secrets lollipop
```
The default value may be set by passing an empty value for the option:
```shell
dokku scheduler-k3s:set node-js-app image-pull-secrets
```
The `image-pull-secrets` property can also be set globally. The global default is empty string, and k3s will use Dokku's locally configured `~/.docker/config.json` for any private registry pulls.
```shell
dokku scheduler-k3s:set --global image-pull-secrets 60s
```
The default value may be set by passing an empty value for the option.
```shell
dokku scheduler-k3s:set --global image-pull-secrets
```
Only the leading label may be wildcarded. A domain such as `api.*.node-js-app.com` is treated as a literal hostname and will not match anything.
### SSL Certificates
@@ -254,6 +387,30 @@ dokku scheduler-k3s:set --global letsencrypt-email-stag automated@dokku.sh
After enabling and rebuilding, all apps with an `http:80` port mapping will have a corresponding `https:443` added and ssl will be automatically enabled. All http requests will then be redirected to https.
#### Customizing the letsencrypt email per app
The `letsencrypt-email-prod` and `letsencrypt-email-stag` properties can also be set per app, overriding the global value for that app. This is useful when different apps should register their certificates under different contact emails.
```shell
dokku scheduler-k3s:set node-js-app letsencrypt-email-prod team@node-js-app.com
```
The value resolves in two steps: the app's `letsencrypt-server` selects which server (`prod` or `staging`) is used, and the matching `letsencrypt-email-<server>` property is then resolved as the app-level value, falling back to the global value. Because the two emails are per-server, an app-level `letsencrypt-email-stag` only takes effect once the app's `letsencrypt-server` is set to `staging`.
When an app sets its own email for the selected server, Dokku renders a namespaced cert-manager `Issuer` into the app's own release using that email instead of pointing the app at the shared global `ClusterIssuer`. Apps without an app-level email continue to use the shared `ClusterIssuer` with the global email.
The default value may be set by passing an empty value for the option, which falls the app back to the global value:
```shell
dokku scheduler-k3s:set node-js-app letsencrypt-email-prod
```
The computed value in effect for an app can be inspected via the report command:
```shell
dokku scheduler-k3s:report node-js-app --scheduler-k3s-computed-letsencrypt-email-prod
```
#### Customizing the letsencrypt server
The letsencrypt integration is set to the production letsencrypt server by default. This can be changed on an app-level by setting the `letsencrypt-server` property with the `scheduler-k3s:set` command
@@ -268,7 +425,7 @@ The default value may be set by passing an empty value for the option:
dokku scheduler-k3s:set node-js-app letsencrypt-server
```
The `image-pull-secrets` property can also be set globally. The global default is `production`.
The `letsencrypt-server` property can also be set globally. The global default is `production`.
```shell
dokku scheduler-k3s:set --global letsencrypt-server staging
@@ -280,6 +437,116 @@ The default value may be set by passing an empty value for the option.
dokku scheduler-k3s:set --global letsencrypt-server staging
```
Automatic certificate issuance can be completely disabled for a given app by setting the `letsencrypt-server` to `false`. This is the single off switch for the app, and also disables a [manually managed issuer](#using-a-manually-managed-cert-manager-issuer).
```shell
dokku scheduler-k3s:set node-js-app letsencrypt-server false
```
The server can also be disabled globally, and then conditionally enabled on a per-app basis:
```shell
dokku scheduler-k3s:set --global letsencrypt-server false
```
Values are validated when the property is set, so a typo fails immediately rather than breaking the next deploy. The valid values are `prod`, `production`, `stag`, `staging`, and `false`.
#### Using a manually managed cert-manager issuer
Dokku's built-in letsencrypt integration uses an `http01` solver, which cannot issue wildcard certificates and cannot satisfy providers that require `dns01`. For those cases, create a cert-manager `Issuer` or `ClusterIssuer` yourself and point an app at it with the `cert-issuer-name` property.
```shell
dokku scheduler-k3s:set node-js-app cert-issuer-name acme-dns
```
Dokku does not create, modify, or delete the issuer - it only references it from the app's generated `Certificate`. Any cert-manager issuer works, including non-ACME ones such as `selfSigned`, `ca`, or `vault`.
The issuer kind defaults to `ClusterIssuer`. To reference a namespaced `Issuer`, set the `cert-issuer-kind` property:
```shell
dokku scheduler-k3s:set node-js-app cert-issuer-kind Issuer
```
> [!WARNING]
> A namespaced `Issuer` must exist in the same namespace as the app, as configured by the `namespace` property. cert-manager cannot reference an `Issuer` across namespaces.
Unlike the letsencrypt integration, no email property is required - setting `cert-issuer-name` is itself what enables https for the app. Certificates are requested for every domain attached to the app.
Both properties can also be set globally, which enables https for every app that has domains, no imported certificate, and no `letsencrypt-server false`:
```shell
dokku scheduler-k3s:set --global cert-issuer-name acme-dns
```
Certificate sources are resolved in the following order:
1. A certificate imported via the `certs` plugin.
2. `letsencrypt-server` set to `false`, which disables issuance entirely.
3. `cert-issuer-name`, resolved app-first and then globally.
4. The built-in letsencrypt integration.
Because an empty app-level property falls back to the global value, an app cannot return to the built-in letsencrypt integration by unsetting `cert-issuer-name` while a global value is configured. Set the app's `cert-issuer-name` to the reserved value `false` instead:
```shell
dokku scheduler-k3s:set node-js-app cert-issuer-name false
```
As a consequence, an issuer literally named `false` cannot be referenced.
The default value may be set by passing an empty value for the option, which falls the app back to the global value:
```shell
dokku scheduler-k3s:set node-js-app cert-issuer-name
```
If the named issuer does not exist in the cluster, Dokku emits a warning before the build starts. The warning never blocks a deploy, since the issuer may be managed independently and applied later. When a certificate fails to issue, inspect it directly:
```shell
kubectl describe certificate node-js-app-web -n default
```
##### Wildcard certificates
A `dns01` issuer can issue wildcard certificates. Add the wildcard as a domain on the app, and it will be included in the generated `Certificate`:
```shell
dokku domains:add node-js-app '*.node-js-app.com'
```
See [wildcard domains](#wildcard-domains) for how a wildcard is matched against incoming requests.
#### Using imported SSL certificates
SSL certificates imported via the `certs` plugin can be used with the k3s scheduler. When a certificate is imported, it is automatically synced to Kubernetes as a TLS secret and will be used for the app's ingress configuration.
To import a certificate:
```shell
dokku certs:add node-js-app server.crt server.key
```
When a certificate is imported:
- A Kubernetes TLS secret named `tls-<app-name>` is created in the app's namespace
- The ingress configuration is updated to use the imported certificate
- Automatic certificate generation is disabled for the app
Imported certificates take precedence over both Let's Encrypt and a [manually managed issuer](#using-a-manually-managed-cert-manager-issuer). If you have an imported certificate alongside either of those, the imported certificate will be used.
To remove an imported certificate:
```shell
dokku certs:remove node-js-app
```
When a certificate is removed:
- The TLS secret is deleted from Kubernetes
- The app is automatically redeployed to update the ingress configuration
- If Let's Encrypt is configured, automatic certificate generation will resume
When an app is destroyed, any associated TLS secret is automatically cleaned up.
### Customizing Annotations and Labels
> [!NOTE]
@@ -313,6 +580,8 @@ The following resource types are supported:
- `traefik_ingressroute`
- `traefik_middleware`
Annotation keys may contain `/` (e.g. Kubernetes-style keys such as `prometheus.io/scrape`) and values may span multiple lines; both are preserved verbatim.
A `ps:restart` is required after setting annotations in order to have them apply to running resources.
#### Removing an annotation
@@ -326,6 +595,35 @@ dokku scheduler-k3s:annotations:set node-js-app annotation.key --resource-type d
A `ps:restart` is required after removing annotations in order to remove them from running resources.
#### Displaying annotations
Configured annotations can be inspected with the `scheduler-k3s:annotations:report` command. Without arguments, it iterates every app and prints all annotations. Passing an app name (or `--global`) scopes the report:
```shell
dokku scheduler-k3s:annotations:report
dokku scheduler-k3s:annotations:report node-js-app
dokku scheduler-k3s:annotations:report --global
```
`--process-type` and `--resource-type` flags narrow the output to a specific scope, matching the flags accepted by `scheduler-k3s:annotations:set`:
```shell
dokku scheduler-k3s:annotations:report node-js-app --resource-type deployment
dokku scheduler-k3s:annotations:report node-js-app --process-type web --resource-type deployment
```
JSON output emits flat keys of the form `{process_type}.{resource_type}.{annotation_key}`. The literal `--global` process type is rendered as `global` to keep keys free of leading dashes:
```shell
dokku scheduler-k3s:annotations:report node-js-app --format json
```
A single value can also be read directly with a flag of the form `--scheduler-k3s-annotations.{process_type}.{resource_type}.{annotation_key}`:
```shell
dokku scheduler-k3s:annotations:report node-js-app --scheduler-k3s-annotations.global.deployment.annotation.key
```
#### Setting Labels
Dokku injects certain labels into each created resource by default, but it may be necessary to inject others for tighter integration with third-party tools. The `scheduler-k3s:labels:set` command can be used to perform this task. The command takes an app name and a required `--resource-type` flag.
@@ -354,6 +652,8 @@ The following resource types are supported:
- `traefik_ingressroute`
- `traefik_middleware`
Label keys may contain `/` (e.g. Kubernetes-style keys such as `app.kubernetes.io/part-of`) and values may span multiple lines; both are preserved verbatim.
A `ps:restart` is required after setting labels in order to have them apply to running resources.
#### Removing a label
@@ -367,6 +667,20 @@ dokku scheduler-k3s:labels:set node-js-app label.key --resource-type deployment
A `ps:restart` is required after removing labels in order to remove them from running resources.
#### Displaying labels
Configured labels can be inspected with the `scheduler-k3s:labels:report` command. The surface mirrors `scheduler-k3s:annotations:report`:
```shell
dokku scheduler-k3s:labels:report
dokku scheduler-k3s:labels:report node-js-app
dokku scheduler-k3s:labels:report --global
dokku scheduler-k3s:labels:report node-js-app --resource-type deployment
dokku scheduler-k3s:labels:report node-js-app --process-type web --resource-type deployment
dokku scheduler-k3s:labels:report node-js-app --format json
dokku scheduler-k3s:labels:report node-js-app --scheduler-k3s-labels.global.deployment.label.key
```
### Autoscaling
#### Workload Autoscaling
@@ -385,7 +699,7 @@ To enable autoscaling, use the `app.json` `formation.$PROCESS_TYPE.autoscaling`
- `cooldown_seconds`: (default: 300) The number of seconds to wait in between each scaling event
- `triggers`: A list of autoscaling triggers.
Autoscaling triggers are passed as is to Keda, and should match the configuration keda uses for a given [scaler](https://keda.sh/docs/2.13/scalers/). Below is an example for [datadog](https://keda.sh/docs/2.13/scalers/datadog/#example-2---driving-scale-directly):
Autoscaling triggers are passed as is to Keda, and should match the configuration keda uses for a given [scaler](https://keda.sh/docs/2.19/scalers/). Below is an example for [datadog](https://keda.sh/docs/2.19/scalers/datadog/#example-2---driving-scale-directly):
```json
{
@@ -417,6 +731,8 @@ Each value in the `metadata` stanza can use the following interpolated strings:
- `DOKKU_PROCESS_TYPE`: The name of the process being scaled
- `DOKKU_APP_NAME`: The name of the app being scaled
Dokku configures a Keda `fallback` (with a failure threshold of `3` and the configured replica count) on the generated `ScaledObject` so that scaling falls back to the configured replica count when a scaler's metric source becomes unavailable. Keda only allows `fallback` when at least one trigger is something other than `cpu` or `memory`, so Dokku omits the `fallback` block when every configured trigger is a `cpu` or `memory` scaler.
##### HTTP Autoscaling
In addition to the built-in scalers that Keda provides, Dokku also supports Keda's HTTP Add On. This requires that the addon be properly installed and configured. For existing k3s clusters, this can be performed by the `scheduler-k3s:ensure-charts` command:
@@ -433,7 +749,6 @@ dokku scheduler-k3s:ensure-charts
Once the chart is configured, an `http` trigger can be specified like so:
```json
{
"formation": {
@@ -504,15 +819,17 @@ dokku scheduler-k3s:autoscaling-auth:set $APP $TRIGGER_TYPE
##### Displaying an Authentication Resource report
To see a list of authentication resources managed by Dokku, run the `scheduler-k3s:autoscaling-auth:report` command.
To see a list of authentication resources managed by Dokku, run the `scheduler-k3s:autoscaling-auth:report` command. Without arguments, the report iterates every app; passing an app name (or `--global`) scopes the report:
```shell
dokku scheduler-k3s:autoscaling-auth:report
dokku scheduler-k3s:autoscaling-auth:report node-js-app
dokku scheduler-k3s:autoscaling-auth:report --global
```
```
====> $APP autoscaling-auth report
datadog: configured
====> node-js-app autoscaling-auth information
Datadog: configured
```
By default, the report will not display configured metadata - making it safe to include in Dokku report output. To include metadata and their values, add the `--include-metadata` flag:
@@ -522,13 +839,117 @@ dokku scheduler-k3s:autoscaling-auth:report node-js-app --include-metadata
```
```
====> node-js-app autoscaling-auth report
====> node-js-app autoscaling-auth information
Datadog: configured
Datadog apiKey: 1234567890
Datadog appKey: asdfghjkl
Datadog datadogSite: us5.datadoghq.com
```
JSON output emits flat keys of the form `{trigger}.{metadata_key}` and includes the actual metadata values so export tools can reconstruct the configured state:
```shell
dokku scheduler-k3s:autoscaling-auth:report node-js-app --format json
```
A single configured metadata key can also be queried with a flag of the form `--scheduler-k3s-autoscaling-auth.{trigger}.{metadata_key}`. The returned value is masked in the same way as stdout output; use `--format json` to read the actual value:
```shell
dokku scheduler-k3s:autoscaling-auth:report node-js-app --scheduler-k3s-autoscaling-auth.datadog.apiKey
```
### Setting kernel sysctls
Kernel sysctls fall into two categories, and which one a sysctl belongs to determines how it must be set.
The kernel maintains a per-namespace copy of `net.*` (network namespace) as well as `kernel.shm*`, `kernel.msg*`, `kernel.sem`, and `fs.mqueue.*` (IPC namespace). These can be set on a single app's pods. Every other sysctl - including all of `vm.*`, and therefore `vm.max_map_count` - holds a single value shared by the entire machine, so it cannot be scoped to a pod and must be applied to the node itself.
#### Namespaced sysctls
Namespaced sysctls are set with the `docker-options` plugin, and are translated into the pod's `securityContext.sysctls`. A `ps:restart` is required to apply them.
```shell
dokku docker-options:add node-js-app deploy "--sysctl net.ipv4.ip_unprivileged_port_start=1024"
```
Passing a non-namespaced sysctl this way fails the deploy rather than silently dropping the value, since it provably cannot take effect within a pod. Note this differs from the `docker-local` scheduler, where such an option is passed straight through to `docker run`.
Kubernetes further splits namespaced sysctls into a *safe* list that any pod may set, and everything else. A sysctl outside the safe list - `net.core.somaxconn`, for example - is rejected at pod admission unless the node's kubelet was started with a matching `allowed-unsafe-sysctls` value, which can be supplied at cluster initialization or when joining a node.
```shell
dokku scheduler-k3s:initialize --kubelet-args allowed-unsafe-sysctls=net.core.somaxconn
```
Dokku does not enforce the safe list itself, as its membership changes between Kubernetes releases. Only the namespaced/non-namespaced distinction, which is a property of the kernel, is validated.
#### Non-namespaced sysctls
Non-namespaced sysctls are a property of the node, not of any app, and are managed with the `node-sysctls:set` command. Dokku applies them via a privileged DaemonSet, so they reach every node without being told which nodes exist, cover nodes joined later, and are reapplied after a node reboots.
```shell
dokku scheduler-k3s:node-sysctls:set --global vm.max_map_count 262144
```
Omitting the value clears it.
```shell
dokku scheduler-k3s:node-sysctls:set --global vm.max_map_count
```
Clearing a sysctl stops Dokku managing it, but does not restore whatever the node had before. The last value written stays in place until that node reboots, which is how `sysctl -w` behaves everywhere else.
Sysctls can also be scoped to a [node profile](#node-profiles) with `--profile`, which applies them only to nodes joined with that profile.
```shell
dokku scheduler-k3s:node-sysctls:set --profile edge-workers vm.max_map_count 524288
```
A profile scope inherits everything set globally and overrides it on conflict, so each node is covered by exactly one DaemonSet and no two ever write the same value. Note that the server node created by `scheduler-k3s:initialize` never carries a profile label, so only globally-scoped sysctls reach it.
Use `node-sysctls:report` to see the resolved set for every scope.
```shell
dokku scheduler-k3s:node-sysctls:report
```
```shell
dokku scheduler-k3s:node-sysctls:report --format json
```
The DaemonSet pulls `busybox` and `registry.k8s.io/pause` by default. On an air-gapped cluster or one behind a registry mirror, point them elsewhere:
```shell
dokku scheduler-k3s:set --global node-sysctls-image registry.internal/busybox:1.36
```
```shell
dokku scheduler-k3s:set --global node-sysctls-pause-image registry.internal/pause:3.9
```
### Integrating Kustomize
Dokku supports integration with [Kustomize](https://kustomize.io/) to further customize the generated helm charts for app deployments. For example, a `config/kustomize/kustomization.yaml` file with the following contents will override the scale for each process deployed to `3`:
```yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- rendered.yaml
patches:
- patch: |-
- op: replace
path: /spec/replicas
value: 3
target:
group: apps
version: v1
kind: Deployment
```
When using Kustomize with Dokku, all Kustomize-files _must_ be placed in the `config/kustomize` folder, with a `kustomization.yaml` file being the entrypoint to Kustomize. Dokku will render the helm chart to a `rendered.yaml` file, and then execute Kustomize with the `config/kustomize` folder as the context.
See the [Kustomize](https://kustomize.io/) website for more details on how to use Kustomize.
### Using kubectl remotely
> [!WARNING]
@@ -574,22 +995,34 @@ The default value for the `kube-context` is an empty string, and will result in
### Customizing Helm Chart Properties
Dokku includes a number of helm charts by default with settings that are optimized for Dokku. That said, it may be useful to further customize the charts for a given environment. Users can customize which charts are installed by setting properties prefixed with `chart.$CHART_NAME.` with the `--global` flag.
Dokku includes a number of helm charts by default with settings that are optimized for Dokku. That said, it may be useful to further customize the charts for a given environment. Chart overrides are managed via the `scheduler-k3s:charts:set` command, which takes a `<chart-name>.<property>` argument and a value. Chart overrides are always global because helm charts are not managed on a per-app basis.
```shell
dokku scheduler-k3s:set --global chart.cert-manager.version 1.13.3
dokku scheduler-k3s:charts:set cert-manager.version 1.13.3
```
> [!NOTE]
> Properties follow dot-notation, and are expanded according to Helm's internal logic. See the [Helm documentation](https://helm.sh/docs/helm/helm_install/#helm-install) for `helm install` for further details.
Property names may contain `/` (e.g. for Kubernetes-style annotation keys such as `service.annotations.prometheus.io/scrape`) and values may span multiple lines; both are preserved verbatim.
To unset a chart property, omit the value from the `scheduler-k3s:set` call:
To unset a chart property, omit the value from the `scheduler-k3s:charts:set` call:
```shell
dokku scheduler-k3s:set --global chart.cert-manager.version
dokku scheduler-k3s:charts:set cert-manager.version
```
Configured chart overrides can be inspected with the `scheduler-k3s:charts:report` command. Without an argument, it lists every chart known to Dokku along with any configured overrides; passing a chart name scopes the report to that chart:
```shell
dokku scheduler-k3s:charts:report
dokku scheduler-k3s:charts:report cert-manager
dokku scheduler-k3s:charts:report --format json
```
> [!NOTE]
> The legacy form `dokku scheduler-k3s:set --global chart.<chart>.<property> <value>` continues to work but is deprecated and will be removed in a future major release. Migrate to `scheduler-k3s:charts:set` instead.
A `scheduler-k3s:ensure-charts` command with the `--force` flag is required after changing any chart properties in order to have them apply. This will install all charts, not just the ones that have changed.
```shell
@@ -599,9 +1032,38 @@ dokku scheduler-k3s:ensure-charts --force
Alternatively, a comma separated list of chart names can be specified to only force install the specified charts:
```shell
dokku scheduler-k3s:ensure-charts --force --chart-names cert-manager
dokku scheduler-k3s:ensure-charts --charts cert-manager
```
### Persistent storage
K3s apps mount persistent volumes through the Dokku storage plugin. A `storage:create --scheduler k3s` call provisions a PersistentVolumeClaim through a small per-entry helm release; `storage:mount <app> <name> --container-dir <path>` then attaches it to an app. Because storage entries are global, the same PVC can be mounted into multiple apps (for `ReadWriteMany` workloads) or into the same app at multiple subpaths.
```shell
# dynamically-provisioned PVC backed by Longhorn
dokku storage:create demo-data \
--scheduler k3s \
--size 2Gi \
--access-mode ReadWriteOnce \
--storage-class-name longhorn
dokku storage:mount demo demo-data --container-dir /data
dokku storage:wait demo-data
git push dokku master
```
For a hostPath-backed PV (no StorageClass), pass `<path>` as the second positional argument and omit `--storage-class-name`. The plugin renders both the PV and the PVC into the entry's helm release. The `--reclaim-policy` flag (`Retain` or `Delete`) controls whether the underlying PV survives `storage:destroy`. Annotations and labels set via `storage:annotations:set` and `storage:labels:set` propagate to both the PVC and the PV so backup tools (Velero, Longhorn snapshots) can find them.
The legacy `storage:mount <app> <host>:<container>` colon form is rejected on k3s apps; create a named entry instead. See [Persistent Storage](/docs/advanced-usage/persistent-storage.md) for the full command reference.
### Chart upgrade callbacks
Some chart version transitions require side-effects that a plain `helm upgrade` cannot perform. For example, the upgrade of `keda-add-ons-http` to `0.12.2` introduces breaking changes to deployment selectors, which are immutable in Kubernetes; the chart-managed deployments must be deleted before the upgrade can proceed.
Dokku handles these cases internally by registering version-targeted pre-upgrade and post-upgrade callbacks against affected charts. When `scheduler-k3s:ensure-charts` runs, the installed chart version is compared against the registered callbacks: any whose target version is greater than the currently installed version and at most the configured chart version are executed in ascending semver order, each bracketed around an upgrade to that intermediate version. A final upgrade to the configured chart version then completes the run.
These callbacks are not user-configurable. Failures during a callback or its surrounding upgrade abort the run, and a subsequent `scheduler-k3s:ensure-charts` resumes from the current state.
## Scheduler Interface
The following sections describe implemented and unimplemented scheduler functionality for the `k3s` scheduler.
@@ -613,6 +1075,12 @@ This plugin implements various functionality through `plugn` triggers to integra
- `apps:clone`
- `apps:destroy`
- `apps:rename`
- `docker-options`:
- The following docker options are translated into their kubernetes equivalents:
- `--cap-add`
- `--cap-drop`
- `--privileged`
- `--sysctl` (namespaced sysctls only, see [Setting kernel sysctls](#setting-kernel-sysctls))
- `cron`
- `enter`
- `deploy`
@@ -625,6 +1093,8 @@ This plugin implements various functionality through `plugn` triggers to integra
- Properties set by the `nginx` plugin will be respected, either by turning them into annotations or creating a custom server/location snippet that the `ingress-nginx` project can use. A `ps:restart` after changing any nginx properties is required in order to have them apply.
- The `nginx:access-logs` and `nginx:error-logs` commands will fetch logs from one running `ingress-nginx` pod.
- The `nginx:show-config` command will retrieve any `server` blocks associated with a domain attached to the app from one running `ingress-nginx` pod.
- `ps:restart`
- Supports targeting a single process type, see [Restarting apps](#restarting-apps)
- `ps:stop`
- `run`
- The `scheduler-post-run` trigger is not always triggered
@@ -643,7 +1113,39 @@ The following Dokku functionality is not implemented at this time.
### Logging support
App logs for the `logs` command are fetched by Dokku from running containers via the `kubectl` cli. Persisting logs via Vector is not implemented at this time. Users may choose to configure the Vector Kubernetes integration directly by following [this guide](https://vector.dev/docs/setup/installation/platforms/kubernetes/).
App logs for the `logs` command are fetched by Dokku from running containers via the Kubernetes api. While the `k3s` scheduler does not integrate with the `logs:vector-*` subcommands, it does respect the global `vector-sink` logs property. When that property is set, the `scheduler-k3s:ensure-charts` command can be utilized to reconfigure vector to ship kubernetes logs to the provided sink.
To setup log shipping, configure the global `vector-sink` property for the `logs` plugin.. Note that this can be run before _or_ after the `scheduler-k3s:ensure-charts` command - if run before, the `scheduler-k3s:ensure-charts` subcommand will pick up the value.
```shell
dokku logs:set --global vector-sink "console://?encoding[codec]=json"
```
Next, run the `scheduler-k3s:ensure-charts` command with the `vector` chart to force the `k3s` scheduler to reconfigure vector with the specified sink:
```shell
dokku scheduler-k3s:ensure-charts --charts vector
```
Please see the [vector logs documentation](/docs/deployment/logs.md#configuring-a-log-sink) for more information on specifying vector sinks.
#### Shipping cron task logs
The global `vector-cron-sink` property is also respected. When set, logs from cron task pods are routed to that sink instead of the sink configured for everything else, matching the behavior described in the [cron task log sink documentation](/docs/deployment/logs.md#configuring-a-cron-task-log-sink).
```shell
dokku logs:set --global vector-cron-sink "console://?encoding[codec]=text"
dokku scheduler-k3s:ensure-charts --charts vector
```
As with `vector-sink`, only the global property is respected - a per-app `vector-cron-sink` has no effect on the `k3s` scheduler.
Cron events carry the same `dokku_app` and `dokku_cron_id` fields as they do on the `docker-local` scheduler, so sink configuration referencing them is portable between the two.
Two differences are worth noting:
- Templated values must be base64 encoded. Sink values containing `{{ }}` are interpreted by Helm at chart install time rather than by Vector, so the `base64enc:` form documented under [log sink DSN format](/docs/deployment/logs.md#log-sink-dsn-format) is required.
- The `file` sink is not useful here. Vector runs as a DaemonSet agent, so a file path resolves to whichever node the agent is running on rather than to durable shared storage. Use a network sink and reference `dokku_cron_id` as a field instead of as a path component.
### Supported Resource Management Properties
@@ -656,3 +1158,32 @@ If unspecified for any task, the default reservation will be `.1` CPU and `128Mi
> [!NOTE]
> Cron tasks retrieve resource limits based on the computed cron task ID.
## Properties
### Settable properties
> [!NOTE]
> The `Report flags` column lists the CLI argument names accepted by `scheduler-k3s:report`. The JSON keys emitted by `scheduler-k3s:report --format json` are the same names with the leading `--scheduler-k3s-` stripped (e.g. `deploy-timeout`, `global-deploy-timeout`, `computed-deploy-timeout`). Legacy keys with the `scheduler-k3s-` prefix are also emitted during the 0.38.x deprecation window and will be removed in a future major release.
| Property | Scope | Default | Report flags | Description |
|---|---|---|---|---|
| `cert-issuer-kind` | app + global | `ClusterIssuer` | `--scheduler-k3s-cert-issuer-kind`, `--scheduler-k3s-global-cert-issuer-kind`, `--scheduler-k3s-computed-cert-issuer-kind` | Kind of the manually managed cert-manager issuer referenced by `cert-issuer-name`, either `Issuer` or `ClusterIssuer` |
| `cert-issuer-name` | app + global | none | `--scheduler-k3s-cert-issuer-name`, `--scheduler-k3s-global-cert-issuer-name`, `--scheduler-k3s-computed-cert-issuer-name` | Name of a manually managed cert-manager issuer to request certificates from, taking precedence over the letsencrypt integration. Set to `false` to opt an app out of a global value |
| `deploy-timeout` | app + global | `300s` | `--scheduler-k3s-deploy-timeout`, `--scheduler-k3s-global-deploy-timeout`, `--scheduler-k3s-computed-deploy-timeout` | Timeout for a single helm install/upgrade cycle |
| `image-pull-secrets` | app + global | none | `--scheduler-k3s-image-pull-secrets`, `--scheduler-k3s-global-image-pull-secrets`, `--scheduler-k3s-computed-image-pull-secrets` | Comma-separated list of Kubernetes secret names used to pull private images |
| `ingress-class` | global only | `nginx` | `--scheduler-k3s-global-ingress-class`, `--scheduler-k3s-computed-ingress-class` | IngressClass name used for app ingresses (e.g. `nginx`, `traefik`) |
| `kube-context` | global only | none | `--scheduler-k3s-global-kube-context`, `--scheduler-k3s-computed-kube-context` | Kube context name used by helm and kubectl invocations |
| `kubeconfig-path` | global only | `/etc/rancher/k3s/k3s.yaml` | `--scheduler-k3s-global-kubeconfig-path`, `--scheduler-k3s-computed-kubeconfig-path` | Filesystem path to the kubeconfig used to talk to the cluster |
| `kustomize-root-path` | app + global | `config/kustomize` | `--scheduler-k3s-kustomize-root-path`, `--scheduler-k3s-global-kustomize-root-path`, `--scheduler-k3s-computed-kustomize-root-path` | Path within the app to a kustomize root applied after the helm install |
| `letsencrypt-email-prod` | app + global | none | `--scheduler-k3s-letsencrypt-email-prod`, `--scheduler-k3s-global-letsencrypt-email-prod`, `--scheduler-k3s-computed-letsencrypt-email-prod` | Contact email for production certificates. App-level values render a per-app namespaced Issuer; otherwise the shared production ClusterIssuer is used |
| `letsencrypt-email-stag` | app + global | none | `--scheduler-k3s-letsencrypt-email-stag`, `--scheduler-k3s-global-letsencrypt-email-stag`, `--scheduler-k3s-computed-letsencrypt-email-stag` | Contact email for staging certificates. App-level values render a per-app namespaced Issuer; otherwise the shared staging ClusterIssuer is used |
| `letsencrypt-server` | app + global | `prod` | `--scheduler-k3s-letsencrypt-server`, `--scheduler-k3s-global-letsencrypt-server`, `--scheduler-k3s-computed-letsencrypt-server` | ACME directory (`prod` or `staging`) used for app certificates, or `false` to disable all automatic certificate issuance |
| `namespace` | app + global | `default` | `--scheduler-k3s-namespace`, `--scheduler-k3s-global-namespace`, `--scheduler-k3s-computed-namespace` | Kubernetes namespace into which the app's resources are installed |
| `network-interface` | global only | `eth0` | `--scheduler-k3s-global-network-interface`, `--scheduler-k3s-computed-network-interface` | Host network interface used by k3s |
| `node-sysctls-image` | global only | `busybox:1.36` | `--scheduler-k3s-global-node-sysctls-image` | Image used to apply node-level sysctls, override for air-gapped clusters |
| `node-sysctls-pause-image` | global only | `registry.k8s.io/pause:3.9` | `--scheduler-k3s-global-node-sysctls-pause-image` | Image keeping the node sysctls daemonset pods running |
| `rollback-on-failure` | app + global | `false` | `--scheduler-k3s-rollback-on-failure`, `--scheduler-k3s-global-rollback-on-failure`, `--scheduler-k3s-computed-rollback-on-failure` | When `true`, helm rolls back the release if a deploy fails |
| `shm-size` | app + global | none | `--scheduler-k3s-shm-size`, `--scheduler-k3s-global-shm-size`, `--scheduler-k3s-computed-shm-size` | `/dev/shm` size override applied to app containers |
| `token` | global only | none | `--scheduler-k3s-global-token` (masked as `*******` in default stdout output; the raw value is returned when queried via `--format json` or when this flag is requested explicitly) | Cluster join token used by `scheduler-k3s:cluster-add` |
| `chart.<chart-name>.<property>` | global only | none | `--scheduler-k3s-global-chart.<chart-name>.<property>` (dynamic per chart/property) | Override a value injected into the helm chart named `<chart-name>` (one row per chart/property pair). Manage these via the dedicated `scheduler-k3s:charts:set` / `scheduler-k3s:charts:report` commands; the `scheduler-k3s:set`/`scheduler-k3s:report` form is deprecated. |

View File

@@ -45,6 +45,26 @@ The default value may be set by passing an empty value for the option.
dokku scheduler:set --global selected
```
### Setting the app shell
The shell used for `dokku run` and `dokku enter` invocations against an app can be customized via the `shell` property. This is useful for images that ship with a non-default shell - for example, alpine-based images that only have `/bin/sh`.
```shell
dokku scheduler:set node-js-app shell sh
```
The `shell` property can also be set globally:
```shell
dokku scheduler:set --global shell sh
```
The default value (an empty string, which lets the scheduler pick its own default) may be restored by passing an empty value:
```shell
dokku scheduler:set node-js-app shell
```
### Displaying scheduler reports for an app
You can get a report about the app's scheduler status using the `scheduler:report` command:
@@ -60,14 +80,16 @@ dokku scheduler:report
Scheduler selected: herokuish
=====> python-sample scheduler information
Scheduler computed selected: dockerfile
Scheduler global selected: herokuish
Scheduler global selected:
Scheduler selected: dockerfile
=====> ruby-sample scheduler information
Scheduler computed selected: herokuish
Scheduler global selected: herokuish
Scheduler computed selected: docker-local
Scheduler global selected:
Scheduler selected:
```
The `selected` and `global-selected` keys hold the raw per-app and global value respectively, and are empty when nothing has been set. The `computed-selected` key holds the effective value used at deploy time, falling back to the global value (where one has been set) and then to the built-in default of `docker-local`.
You can run the command for a specific app also.
```shell
@@ -76,6 +98,8 @@ dokku scheduler:report node-js-app
```
=====> node-js-app scheduler information
Scheduler computed selected: herokuish
Scheduler global selected:
Scheduler selected: herokuish
```
@@ -98,7 +122,7 @@ At this time, the following dokku commands are used to implement a complete sche
- `apps:clone`: handles app cloning
- triggers: post-app-clone-setup
- `cron`: generates cron tasks for the app
- triggers: cron-write
- triggers: scheduler-uses-host-cron, scheduler-cron-write
- `deploy`: deploys app proceses and checks the status of a deploy
- triggers: scheduler-app-status, scheduler-deploy, scheduler-is-deployed, scheduler-logs-failed
- `enter`: enters a running container
@@ -112,7 +136,9 @@ At this time, the following dokku commands are used to implement a complete sche
- `run:logs`: fetches running container logs
- triggers: scheduler-run-logs
- `ps:stop`: stops app processes
- triggers: scheduler-stop
- triggers: scheduler-stop, scheduler-cron-write
- `ps:start`: starts app processes
- triggers: scheduler-deploy, scheduler-cron-write
- `ps:inspect`: outputs inspect output for processes in an app
- triggers: scheduler-inspect
@@ -121,3 +147,15 @@ Schedulers may decide to omit some functionality here, or use plugin triggers to
Schedulers can use any tools available on the system to build the docker image, and may even be used to interact with off-server systems. The only current requirement is that the scheduler must have access to the image built in the build phase. If this is not the case, the registry plugin can be used to push the image to a registry that the scheduler software can access.
Deployment tasks are currently executed directly on the primary Dokku server.
## Properties
### Settable properties
> [!NOTE]
> The `Report flags` column lists the CLI argument names accepted by `scheduler:report`. The JSON keys emitted by `scheduler:report --format json` are the same names with the leading `--scheduler-` stripped (e.g. `selected`, `global-selected`, `computed-selected`). Legacy keys with the `scheduler-` prefix are also emitted during the 0.38.x deprecation window and will be removed in a future major release.
| Property | Scope | Default | Report flags | Description |
|---|---|---|---|---|
| `selected` | app + global | `docker-local` | `--scheduler-selected`, `--scheduler-global-selected`, `--scheduler-computed-selected` | Scheduler plugin used to deploy this app (`docker-local`, `k3s`, etc.) |
| `shell` | app + global | none | `--scheduler-shell`, `--scheduler-global-shell`, `--scheduler-computed-shell` | Shell used by `enter`/`run` commands when entering a container |

View File

@@ -28,7 +28,9 @@ You may both create user-defined checks for web processes using the `healthcheck
### wait-to-retire
After a successful deploy, the grace period given to old containers before they are stopped/terminated is determined by the value of `wait-to-retire`. This is useful for ensuring completion of long-running HTTP connections.
After a successful deploy, Dokku immediately sends `SIGTERM` to old containers so the application can begin a graceful shutdown (draining in-flight connections, flushing buffers, and so on) the moment proxy traffic switches to the new containers. The old containers are then left running for the `wait-to-retire` grace period before being stopped, which sends `SIGTERM` again and ultimately `SIGKILL` after `stop-timeout-seconds`. This mirrors Heroku's [dyno shutdown behavior](https://devcenter.heroku.com/articles/dyno-shutdown-behavior).
The `wait-to-retire` value controls the grace period and is useful for ensuring completion of long-running HTTP connections.
```shell
dokku checks:set node-js-app wait-to-retire 30
@@ -36,18 +38,21 @@ dokku checks:set node-js-app wait-to-retire 30
Defaults to `60`.
## Configuring check settings using the `config` plugin
## Setting stop grace period
There are certain settings that can be configured via environment variables:
You can set the `stop-timeout-seconds` property on the `ps` plugin to change this value (default: `30`). See the [process management documentation](/docs/processes/process-management.md#changing-process-management-settings) for more information.
- `DOKKU_DEFAULT_CHECKS_WAIT`: (default: `10`) If no user-defined checks are specified - or if the process being checked is not a `web` process - this is the period of time Dokku will wait before checking that a container is still running.
- `DOKKU_DOCKER_STOP_TIMEOUT`: (default: `10`) Configurable grace period given to the `docker stop` command. If a container has not stopped by this time, a `kill -9` signal or equivalent is sent in order to force-terminate the container. Both the `ps:stop` and `apps:destroy` commands *also* respect this value. If not specified, the Docker defaults for the [`docker stop` command](https://docs.docker.com/engine/reference/commandline/stop/) will be used.
## Configuring check settings
The following settings may also be specified in the `app.json` file, though are available as environment variables in order to ease application reuse.
There are certain settings that can be configured via the `checks` plugin properties:
- `DOKKU_CHECKS_WAIT`: (default: `5`) Wait this many seconds for the container to start before running checks.
- `DOKKU_CHECKS_TIMEOUT`: (default: `30`) Wait this many seconds for each response before marking it as a failure.
- `DOKKU_CHECKS_ATTEMPTS`: (default: `5`) Number of retries for to run for a specific check before marking it as a failure
- `default-wait`: (default: `10`) If no user-defined checks are specified - or if the process being checked is not a `web` process - this is the period of time Dokku will wait before checking that a container is still running. Set globally via `dokku checks:set --global default-wait <value>`.
The following settings may also be specified in the `app.json` file, though are available as properties in order to ease application reuse.
- `wait`: (default: `5`) Wait this many seconds for the container to start before running checks. Set via `dokku checks:set <app> wait <value>`.
- `timeout`: (default: `30`) Wait this many seconds for each response before marking it as a failure. Set via `dokku checks:set <app> timeout <value>`.
- `attempts`: (default: `5`) Number of retries for to run for a specific check before marking it as a failure. Set via `dokku checks:set <app> attempts <value>`.
## Skipping and Disabling Checks
@@ -62,10 +67,6 @@ dokku checks:skip node-js-app worker,web
```
-----> Skipping zero downtime for app's (node-js-app) proctypes (worker,web)
-----> Unsetting node-js-app
-----> Unsetting DOKKU_CHECKS_DISABLED
-----> Setting config vars
DOKKU_CHECKS_SKIPPED: worker,web
```
Zero downtime checks can also be disabled completely. This will stop old containers *before* new ones start, which may result in broken connections and downtime if your application fails to boot properly.
@@ -76,10 +77,6 @@ dokku checks:disable node-js-app worker
```
-----> Disabling zero downtime for app's (node-js-app) proctypes (worker)
-----> Setting config vars
DOKKU_CHECKS_DISABLED: worker
-----> Setting config vars
DOKKU_CHECKS_SKIPPED: web
```
### Displaying checks reports for an app
@@ -98,22 +95,24 @@ dokku checks:report
Checks disabled list: none
Checks skipped list: none
Checks computed wait to retire: 60
Checks global wait to retire: 60
Checks global wait to retire:
Checks wait to retire:
=====> python-app checks information
Checks disabled list: none
Checks skipped list: none
Checks computed wait to retire: 60
Checks global wait to retire: 60
Checks global wait to retire:
Checks wait to retire:
=====> ruby-app checks information
Checks disabled list: _all_
Checks skipped list: none
Checks computed wait to retire: 60
Checks global wait to retire: 60
Checks global wait to retire:
Checks wait to retire:
```
The `wait-to-retire` and `global-wait-to-retire` keys hold the raw per-app and global value respectively, and are empty when nothing has been set. The `computed-wait-to-retire` key holds the effective value used at deploy time, falling back to the global value (where one has been set) and then to the built-in default of `60`.
You can run the command for a specific app also.
```shell
@@ -123,10 +122,10 @@ dokku checks:report node-js-app
```
=====> node-js-app checks information
Checks disabled list: none
Checks skipped list: none
Checks skipped list: none
Checks computed wait to retire: 60
Checks global wait to retire: 60
Checks wait to retire:
Checks global wait to retire:
Checks wait to retire:
```
You can pass flags which will output only the value of the specific information you want. For example:
@@ -266,3 +265,11 @@ dokku checks:run node-js-app web.3
-----> Running pre-flight checks
Invalid container id specified (APP.web.3)
```
## Properties
### Settable properties
| Property | Scope | Default | Report flags | Description |
|---|---|---|---|---|
| `wait-to-retire` | app + global | `60` | `--checks-wait-to-retire`, `--checks-global-wait-to-retire`, `--checks-computed-wait-to-retire` | Seconds to wait between deploying the new container and stopping the old one |

View File

@@ -0,0 +1,316 @@
# Dokku Architecture
This document provides a developer-focused overview of Dokku's internal architecture. It is intended for contributors who want to understand how Dokku works under the hood before diving into the codebase.
## High-Level Architecture
Dokku is a Docker-powered Platform as a Service (PaaS) that provides a Heroku-like deployment experience. The following diagram shows the main components and their interactions:
```
+------------------+
| User/Client |
+--------+---------+
|
| SSH / git push
v
+--------+---------+
| dokku binary |
| (bash script) |
+--------+---------+
|
| parse_args / execute_dokku_cmd
v
+--------+---------+
| Plugin System |
| (plugn) |
+--------+---------+
|
| triggers / subcommands
v
+--------+---------+ +------------------+
| Core Plugins |---->| Docker / K8s |
| (apps, git, | | Runtime |
| config, etc.) | +------------------+
+------------------+
```
**Key components:**
- **dokku binary**: The main entry point (`/dokku`), a bash script that handles authentication, argument parsing, and routes commands to plugins
- **Plugin System**: Uses [plugn](https://github.com/dokku/plugn) to execute triggers and discover commands
- **Core Plugins**: Implement all Dokku functionality (apps, git, config, builders, schedulers, proxies, etc.)
- **Runtime**: Docker (default via `scheduler-docker-local`) or Kubernetes (via `scheduler-k3s`)
## Directory Structure
### Source Tree
```
dokku/
├── dokku # Main CLI entry point (bash script)
├── plugins/ # All plugin source code
│ ├── apps/ # App management
│ ├── git/ # Git push handling
│ ├── config/ # Environment variables
│ ├── builder-*/ # Build backends (herokuish, pack, dockerfile, etc.)
│ ├── scheduler-*/ # Deployment schedulers (docker-local, k3s)
│ ├── *-vhosts/ # Proxy implementations (nginx, traefik, caddy, etc.)
│ └── common/ # Shared functions and utilities
├── docs/ # Documentation (markdown)
├── debian/ # Debian packaging files
├── contrib/ # Installation scripts and helpers
└── tests/ # Integration tests (bats)
```
### Runtime Directories
When Dokku is installed, it creates the following directory structure:
```
/var/lib/dokku/
├── core-plugins/ # Core plugin binaries (installed from source)
│ ├── available/ # All available core plugins
│ └── enabled/ # Symlinks to enabled plugins
├── plugins/ # Community plugins
│ ├── available/
│ └── enabled/
└── data/ # Plugin data storage
└── <plugin>/ # Per-plugin data
└── <app>/ # Per-app properties
$DOKKU_ROOT (~dokku by default)
├── <app>/ # Per-app data
│ ├── refs/ # Git refs
│ ├── HEAD # Current git HEAD
│ ├── tls/ # SSL certificates
│ └── ... # Other app-specific files
└── .dokkurc/ # Global configuration overrides
```
### Plugin Directory Layout
Each plugin follows a consistent structure:
```
plugins/<plugin-name>/
├── plugin.toml # Plugin metadata (description, version)
├── commands # Help output and catch-all command handler
├── subcommands/ # Individual command implementations
│ ├── default # Default command (e.g., `dokku apps`)
│ └── <command> # Named commands (e.g., `dokku apps:create`)
├── functions # Public functions for other plugins to source
├── internal-functions # Private functions
├── triggers.go # Go-based trigger implementations
├── *.go # Additional Go code
└── Makefile # Build configuration
```
## Plugin System Architecture
Dokku's functionality is entirely implemented through plugins. This architecture provides:
- **Extensibility**: Add new features without modifying core code
- **Loose coupling**: Plugins communicate via well-defined triggers
- **Composability**: Mix and match builders, schedulers, and proxies
### Plugin Communication via Triggers
Plugins communicate through the **trigger system** powered by [plugn](https://github.com/dokku/plugn). When a trigger is fired, plugn executes matching scripts from all enabled plugins:
```
+---------------+ plugn trigger +---------------+
| Plugin A | -------------------> | Plugin B |
| (fires event) | "post-deploy" | (listens for |
+---------------+ | event) |
+---------------+
|
v
+---------------+
| Plugin C |
| (also listens)|
+---------------+
```
**Trigger execution flow:**
1. A plugin calls `plugn trigger <trigger-name> [args...]`
2. plugn searches `$PLUGIN_ENABLED_PATH/*/` for files named `<trigger-name>`
3. Each matching executable is run with the provided arguments
4. Triggers can return data via stdout or signal errors via exit codes
**Key trigger categories:**
| Category | Examples | Purpose |
|----------|----------|---------|
| App lifecycle | `post-create`, `pre-delete`, `post-deploy` | React to app events |
| Build | `builder-detect`, `pre-build`, `builder-build` | Control build process |
| Deploy | `scheduler-deploy`, `check-deploy` | Manage deployments |
| Proxy | `proxy-build-config`, `nginx-pre-reload` | Configure reverse proxy |
| Git | `git-pre-pull`, `receive-app` | Handle git operations |
For the complete list of triggers, see [Plugin Triggers](/docs/development/plugin-triggers.md).
### Calling Triggers from Go Code
Go-based plugins use the `common.CallPlugnTrigger` function:
```go
result, err := common.CallPlugnTrigger(common.PlugnTriggerInput{
Trigger: "post-deploy",
Args: []string{appName, port, ip, imageTag},
})
```
## Command Flow
When a user runs a command like `dokku apps:list`, here's what happens:
```
User runs: ssh dokku@host apps:list
|
v
+-------------------+-------------------+
| dokku bash script |
| 1. Source /etc/default/dokku |
| 2. Set DOKKU_ROOT, PLUGIN_PATH |
| 3. Source common/functions |
| 4. Call parse_args() |
| 5. Check user permissions |
+-------------------+-------------------+
|
v
+-------------------+-------------------+
| execute_dokku_cmd() |
| 1. Handle plugin aliases |
| 2. Check for subcommands/default |
| 3. Check for subcommands/<cmd> |
| 4. Fall back to commands scripts |
+-------------------+-------------------+
|
v
+-------------------+-------------------+
| plugins/apps/subcommands/list |
| (executes the actual command) |
+-------------------+-------------------+
```
**Command resolution order:**
1. Check `$PLUGIN_ENABLED_PATH/<plugin>/subcommands/default` for the default command
2. Check `$PLUGIN_ENABLED_PATH/<plugin>/subcommands/<command>` for named commands
3. Iterate through all `$PLUGIN_ENABLED_PATH/*/commands` scripts as fallback
## Deployment Pipeline
When code is pushed via `git push dokku@host:myapp`, Dokku executes a multi-stage pipeline:
```
+-------------+ +-------------+ +-------------+ +-------------+
| Receive |--->| Build |--->| Release |--->| Deploy |
+-------------+ +-------------+ +-------------+ +-------------+
| | | |
v v v v
git-hook builder-detect builder-release scheduler-deploy
receive-app pre-build core-post-deploy
post-extract builder-build post-deploy
```
### Stage 1: Receive
The git receive stage handles the incoming push and prepares the source code:
1. `git-hook` receives the push and validates the branch
2. `receive-app` trigger is fired
3. Source code is extracted to a temporary directory
4. `post-extract` trigger allows modification of source
### Stage 2: Build
The build stage creates a Docker image from the source:
1. `builder-detect` determines the builder type (herokuish, pack, dockerfile, etc.)
2. `pre-build` trigger runs pre-build hooks
3. `builder-build` creates the Docker image
4. `post-build` trigger runs post-build hooks
### Stage 3: Release
The release stage prepares the image for deployment:
1. `pre-release-builder` allows image modifications
2. `builder-release` sets environment variables in the image
3. `post-release-builder` runs final release hooks
### Stage 4: Deploy
The deploy stage starts containers and configures networking:
1. `scheduler-deploy` starts new containers
2. `check-deploy` runs health checks
3. `core-post-deploy` switches traffic to new containers
4. `post-deploy` runs deployment tasks
5. Old containers are retired
## State Management
Dokku uses a file-based state system for simplicity and transparency.
### Property System
Plugin-specific configuration is stored in the property system:
```
/var/lib/dokku/data/<plugin>/<app>/<property>
```
Properties are managed via helper functions:
```bash
# Shell
fn-plugin-property-write "git" "$APP" "deploy-branch" "main"
fn-plugin-property-get "git" "$APP" "deploy-branch"
```
```go
// Go
common.PropertyWrite("git", appName, "deploy-branch", "main")
common.PropertyGet("git", appName, "deploy-branch")
```
### Per-App Data
Application-specific data sometimes lives in `$DOKKU_ROOT/<app>/`:
- `refs/` - Git references
- `tls/` - SSL certificates
- `ENV` - Environment file
- Container IDs, port mappings, etc.
All non-git code is being migrated to the property system.
### Global Configuration
Global settings can be configured via:
- `/etc/default/dokku` - System-level defaults
- `$DOKKU_ROOT/dokkurc` - User-level configuration
- `$DOKKU_ROOT/.dokkurc/*` - Additional configuration files
## Key Design Decisions
| Decision | Rationale |
|----------|-----------|
| **Plugin-based architecture** | Enables extensibility without modifying core code. Community plugins can add databases, caching, and other services. |
| **Bash + Go hybrid** | Bash for orchestration and simple commands; Go for performance-critical operations and complex logic. |
| **Trigger system** | Loose coupling between plugins. Plugins don't need to know about each other; they just fire and respond to events. |
| **File-based state** | Simple, transparent, and easy to debug. No database dependency. State can be inspected with standard Unix tools. |
| **Docker as foundation** | Leverages Docker's container runtime, networking, and image management. Allows multiple scheduler backends. |
## Further Reading
- [Plugin Creation](/docs/development/plugin-creation.md) - How to create custom plugins
- [Plugin Triggers](/docs/development/plugin-triggers.md) - Complete list of available triggers
- [Testing](/docs/development/testing.md) - How to test Dokku and plugins
- [Application Deployment](/docs/deployment/application-deployment.md) - User-facing deployment guide
- [Builder Management](/docs/deployment/builders/builder-management.md) - Available build backends
- [Scheduler Management](/docs/deployment/schedulers/scheduler-management.md) - Available scheduler backends

View File

@@ -119,6 +119,21 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
# TODO
```
### `app-json-is-valid`
- Description: Checks to see if the provided app.json file is valid
- Invoked by: Appjson extraction during deployment
- Arguments: `$APP $APP_JSON_PATH`
- Example:
```shell
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
# TODO
```
### `app-maybe-create`
- Description: Creates an app (gated by whether this is globally enabled or not)
@@ -372,6 +387,66 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
# TODO
```
### `certs-get`
- Description: Returns the certificate or key content for an app
- Invoked by: `scheduler-k3s`
- Arguments: `$APP $KEY_TYPE`
- Example:
```shell
#!/usr/bin/env bash
# Returns the certificate or key content for an app
# KEY_TYPE should be "crt" or "key"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
APP="$1"; KEY_TYPE="$2"
APP_SSL_PATH="$DOKKU_ROOT/$APP/tls"
if [[ "$KEY_TYPE" == "crt" ]]; then
cat "$APP_SSL_PATH/server.crt"
elif [[ "$KEY_TYPE" == "key" ]]; then
cat "$APP_SSL_PATH/server.key"
fi
```
### `certs-remove`
- Description: Removes the SSL cert/key pair from an app and fires the `post-certs-remove` and `post-domains-update` triggers. Fails if no app-specific SSL endpoint is defined.
- Invoked by:
- Arguments: `$APP`
- Example:
```shell
#!/usr/bin/env bash
# Removes the SSL endpoint for an app
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
APP="$1"
dokku certs:remove "$APP"
```
### `certs-set`
- Description: Installs an SSL cert/key pair onto an app and fires the `post-certs-update` and `post-domains-update` triggers. `$CRT_FILE` and `$KEY_FILE` must be paths to readable PEM-encoded files.
- Invoked by:
- Arguments: `$APP $CRT_FILE $KEY_FILE`
- Example:
```shell
#!/usr/bin/env bash
# Installs a cert/key pair for an app
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
APP="$1"; CRT_FILE="$2"; KEY_FILE="$3"
dokku certs:add "$APP" "$CRT_FILE" "$KEY_FILE"
```
### `check-deploy`
- Description: Allows you to run checks on a deploy before Dokku allows the container to handle requests.
@@ -506,6 +581,36 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
# TODO
```
### `config-migrate-env`
- Description: Drains the pre-0.38 `$DOKKU_ROOT/ENV` and `$DOKKU_ROOT/<app>/ENV` files into the config property path, removing each file once it has been drained. A file found at the old path after its migration has been recorded is never imported: the config path holds every change made since, so the file is removed when it agrees with the current config and otherwise moved aside to `ENV.migrated`. Idempotent, and safe to call from an install trigger that runs before the config plugin's own.
- Invoked by: `common` when migrating deprecated config vars to plugin properties, checks plugin
- Arguments: none
- Example:
```shell
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
plugn trigger config-migrate-env
```
### `config-set`
- Description: Sets one or more config values for an app without restarting (when --no-restart flag is specified)
- Invoked by: app-json plugin
- Arguments: `[--no-restart] $APP $KEY1=VALUE1 [$KEY2=VALUE2 ...]`
- Example:
```shell
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
# TODO
```
### `core-post-deploy`
> To avoid issues with community plugins, this plugin trigger should be used _only_ for core plugins. Please avoid using this trigger in your own plugins.
@@ -567,7 +672,7 @@ APP="$1"; PROPERTY="$2"
### `cron-entries`
- Description: Allows injecting cron entries into the written out scheduled cron task list. Each entry is newline delimited, and individual entries come in the form `$SCHEDULE;$FULL_COMMAND;$ARBITRARY_DATA`. Individual implementations of cron writing can decide whether and how to include these cron entries. The `ARBITRARY_DATA` includes the log file path for the basic `docker-local` cron implementation.
- Description: Allows injecting cron tasks into the written out scheduled cron task list. Each entry is newline delimited, and individual tasks come in the form `$SCHEDULE;$FULL_COMMAND;$ARBITRARY_DATA`. Individual implementations of cron writing can decide whether and how to include these cron tasks. The `ARBITRARY_DATA` includes the log file path for the basic `docker-local` cron implementation.
- Invoked by:
- Arguments: `$DOKKU_SCHEDULER`
- Example:
@@ -583,22 +688,6 @@ DOKKU_SCHEDULER="$1"
# TODO
```
### `cron-write`
- Description: Force triggers writing out cron entries
- Invoked by:
- Arguments:
- Example:
```shell
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
# TODO
```
### `dependencies`
- Description: Used to install system-level dependencies.
@@ -771,7 +860,7 @@ APP="$1"; IMAGE_SOURCE_TYPE="$2"
### `docker-args-process-deploy`
- Description: `$PROC_TYPE` may be set to magic `_all_` process type to signify global docker deploy options.
- Description: emits docker arguments scoped to a specific Procfile process type. The `docker-options` plugin implements this trigger to surface options registered via `docker-options:add --process <PROC>`. `$PROC_TYPE` may be empty (or set to the magic `_default_` value) to signify default-scope docker deploy options.
- Invoked by: `dokku deploy`
- Arguments: `$APP $IMAGE_SOURCE_TYPE $IMAGE_TAG [$PROC_TYPE $CONTAINER_INDEX]`
- Example:
@@ -1266,6 +1355,8 @@ esac
The default templates are viewable here: [plugins/nginx-vhosts/templates/](https://github.com/dokku/dokku/tree/master/plugins/nginx-vhosts/templates)
Overriding the `validate-config` template is the supported way to make deploy-time pre-validation aware of directives from nginx modules that the host loads via `load_module` in its global config. As implementing this trigger requires a [custom plugin](/docs/development/plugin-creation.md), see [Custom nginx modules](/docs/appendices/file-formats/nginx-conf-sigil.md#custom-nginx-modules) for a complete example.
### `nginx-dokku-template-source`
- Description: Return the path to a `sigil` template that should be used to generate the `dokku.conf` nginx configuration file.
@@ -1700,7 +1791,7 @@ curl "http://httpstat.us/200"
### `post-domains-update`
- Description: Allows you to run commands once the domain for an app has been updated. It also sends in the command that has been used. This can be "add", "clear" or "remove". The third argument will be the optional list of domains
- Invoked by: `dokku domains:add`, `dokku domains:clear`, `dokku domains:remove`, `dokku domains:set`
- Invoked by: `dokku domains:add`, `dokku domains:clear`, `dokku domains:remove`, `dokku domains:reset`, `dokku domains:set`
- Arguments: `$APP` `action name` `domains`
- Example:
@@ -2051,7 +2142,9 @@ CMD="cat > gm && \
dpkg -s graphicsmagick &>/dev/null || \
(apt-get update -qq && apt-get -qq -y --no-install-recommends install graphicsmagick && apt-get clean)"
CID=$(docker run $DOKKU_GLOBAL_RUN_ARGS -i -a stdin $IMAGE /bin/bash -c "$CMD")
CID_FILE=/tmp/cid-file
docker run $DOKKU_GLOBAL_RUN_ARGS -i -a stdin --cidfile /tmp/cid-file "$IMAGE" /bin/bash -c "$CMD"
CID="$(cat "$CID_FILE")"
test $(docker wait $CID) -eq 0
DOCKER_COMMIT_LABEL_ARGS=("--change" "LABEL org.label-schema.schema-version=1.0" "--change" "LABEL org.label-schema.vendor=dokku" "--change" "LABEL com.dokku.app-name=$APP")
docker commit "${DOCKER_COMMIT_LABEL_ARGS[@]}" $CID $IMAGE >/dev/null
@@ -2443,22 +2536,42 @@ DOKKU_SCHEDULER="$1"; APP="$2";
# TODO
```
### `scheduler-deploy`
### `scheduler-cron-write`
> [!WARNING]
> The scheduler plugin trigger apis are under development and may change
> between minor releases until the 1.0 release.
- Description: Allows you to run scheduler commands when an app is deployed
- Invoked by: `dokku deploy`
- Arguments: `$DOKKU_SCHEDULER $APP $IMAGE_TAG`
- Description: Force triggers writing out cron tasks. Arguments are optional. The `cron` plugin implements this for host-crontab schedulers (regenerating the whole `dokku` user crontab when the scheduler uses host cron or when no scheduler is given); self-managed schedulers such as `k3s` implement it to update their own cron backend.
- Invoked by: `ps:start`, `ps:stop`, `cron:set`, `apps:destroy`
- Arguments: `$DOKKU_SCHEDULER $APP`
- Example:
```shell
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
DOKKU_SCHEDULER="$1"; APP="$2"; IMAGE_TAG="$3";
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
# TODO
```
### `scheduler-deploy`
> [!WARNING]
> The scheduler plugin trigger apis are under development and may change
> between minor releases until the 1.0 release.
- Description: Allows you to run scheduler commands when an app is deployed. `$PROCESS_TYPE` is empty for a normal deploy and set when a single process type is targeted, as by `dokku ps:restart <app> <process-type>`, in which case only that process type should be redeployed.
- Invoked by: `dokku deploy`
- Arguments: `$DOKKU_SCHEDULER $APP $IMAGE_TAG $PROCESS_TYPE`
- Example:
```shell
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
DOKKU_SCHEDULER="$1"; APP="$2"; IMAGE_TAG="$3"; PROCESS_TYPE="$4";
# TODO
```
@@ -2588,6 +2701,7 @@ DOKKU_SCHEDULER="$1"; APP="$2";
> [!WARNING]
> The scheduler plugin trigger apis are under development and may change
> between minor releases until the 1.0 release.
- Description: Allows you to run scheduler commands when retrieving failed container logs
- Invoked by: `dokku nginx:access-logs` and `dokku nginx:error-logs`
- Arguments: `$DOKKU_SCHEDULER $APP $PROXY_TYPE $LOG_TYPE $TAIL $NUM_LINES`
@@ -2783,6 +2897,26 @@ DOKKU_SCHEDULER="$1"; APP="$2"; CONTAINER="$3"; TAIL="$4"; PRETTY_PRINT="$5"; NU
# TODO
```
### `scheduler-run-retire`
> [!WARNING]
> The scheduler plugin trigger apis are under development and may change
> between minor releases until the 1.0 release.
- Description: Allows you to retire containers started by the `run` and `cron:run` commands that have exceeded their active deadline
- Invoked by: `dokku run:retire`, `dokku ps:retire`
- Arguments: `$DOKKU_SCHEDULER $APP`
- Example:
```shell
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
DOKKU_SCHEDULER="$1"; APP="$2";
# TODO
```
### `scheduler-run-stop`
> [!WARNING]
@@ -2823,20 +2957,75 @@ DOKKU_SCHEDULER="$1"; APP="$2"; REMOVE_CONTAINERS="$3";
# TODO
```
### `storage-list`
### `storage-list` (deprecated)
- Description: Returns a list of storage mounts
- Invoked by: `dokku storage:list` and `dokku deploy`
> [!WARNING]
> Deprecated as of 0.38.0. The trigger handler still functions for back-compat
> with external plugins but emits a deprecation warning on every invocation.
> In-process callers should use the `storage-app-mounts` trigger instead, or
> the `storage` Go package directly.
- Description: Returns a list of storage mounts for an app
- Invoked by: external plugins (the core `storage:list` subcommand no longer uses it)
- Arguments: `$APP $PHASE $FORMAT`
### `storage-app-mounts`
- Description: Returns the (entry, attachment) pairs an app has for the given phase, in JSON. Schedulers consume this to render volume mounts.
- Invoked by: scheduler plugins during deploy
- Arguments: `$APP $PHASE`
- Output: a JSON array of objects shaped `{"entry": Entry, "attachment": Attachment}`
### `storage-create`
- Description: Provisions or updates the underlying volume for a k3s storage entry. Called when `storage:create` or `storage:set` runs against a k3s entry. Receives the JSON-encoded entry on stdin.
- Invoked by: `dokku storage:create`, `dokku storage:set`
- Arguments: `$ENTRY_NAME`
- Stdin: JSON-encoded `Entry` payload
### `storage-destroy`
- Description: Releases the underlying volume for a k3s storage entry. Called when `storage:destroy` runs against a k3s entry. Receives the JSON-encoded entry on stdin.
- Invoked by: `dokku storage:destroy`
- Arguments: `$ENTRY_NAME`
- Stdin: JSON-encoded `Entry` payload
### `storage-status`
- Description: Returns the current status of a storage entry's underlying volume. Used by `storage:wait` to poll the cluster. The handler should print one line: `Bound`, `Pending`, or `Lost` for k3s entries.
- Invoked by: `dokku storage:wait`
- Arguments: `$ENTRY_NAME`
- Stdin: JSON-encoded `Entry` payload
### `scheduler-storage-exec`
- Description: Runs an interactive or non-interactive command against a storage entry. The storage plugin fires this with `<scheduler>` as the first arg; each scheduler plugin's handler matches against its own scheduler name and either handles or no-ops, mirroring `scheduler-deploy` / `scheduler-app-status`. Plugn forwards stdin/stdout/stderr to the handler subprocess so an interactive shell streams cleanly. The handler exits with the underlying tool's status code so `dokku storage:exec` propagates exit codes verbatim.
- Invoked by: `dokku storage:exec`
- Arguments: `$SCHEDULER $ENTRY_NAME $IMAGE [-- $cmd...]`
- Flags: `--interactive` (stdin is open), `--tty` (stdin is a terminal), `--as-user <uid>` (override `entry.Chown`).
### `scheduler-uses-host-cron`
> [!WARNING]
> The scheduler plugin trigger apis are under development and may change
> between minor releases until the 1.0 release.
- Description: Reports whether the scheduler writes `app.json` cron tasks to the host `dokku` user crontab. Schedulers that use the host crontab (`docker-local`) echo `true`; schedulers that manage their own cron backend (`k3s`, which creates in-cluster CronJobs) echo `false`. The cron plugin reads this to decide which apps to include when regenerating the host crontab; a scheduler that does not implement the trigger is treated as `false`.
- Invoked by: `cron`
- Arguments: `$DOKKU_SCHEDULER`
- Example:
```shell
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
APP="$1"
DOKKU_SCHEDULER="$1";
# TODO
if [[ "$DOKKU_SCHEDULER" != "custom-scheduler" ]]; then
return
fi
echo "true"
```
### `traefik-template-source`

View File

@@ -29,7 +29,7 @@ The workflow looks like this:
```shell
# having dokku-arch in ../dokku-arch
vagrant up build-arch
# wait for "==> build-arch: ==> Finished making: dokku 0.35.16-2 (Mon Feb 22 23:20:37 CET 2016)"
# wait for "==> build-arch: ==> Finished making: dokku 0.38.27-2 (Mon Feb 22 23:20:37 CET 2016)"
cd ../dokku-arch
git add PKGBUILD .SRCINFO
git commit -m 'Update to dokku 0.9.9'

View File

@@ -13,7 +13,7 @@ All pull requests have tests run against them on [GitHub Actions](https://github
If you wish to skip tests for a particular commit, e.g. documentation changes, you may add the `[ci skip]` designator to your commit message. Commits that _should_ be tested but have the above designator will not be merged.
While we do provide official packages for a variety of platforms, as our test suite currently runs on Ubuntu Noble 24.04, we only provide official installation support for that platform and the supported LTS releases of Ubuntu (currently 20.04, 22.04, and 24.04).
While we do provide official packages for a variety of platforms, as our test suite currently runs on Ubuntu Noble 24.04, we only provide official installation support for that platform and the supported LTS releases of Ubuntu (currently 22.04, and 24.04).
## Local Test Execution

View File

@@ -3,7 +3,7 @@
Pull the dokku/dokku image:
```shell
docker pull dokku/dokku:0.35.16
docker pull dokku/dokku:0.38.27
```
Next, run the image.
@@ -19,7 +19,7 @@ docker container run -d \
--publish 8443:443 \
--volume /var/lib/dokku:/mnt/dokku \
--volume /var/run/docker.sock:/var/run/docker.sock \
dokku/dokku:0.35.16
dokku/dokku:0.38.27
```
Alternatively, you can use `docker-compose.yml`:
@@ -27,7 +27,7 @@ Alternatively, you can use `docker-compose.yml`:
```yaml
services:
dokku:
image: dokku/dokku:0.35.16
image: dokku/dokku:0.38.27
container_name: dokku
network_mode: bridge
ports:
@@ -44,7 +44,38 @@ services:
restart: unless-stopped
```
The above command will start a new docker container that is ready when a message similar to `Runit started as PID 12345` appears.
## Container readiness
The image ships with a Docker `HEALTHCHECK` that flips from `starting` to `healthy` once first-boot bootstrap is complete (skel restored, `plugin-list` plugins installed, core install triggers fired), nginx and sshd are accepting connections, and `dokku ps:restore` has finished. Until those conditions hold, the container is considered unhealthy and dependent services should not yet send traffic.
To check the current state from the host:
```shell
docker inspect --format='{{.State.Health.Status}}' dokku
```
Internally, the check is backed by a loopback-only HTTP endpoint:
```shell
docker exec dokku curl -fsS http://127.0.0.1:18080/_dokku/health
```
The endpoint binds to `127.0.0.1:18080` inside the container by design - it is not published to the host and does not interfere with user app vhosts on ports 80/443.
Compose dependents can gate on the healthcheck via `depends_on` with `condition: service_healthy`:
```yaml
services:
dokku:
image: dokku/dokku:0.38.27
# ...
bootstrap:
image: alpine:3.20
command: ["echo", "dokku is ready"]
depends_on:
dokku:
condition: service_healthy
```
Dokku is run in the following configuration:
@@ -80,12 +111,12 @@ redis: https://github.com/dokku/dokku-redis.git
### Prior to Dokku start
The alternative is to build a custom docker image via a custom Dockerfile. This Dockerfile can run any `plugin:install` command. Note that the version installed at that time will be the one that persists. Below is an example Dockerfile showing this method.
The alternative is to build a custom docker image via a custom Dockerfile. This Dockerfile can run any `plugin:install` command, though the `install` trigger must be skipped via the `--skip-install-trigger`. The version installed at that time will be the one that persists. Below is an example Dockerfile showing this method.
```Dockerfile
FROM dokku/dokku:0.35.16
RUN dokku plugin:install https://github.com/dokku/dokku-postgres.git postgres
RUN dokku plugin:install https://github.com/dokku/dokku-redis.git redis
FROM dokku/dokku:0.38.27
RUN dokku plugin:install https://github.com/dokku/dokku-postgres.git --skip-install-trigger
RUN dokku plugin:install https://github.com/dokku/dokku-redis.git --skip-install-trigger
```
## SSH Key Management

View File

@@ -21,10 +21,10 @@
# - `DOKKU_IP`
# - `FORWARDED_PORT`.
cd path/to/dokku
# for most users
vagrant up
# windows users must instead use the following in an elevated command prompt
vagrant up dokku-windows
```
@@ -42,7 +42,7 @@
```shell
# usually your key is already available under the current user's `~/.ssh/authorized_keys` file
cat ~/.ssh/authorized_keys | dokku ssh-keys:add admin
cat ~/.ssh/authorized_keys | sudo dokku ssh-keys:add admin
# you can use any domain you already have access to
dokku domains:set-global dokku.me

View File

@@ -8,17 +8,11 @@ Dokku is an extensible, open source Platform as a Service that runs on a single
To start using Dokku, you'll need a system that meets the following minimum requirements:
- A fresh installation of any of the following operating systems:
- [Ubuntu 20.04/22.04/24.04](https://www.ubuntu.com/download)
- [Debian 11+ x64](https://www.debian.org/distrib/)
- A server with one of the following architectures
- AMD64 (alternatively known as `x86_64`), commonly used for Intel cloud servers
- ARMV8 (alternatively known as `arm64`), commonly used for Raspberry PI and AWS Graviton
To avoid memory pressure during builds or runtime of your applications, we suggest the following:
- At least 1 GB of system memory
- If your system has less than 1GB of memory, you can use [this workaround](/docs/getting-started/advanced-installation.md#vms-with-less-than-1-gb-of-memory).
- Operating Systems: [Ubuntu 22.04/24.04](https://www.ubuntu.com/download) or [Debian 11+ x64](https://www.debian.org/distrib/)
- Supported Architectures: `AMD64` (`x86_64`) and `arm64` (`armv8`)
- Minimum Memory:
- Docker Scheduler: 1GB of system memory, or [add swap memory](/docs/getting-started/advanced-installation.md#vms-with-less-than-1-gb-of-memory)
- K3s Scheduler: 2GB of system memory on every node in the cluster
Finally, we recommend attaching at least one domain name to your server. This is not required, but using a domain name will make app access easier. When connecting a domain, either a single domain or a wildcard may be associated to the server's IP.
@@ -37,8 +31,8 @@ To install the latest stable version of Dokku, you can run the following shell c
```shell
# for debian systems, installs Dokku via apt-get
wget -NP . https://dokku.com/install/v0.35.16/bootstrap.sh
sudo DOKKU_TAG=v0.35.16 bash bootstrap.sh
wget -NP . https://dokku.com/install/v0.38.27/bootstrap.sh
sudo DOKKU_TAG=v0.38.27 bash bootstrap.sh
```
The installation process takes about 5-10 minutes, depending upon internet connection speed.
@@ -49,7 +43,7 @@ Once the installation is complete, you should configure an ssh key and set your
```shell
# usually your key is already available under the current user's `~/.ssh/authorized_keys` file
cat ~/.ssh/authorized_keys | dokku ssh-keys:add admin
cat ~/.ssh/authorized_keys | sudo dokku ssh-keys:add admin
# you can use any domain you already have access to
# this domain should have an A record or CNAME pointing at your server's IP

View File

@@ -18,6 +18,9 @@ Docker releases updates periodically to their engine. We recommend reading their
Before upgrading, check the migration guides to get comfortable with new features and prepare your deployment to be upgraded.
- [Upgrading to 0.38](/docs/appendices/0.38.0-migration-guide.md)
- [Upgrading to 0.37](/docs/appendices/0.37.0-migration-guide.md)
- [Upgrading to 0.36](/docs/appendices/0.36.0-migration-guide.md)
- [Upgrading to 0.35](/docs/appendices/0.35.0-migration-guide.md)
- [Upgrading to 0.34](/docs/appendices/0.34.0-migration-guide.md)
- [Upgrading to 0.33](/docs/appendices/0.33.0-migration-guide.md)
@@ -81,9 +84,6 @@ Please read the migration guides for each version in between your currently inst
#### Upgrading using `dokku-update`
> [!WARNING]
> The `dokku-update` package currently does not support upgrading to a specific version of Dokku. If this is required by a particular migration guide, use the `apt` method for upgrading.
We provide a helpful binary called `dokku-update`. This is a recommended package that:
- Can be installed separately, so upgrading Dokku will not affect the running of this package.
@@ -150,4 +150,3 @@ new buildpacks that were released:
```shell
dokku ps:rebuild --all
```

View File

@@ -10,26 +10,26 @@
<meta name="author" content="">
<title>Dokku - The smallest PaaS implementation you've ever seen</title>
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.16/docs/assets/favicons/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.16/docs/assets/favicons/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.16/docs/assets/favicons/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.16/docs/assets/favicons/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.16/docs/assets/favicons/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.16/docs/assets/favicons/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.16/docs/assets/favicons/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.16/docs/assets/favicons/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.16/docs/assets/favicons/apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.16/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.16/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.16/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.16/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.16/docs/assets/favicons/manifest.json">
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.16/docs/assets/favicons/favicon.ico">
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.38.27/docs/assets/favicons/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.38.27/docs/assets/favicons/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.38.27/docs/assets/favicons/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.38.27/docs/assets/favicons/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.38.27/docs/assets/favicons/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.38.27/docs/assets/favicons/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.38.27/docs/assets/favicons/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.38.27/docs/assets/favicons/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.38.27/docs/assets/favicons/apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.38.27/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.38.27/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.38.27/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.38.27/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.38.27/docs/assets/favicons/manifest.json">
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.38.27/docs/assets/favicons/favicon.ico">
<meta name="apple-mobile-web-app-title" content="Dokku">
<meta name="application-name" content="Dokku">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.16/docs/assets/favicons/mstile-144x144.png">
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.16/docs/assets/favicons/browserconfig.xml">
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.38.27/docs/assets/favicons/mstile-144x144.png">
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.38.27/docs/assets/favicons/browserconfig.xml">
<meta name="theme-color" content="#ffffff">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous">
@@ -38,7 +38,7 @@
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700;900&display=swap" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.16/docs/assets/style.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.38.27/docs/assets/style.css" rel="stylesheet">
<!-- <link href="./assets/style.css" rel="stylesheet"> -->
</head>
@@ -98,7 +98,7 @@
<main class="container px-4 px-lg-5">
<div class="row">
<div class="col-lg-7">
<a class="badge-link" href="https://github.com/dokku/dokku/releases"><span class="badge py-2 d-flex fit-content"><div class="circle align-self-center me-2"></div>Latest release <span id="releaseVersion" class="ms-1">v0.35.16</span></span></a>
<a class="badge-link" href="https://github.com/dokku/dokku/releases"><span class="badge py-2 d-flex fit-content"><div class="circle align-self-center me-2"></div>Latest release <span id="releaseVersion" class="ms-1">v0.38.27</span></span></a>
<h1 class="text-white hero-heading mt-5">An open source PAAS alternative to Heroku.</h1>
<h4 class="text-white mt-5">Dokku helps you build and manage the lifecycle of applications from building to scaling.</h4>
<div class="d-flex mt-5">
@@ -125,7 +125,7 @@
</p>
<p class="line">
<span class="prompt">$</span>
<span class="command">sudo DOKKU_TAG=v0.35.16 bash bootstrap.sh</span>
<span class="command">sudo DOKKU_TAG=v0.38.27 bash bootstrap.sh</span>
</p>
<br>

View File

@@ -8,7 +8,7 @@ network:create <network> # Creates an attachable docker netwo
network:destroy <network> # Destroys a docker network
network:exists <network> # Checks if a docker network exists
network:info <network> [--format text|json] # Outputs information about a docker network
network:list [--format text|json] # Lists all docker networks
network:list [--format text|json] [--dokku-managed] # Lists all docker networks
network:report [<app>] [<flag>] # Displays a network report for one or more apps
network:rebuild <app> # Rebuilds network settings for an app
network:rebuildall # Rebuild network settings for all apps
@@ -59,13 +59,26 @@ dokku network:list --format json
```
[
{"CreatedAt":"2024-02-25T01:55:24.275184461Z","Driver":"bridge","ID":"d18df2d21433","Internal":false,"IPv6":false,"Labels":{},"Name":"bridge","Scope":"local"},
{"CreatedAt":"2024-02-25T01:55:24.275184461Z","Driver":"bridge","ID":"f50fa882e7de","Internal":false,"IPv6":false,"Labels":{},"Name":"test-network","Scope":"local"},
{"CreatedAt":"2024-02-25T01:55:24.275184461Z","Driver":"host","ID":"ab6a59291443","Internal":false,"IPv6":false,"Labels":{},"Name":"host","Scope":"local"},
{"CreatedAt":"2024-02-25T01:55:24.275184461Z","Driver":"null","ID":"e2506bc8b7d7","Internal":false,"IPv6":false,"Labels":{},"Name":"none","Scope":"local"}
{"CreatedAt":"2024-02-25T01:55:24.275184461Z","DokkuManaged":false,"Driver":"bridge","ID":"d18df2d21433","Internal":false,"IPv6":false,"Labels":{},"Name":"bridge","Scope":"local"},
{"CreatedAt":"2024-02-25T01:55:24.275184461Z","DokkuManaged":true,"Driver":"bridge","ID":"f50fa882e7de","Internal":false,"IPv6":false,"Labels":{"com.dokku.network-name":"test-network"},"Name":"test-network","Scope":"local"},
{"CreatedAt":"2024-02-25T01:55:24.275184461Z","DokkuManaged":false,"Driver":"host","ID":"ab6a59291443","Internal":false,"IPv6":false,"Labels":{},"Name":"host","Scope":"local"},
{"CreatedAt":"2024-02-25T01:55:24.275184461Z","DokkuManaged":false,"Driver":"null","ID":"e2506bc8b7d7","Internal":false,"IPv6":false,"Labels":{},"Name":"none","Scope":"local"}
]
```
The `DokkuManaged` field is `true` for networks created by `network:create` and `false` for Docker built-in networks (such as `bridge`, `host`, and `none`) or networks created outside of Dokku (such as compose `*_default` networks). This can be used by automation to determine which networks Dokku is responsible for.
The `network:list` command also takes a `--dokku-managed` flag, which restricts the output to only those networks created by Dokku. It can be combined with the `--format` flag:
```shell
dokku network:list --dokku-managed
```
```
=====> Networks
test-network
```
### Creating a network
> [!IMPORTANT]
@@ -142,10 +155,11 @@ dokku network:info bridge
```
=====> bridge network information
ID: d18df2d21433
Name: bridge
Driver: bridge
Scope: local
ID: d18df2d21433
Name: bridge
Driver: bridge
Scope: local
Dokku managed: false
```
The `network:info` command also takes a `--format` flag, with the valid options including `text` (default) and `json`. The `json` output format can be used for automation purposes:
@@ -155,7 +169,7 @@ dokku network:info bridge --format json
```
```
{"CreatedAt":"2024-02-25T01:55:24.275184461Z","Driver":"bridge","ID":"d18df2d21433","Internal":false,"IPv6":false,"Labels":{},"Name":"bridge","Scope":"local"}
{"CreatedAt":"2024-02-25T01:55:24.275184461Z","DokkuManaged":false,"Driver":"bridge","ID":"d18df2d21433","Internal":false,"IPv6":false,"Labels":{},"Name":"bridge","Scope":"local"}
```
### Routing an app to a known ip:port combination
@@ -428,7 +442,7 @@ dokku network:report
=====> node-js-app network information
Network attach post create:
Network attach post deploy:
Network bind all interfaces: false
Network bind all interfaces:
Network computed attach post create:
Network computed attach post deploy:
Network computed bind all interfaces:false
@@ -436,7 +450,7 @@ dokku network:report
Network computed tld:
Network global attach post create:
Network global attach post deploy:
Network global bind all interfaces:false
Network global bind all interfaces:
Network global initial network:
Network global tld:
Network initial network:
@@ -445,7 +459,7 @@ dokku network:report
=====> python-sample network information
Network attach post create:
Network attach post deploy:
Network bind all interfaces: false
Network bind all interfaces:
Network computed attach post create:
Network computed attach post deploy:
Network computed bind all interfaces:false
@@ -453,7 +467,7 @@ dokku network:report
Network computed tld:
Network global attach post create:
Network global attach post deploy:
Network global bind all interfaces:false
Network global bind all interfaces:
Network global initial network:
Network global tld:
Network initial network:
@@ -462,7 +476,7 @@ dokku network:report
=====> ruby-sample network information
Network attach post create:
Network attach post deploy:
Network bind all interfaces: false
Network bind all interfaces:
Network computed attach post create:
Network computed attach post deploy:
Network computed bind all interfaces:false
@@ -470,7 +484,7 @@ dokku network:report
Network computed tld:
Network global attach post create:
Network global attach post deploy:
Network global bind all interfaces:false
Network global bind all interfaces:
Network global initial network:
Network global tld:
Network initial network:
@@ -478,6 +492,8 @@ dokku network:report
Network web listeners:
```
The per-app and `global-` keys for each property hold the raw values and are empty when nothing has been set. The `computed-` keys hold the effective value, falling back to the global value (where one has been set) and then to the built-in default (`false` for `bind-all-interfaces`, empty otherwise).
You can run the command for a specific app also.
```shell
@@ -488,7 +504,7 @@ dokku network:report node-js-app
=====> node-js-app network information
Network attach post create:
Network attach post deploy:
Network bind all interfaces: false
Network bind all interfaces:
Network computed attach post create:
Network computed attach post deploy:
Network computed bind all interfaces:false
@@ -496,7 +512,7 @@ dokku network:report node-js-app
Network computed tld:
Network global attach post create:
Network global attach post deploy:
Network global bind all interfaces:false
Network global bind all interfaces:
Network global initial network:
Network global tld:
Network initial network:
@@ -509,3 +525,27 @@ You can pass flags which will output only the value of the specific information
```shell
dokku network:report node-js-app --network-bind-all-interfaces
```
## Properties
### Settable properties
> [!NOTE]
> The `Report flags` column lists the CLI argument names accepted by `network:report`. The JSON keys emitted by `network:report --format json` are the same names with the leading `--network-` stripped (e.g. `attach-post-create`, `global-attach-post-create`, `computed-attach-post-create`). Legacy keys with the `network-` prefix (e.g. `network-attach-post-create`) are also emitted during the 0.38.x deprecation window and will be removed in a future major release.
| Property | Scope | Default | Report flags | Description |
|---|---|---|---|---|
| `attach-post-create` | app + global | none | `--network-attach-post-create`, `--network-global-attach-post-create`, `--network-computed-attach-post-create` | Networks attached to a container immediately after creation, before the deploy phase |
| `attach-post-deploy` | app + global | none | `--network-attach-post-deploy`, `--network-global-attach-post-deploy`, `--network-computed-attach-post-deploy` | Networks attached to a container after it passes healthchecks |
| `bind-all-interfaces` | app + global | `false` | `--network-bind-all-interfaces`, `--network-global-bind-all-interfaces`, `--network-computed-bind-all-interfaces` | When `true`, binds containers to `0.0.0.0` instead of the default Docker network address |
| `initial-network` | app + global | none | `--network-initial-network`, `--network-global-initial-network`, `--network-computed-initial-network` | Network attached at container creation time |
| `static-web-listener` | app only | none | `--network-static-web-listener` | Static `host:port` override used in proxy templates when no container is running |
| `tld` | app + global | none | `--network-tld`, `--network-global-tld`, `--network-computed-tld` | Top-level domain appended to auto-generated app vhosts |
### Read-only flags
The following flag surfaces in `network:report` but is not managed by `network:set` - it is derived from the running app state:
| Flag | Description |
|---|---|
| `--network-web-listeners` | Current `web` process listeners (host:port) for the deployed app |

View File

@@ -40,7 +40,7 @@ To change the proxy implementation in use for an application, use the `proxy:set
```shell
# no validation will be performed against
# the specified proxy implementation
dokku proxy:set node-js-app nginx
dokku proxy:set node-js-app type nginx
```
### Listing port mappings
@@ -220,3 +220,67 @@ You can pass flags which will output only the value of the specific information
```shell
dokku ports:report node-js-app --ports-map
```
Use `--ports-map-json` or `--ports-map-detected-json` to get the same data as a JSON array of objects. Each object has the following fields:
- `scheme`: the port scheme (e.g. `http`, `https`, `udp`)
- `host_port`: the host/listener port
- `container_port`: the container port
```shell
dokku ports:report node-js-app --ports-map-json
```
```json
[
{
"scheme": "http",
"host_port": 80,
"container_port": 5000
},
{
"scheme": "https",
"host_port": 443,
"container_port": 5000
}
]
```
The JSON output can be processed with tools such as `jq`:
```shell
dokku ports:report node-js-app --ports-map-json | jq '.[].host_port'
```
```
80
443
```
```shell
dokku ports:report node-js-app --ports-map-detected-json | jq '.[0].container_port'
```
```
5000
```
## Properties
### Configured flags
The following flags surface configured port mappings managed by `ports:set` / `ports:add` / `ports:remove` / `ports:clear`:
| Flag | Description |
|---|---|
| `--ports-map` | Configured port mappings as space-separated `scheme:host-port:container-port` values |
| `--ports-map-json` | Configured port mappings as a JSON array of `{scheme, host_port, container_port}` objects |
### Read-only flags
The following flags surface in `ports:report` but are not managed by `ports:set` - they are derived from the deploy:
| Flag | Description |
|---|---|
| `--ports-map-detected` | Port mapping inferred from `EXPOSE` directives or the running container |
| `--ports-map-detected-json` | Detected port mappings as a JSON array of `{scheme, host_port, container_port}` objects |

View File

@@ -3,15 +3,15 @@
> [!IMPORTANT]
> New as of 0.28.0
Dokku provides integration with the [Caddy](https://caddyserver.com/) proxy service by utilizing the Docker label-based integration implemented by Caddy.
Dokku provides integration with the [Caddy](https://caddyserver.com/) proxy service by utilizing the Docker label-based integration implemented by [Caddy Docker Proxy](https://github.com/lucaslorentz/caddy-docker-proxy).
```
caddy:report [<app>] [<flag>] # Displays a caddy report for one or more apps
caddy:logs [--num num] [--tail] # Display caddy log output
caddy:set <app> <property> (<value>) # Set or clear an caddy property for an app
caddy:show-config <app> # Display caddy compose config
caddy:start # Starts the caddy server
caddy:stop # Stops the caddy server
caddy:report [<app>] [<flag>] # Displays a caddy report for one or more apps
caddy:logs [--num num] [--tail] # Display caddy log output
caddy:set [<app>|--global] <property> (<value>) # Set or clear an caddy property for an app or globally
caddy:show-config <app> # Display caddy compose config
caddy:start # Starts the caddy server
caddy:stop # Stops the caddy server
```
## Requirements
@@ -39,7 +39,7 @@ The Caddy plugin has specific rules for routing requests:
To use the Caddy plugin, use the `proxy:set` command for the app in question:
```shell
dokku proxy:set node-js-app caddy
dokku proxy:set node-js-app type caddy
```
This will enable the docker label-based Caddy integration. All future deploys will inject the correct labels for Caddy to read and route requests to containers. Due to the docker label-based integration used by Caddy, a single deploy or rebuild will be required before requests will route successfully.
@@ -117,9 +117,57 @@ dokku caddy:set --global log-level DEBUG
After modifying, the Caddy container will need to be restarted.
### Label Management
The Caddy plugin allows you to add custom container labels to apps. These labels are injected into containers during deployment and can be used to configure Caddy behavior beyond what the plugin provides by default.
Refer to the upstream [caddy-docker-proxy](https://github.com/lucaslorentz/caddy-docker-proxy) documentation for more information on what labels are available.
#### Adding a label
To add a custom container label to an app, use the `caddy:labels:add` command:
```shell
dokku caddy:labels:add node-js-app caddy.directive value
```
This will add the label `caddy.directive=value` to the app's containers. After adding a label, you will need to rebuild or redeploy the app for the label to be applied to running containers.
```shell
dokku ps:rebuild node-js-app
```
#### Removing a label
To remove a custom container label from an app, use the `caddy:labels:remove` command:
```shell
dokku caddy:labels:remove node-js-app caddy.directive
```
This will remove the specified label from the app. After removing a label, you will need to rebuild or redeploy the app for the change to be applied to running containers.
```shell
dokku ps:rebuild node-js-app
```
#### Showing labels
To view all custom container labels for an app, use the `caddy:labels:show` command:
```shell
dokku caddy:labels:show node-js-app
```
To view a specific label value, provide the label name:
```shell
dokku caddy:labels:show node-js-app caddy.directive
```
### SSL Configuration
The caddy plugin only supports automatic ssl certificates from it's letsencrypt integration. Managed certificates provided by the `certs` plugin are ignored.
The caddy plugin only supports automatic ssl certificates from its letsencrypt integration. Managed certificates provided by the `certs` plugin are ignored.
#### Enabling letsencrypt integration
@@ -143,12 +191,25 @@ After enabling, the Caddy container will need to be restarted and apps will need
### Using Caddy's Internal TLS server
To switch to Caddy's internal TLS server for certificate provisioning, set the `tls-internal` property. This can only be set on a per-app basis.
To switch to Caddy's internal TLS server for certificate provisioning, set the `tls-internal` property.
```shell
dokku caddy:set node-js-app tls-internal true
```
The default value may also be configured globally with the `--global` flag. Per-app values take precedence over the global value when set.
```shell
dokku caddy:set --global tls-internal true
```
Both the per-app and the global value may be unset by setting a blank value.
```shell
dokku caddy:set node-js-app tls-internal
dokku caddy:set --global tls-internal
```
## Displaying Caddy reports for an app
You can get a report about the app's Caddy config using the `caddy:report` command:
@@ -159,28 +220,23 @@ dokku caddy:report
```
=====> node-js-app caddy information
Caddy image: lucaslorentz/caddy-docker-proxy:2.7
Caddy letsencrypt email:
Caddy letsencrypt server:
Caddy log level: ERROR
Caddy polling interval: 5s
Caddy tls internal: false
=====> python-app caddy information
Caddy image: lucaslorentz/caddy-docker-proxy:2.7
Caddy letsencrypt email:
Caddy letsencrypt server:
Caddy log level: ERROR
Caddy polling interval: 5s
Caddy tls internal: false
=====> ruby-app caddy information
Caddy image: lucaslorentz/caddy-docker-proxy:2.7
Caddy letsencrypt email:
Caddy letsencrypt server:
Caddy log level: ERROR
Caddy polling interval: 5s
Caddy tls internal: false
Caddy computed image: lucaslorentz/caddy-docker-proxy:2.7
Caddy computed letsencrypt email:
Caddy computed letsencrypt server: https://acme-v02.api.letsencrypt.org/directory
Caddy computed log level: ERROR
Caddy computed polling interval: 5s
Caddy computed tls internal: false
Caddy global image:
Caddy global letsencrypt email:
Caddy global letsencrypt server:
Caddy global log level:
Caddy global polling interval:
Caddy global tls internal:
Caddy tls internal:
```
The `global-<prop>` keys hold the raw global value and are empty when nothing has been set globally. The `computed-<prop>` keys hold the effective value used at deploy time, falling back to the global value (where one has been set) and then to the built-in default. The bare `tls-internal` key holds the raw per-app value.
You can run the command for a specific app also.
```shell
@@ -189,16 +245,44 @@ dokku caddy:report node-js-app
```
=====> node-js-app caddy information
Caddy image: lucaslorentz/caddy-docker-proxy:2.7
Caddy letsencrypt email:
Caddy letsencrypt server:
Caddy log level: ERROR
Caddy polling interval: 5s
Caddy tls internal: false
Caddy computed image: lucaslorentz/caddy-docker-proxy:2.7
Caddy computed letsencrypt email:
Caddy computed letsencrypt server: https://acme-v02.api.letsencrypt.org/directory
Caddy computed log level: ERROR
Caddy computed polling interval: 5s
Caddy computed tls internal: false
Caddy global image:
Caddy global letsencrypt email:
Caddy global letsencrypt server:
Caddy global log level:
Caddy global polling interval:
Caddy global tls internal:
Caddy tls internal:
```
You can pass flags which will output only the value of the specific information you want. For example:
```shell
dokku caddy:report node-js-app --caddy-image
dokku caddy:report node-js-app --caddy-computed-image
```
## Properties
### Settable properties
| Property | Scope | Default | Report flags | Description |
|---|---|---|---|---|
| `image` | global only | _parsed from `plugins/caddy-vhosts/Dockerfile`_ | `--caddy-global-image`, `--caddy-computed-image` | Docker image used to run the Caddy container |
| `letsencrypt-email` | global only | none | `--caddy-global-letsencrypt-email`, `--caddy-computed-letsencrypt-email` | Contact email enabling letsencrypt; empty disables https issuance |
| `letsencrypt-server` | global only | `https://acme-v02.api.letsencrypt.org/directory` | `--caddy-global-letsencrypt-server`, `--caddy-computed-letsencrypt-server` | ACME directory used when requesting certificates |
| `log-level` | global only | `ERROR` | `--caddy-global-log-level`, `--caddy-computed-log-level` | Caddy log level |
| `polling-interval` | global only | `5s` | `--caddy-global-polling-interval`, `--caddy-computed-polling-interval` | Frequency at which Caddy polls the Docker API for label changes |
| `tls-internal` | app + global | `false` | `--caddy-tls-internal`, `--caddy-global-tls-internal`, `--caddy-computed-tls-internal` | When `true`, uses Caddy's built-in self-signed TLS instead of letsencrypt |
### Internal properties
The following properties are not managed by `caddy:set` but are recorded internally by the plugin:
| Property | Description | Source |
|---|---|---|
| `proxy-status` | `started`/`stopped` state of the caddy compose project | `cmd-caddy-start`/`cmd-caddy-stop` in `plugins/caddy-vhosts/command-functions` |

View File

@@ -35,7 +35,7 @@ The Haproxy plugin has specific rules for routing requests:
To use the Haproxy plugin, use the `proxy:set` command for the app in question:
```shell
dokku proxy:set node-js-app haproxy
dokku proxy:set node-js-app type haproxy
```
This will enable the docker label-based Haproxy integration. All future deploys will inject the correct labels for Haproxy to read and route requests to containers. Due to the docker label-based integration used by Haproxy, a single deploy or rebuild will be required before requests will route successfully.
@@ -113,6 +113,64 @@ dokku haproxy:set --global log-level DEBUG
After modifying, the Haproxy container will need to be restarted.
### Changing the Haproxy refresh interval
Haproxy polls the Docker API for label changes every `10` seconds by default. The interval may be changed by setting the `refresh-conf` property with the `--global` flag:
```shell
dokku haproxy:set --global refresh-conf 5
```
The `refresh-conf` property is global-only and cannot be set on a per-app basis. Setting an empty value will reset it to the default. After modifying, the Haproxy container will need to be restarted.
### Label Management
The Haproxy plugin allows you to add custom container labels to apps. These labels are injected into containers during deployment and can be used to configure Haproxy behavior beyond what the plugin provides by default.
Refer to the upstream [EasyHaproxy](https://github.com/byjg/docker-easy-haproxy) documentation for more information on what labels are available.
#### Adding a label
To add a custom container label to an app, use the `haproxy:labels:add` command:
```shell
dokku haproxy:labels:add node-js-app haproxy.directive value
```
This will add the label `haproxy.directive=value` to the app's containers. After adding a label, you will need to rebuild or redeploy the app for the label to be applied to running containers.
```shell
dokku ps:rebuild node-js-app
```
#### Removing a label
To remove a custom container label from an app, use the `haproxy:labels:remove` command:
```shell
dokku haproxy:labels:remove node-js-app haproxy.directive
```
This will remove the specified label from the app. After removing a label, you will need to rebuild or redeploy the app for the change to be applied to running containers.
```shell
dokku ps:rebuild node-js-app
```
#### Showing labels
To view all custom container labels for an app, use the `haproxy:labels:show` command:
```shell
dokku haproxy:labels:show node-js-app
```
To view a specific label value, provide the label name:
```shell
dokku haproxy:labels:show node-js-app haproxy.directive
```
### SSL Configuration
The haproxy plugin only supports automatic ssl certificates from it's letsencrypt integration. Managed certificates provided by the `certs` plugin are ignored.
@@ -147,13 +205,20 @@ dokku haproxy:report
```
=====> node-js-app haproxy information
Haproxy image: byjg/easy-haproxy:4.0.0
=====> python-app haproxy information
Haproxy image: byjg/easy-haproxy:4.0.0
=====> ruby-app haproxy information
Haproxy image: byjg/easy-haproxy:4.0.0
Haproxy computed image: byjg/easy-haproxy:4.0.0
Haproxy computed letsencrypt email:
Haproxy computed letsencrypt server: https://acme-v02.api.letsencrypt.org/directory
Haproxy computed log level: ERROR
Haproxy computed refresh conf: 10
Haproxy global image:
Haproxy global letsencrypt email:
Haproxy global letsencrypt server:
Haproxy global log level:
Haproxy global refresh conf:
```
The `global-<prop>` keys hold the raw global value and are empty when nothing has been set globally. The `computed-<prop>` keys hold the effective value used at deploy time, falling back to the built-in default when the global value is empty.
You can run the command for a specific app also.
```shell
@@ -162,11 +227,42 @@ dokku haproxy:report node-js-app
```
=====> node-js-app haproxy information
Haproxy image: byjg/easy-haproxy:4.0.0
Haproxy computed image: byjg/easy-haproxy:4.0.0
Haproxy computed letsencrypt email:
Haproxy computed letsencrypt server: https://acme-v02.api.letsencrypt.org/directory
Haproxy computed log level: ERROR
Haproxy computed refresh conf: 10
Haproxy global image:
Haproxy global letsencrypt email:
Haproxy global letsencrypt server:
Haproxy global log level:
Haproxy global refresh conf:
```
You can pass flags which will output only the value of the specific information you want. For example:
```shell
dokku haproxy:report node-js-app --haproxy-image
dokku haproxy:report node-js-app --haproxy-computed-image
```
## Properties
### Settable properties
All haproxy properties are global only. Set with `haproxy:set --global <property> <value>`.
| Property | Scope | Default | Report flags | Description |
|---|---|---|---|---|
| `image` | global only | _parsed from `plugins/haproxy-vhosts/Dockerfile`_ | `--haproxy-global-image`, `--haproxy-computed-image` | Docker image used to run the Haproxy container |
| `letsencrypt-email` | global only | none | `--haproxy-global-letsencrypt-email`, `--haproxy-computed-letsencrypt-email` | Contact email enabling letsencrypt; empty disables https issuance |
| `letsencrypt-server` | global only | `https://acme-v02.api.letsencrypt.org/directory` | `--haproxy-global-letsencrypt-server`, `--haproxy-computed-letsencrypt-server` | ACME directory used when requesting certificates |
| `log-level` | global only | `ERROR` | `--haproxy-global-log-level`, `--haproxy-computed-log-level` | Haproxy log level |
| `refresh-conf` | global only | `10` | `--haproxy-global-refresh-conf`, `--haproxy-computed-refresh-conf` | Seconds between Haproxy polls of the Docker API for label changes |
### Internal properties
The following properties are not managed by `haproxy:set` but are recorded internally by the plugin:
| Property | Description | Source |
|---|---|---|
| `proxy-status` | `started`/`stopped` state of the haproxy compose project | `cmd-haproxy-start`/`cmd-haproxy-stop` in `plugins/haproxy-vhosts/command-functions` |

View File

@@ -5,7 +5,8 @@ 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: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:reload # Reloads the nginx server config
nginx:report [<app>] [<flag>|--format json] # Displays a nginx report for one or more apps
nginx:set <app> <property> (<value>) # Set or clear an nginx property for an app
nginx:show-config <app> # Display app nginx config
nginx:start # Starts the nginx server
@@ -27,6 +28,21 @@ Nginx will proxy the requests in a [round-robin balancing fashion](http://nginx.
> [!NOTE]
> Due to how the plugin is implemented, if an app successfully starts up `web` containers but fails to deploy some other containers, nginx may eventually stop routing requests. Users should revert their code in these cases, or manually trigger `dokku proxy:build-config $APP` in order to ensure requests route to the new web containers.
### Nginx Configuration for Undeployed Apps
> [!IMPORTANT]
> New as of 0.38.0
When an app is created but not yet deployed, has no `web` process type, or has no running web processes, Dokku generates a minimal nginx configuration that returns `502 Bad Gateway` responses. This ensures that:
- The app's domain resolves and returns a non-200 status code, allowing monitoring tools to detect the issue.
- SSL certificate provisioning tools such as letsencrypt can function, as an nginx server is listening on the domain.
- The `nginx.conf.d/` include directory is available for plugin customization.
The 502 error page includes auto-retry JavaScript that will automatically reload the page when the application becomes available.
Once the app is deployed with running `web` processes, the placeholder configuration is automatically replaced with the full proxy configuration.
### Starting nginx
> [!IMPORTANT]
@@ -49,6 +65,19 @@ The nginx server can be stopped via `nginx:stop`.
dokku nginx:stop
```
### Reloading nginx
> [!IMPORTANT]
> New as of 0.38.0
The nginx server can be reloaded via `nginx:reload`. This validates the current nginx configuration and, if valid, signals nginx to reload without restarting the running process. This is the preferred command after editing files in `/etc/nginx/conf.d/` directly.
```shell
dokku nginx:reload
```
If the configuration is invalid, the command exits non-zero and prints the validation error without reloading.
### Checking access logs
> [!NOTE]
@@ -90,7 +119,11 @@ dokku nginx:show-config node-js-app
### Validating nginx configs
It may be desired to validate an nginx config outside of the deployment process. To do so, run the `nginx:validate-config` command. With no arguments, this will validate all app nginx configs, one at a time. A minimal wrapper nginx config is generated for each app's nginx config, upon which `nginx -t` will be run.
App-supplied `nginx.conf.sigil` files are pre-validated automatically at the start of every deploy, immediately after the template is extracted from the source tree and before the build phase runs. The template is rendered with sigil and run through `nginx -t` against a minimal wrapper config; if validation fails, the deploy is aborted before any build work begins. To bypass this behavior, set `disable-custom-config` to `true` (see "Disabling custom nginx config" below).
The wrapper config used for validation does not include the top-level `load_module` directives from the global nginx config, so a `nginx.conf.sigil` that relies on a directive from a dynamically loaded module will fail this validation even when `nginx -t` passes against the real server config. See [Custom nginx modules](/docs/appendices/file-formats/nginx-conf-sigil.md#custom-nginx-modules) for how to supply a custom validation wrapper via the `nginx-app-template-source` trigger's `validate-config` template type.
It may also be desired to validate an nginx config outside of the deployment process. To do so, run the `nginx:validate-config` command. With no arguments, this will validate all app nginx configs, one at a time. A minimal wrapper nginx config is generated for each app's nginx config, upon which `nginx -t` will be run.
```shell
dokku nginx:validate-config
@@ -113,6 +146,34 @@ The `--clean` flag may also be specified for a given app:
dokku nginx:validate-config node-js-app --clean
```
### Displaying nginx reports for an app
You can get a report about the app's nginx configuration using the `nginx:report` command:
```shell
dokku nginx:report
```
You can run the command for a specific app also.
```shell
dokku nginx:report node-js-app
```
You can pass flags which will output only the value of the specific information you want. For example:
```shell
dokku nginx:report node-js-app --nginx-bind-address-ipv4
```
The `nginx:report` command also takes a `--format` flag, with the valid options including `stdout` (default) and `json`. The `json` output format can be used for automation purposes:
```shell
dokku nginx:report node-js-app --format json
```
The `--format` flag cannot be combined with an info flag.
### Custom Error Pages
By default, Dokku provides custom error pages for the following three categories of errors:
@@ -125,52 +186,107 @@ These are provided as an alternative to the generic Nginx error page, are shared
### Default site
By default, Dokku will route any received request with an unknown HOST header value to the lexicographically first site in the nginx config stack. This means that accessing the dokku server via its IP address or a bogus domain name may return a seemingly random website.
> [!IMPORTANT]
> New as of 0.38.0
> [!WARNING]
> Some versions of Nginx may create a default site when installed. This site is simply a static page which says "Welcome to Nginx", and if this default site is enabled, Nginx will not route any requests with an unknown HOST header to Dokku. If you want Dokku to receive all requests, run the following commands:
>
> ```
> rm /etc/nginx/sites-enabled/default
> dokku nginx:stop
> dokku nginx:start
> ```
On fresh apt installs, Dokku ships a catch-all default site at `/etc/nginx/conf.d/00-default-vhost.conf` that rejects requests whose Host header (or TLS SNI) does not match any deployed app. The catch-all uses [`ssl_reject_handshake on`](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_reject_handshake) for HTTPS and [`return 444`](https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#return) for HTTP. Both close the connection without sending a response.
If services should only be accessed via their domain name, you may want to disable the default site by adding the following configuration to the global nginx configuration.
Create the file at `/etc/nginx/conf.d/00-default-vhost.conf`:
The shipped file looks like:
```nginx
server {
listen 80 default_server;
listen [::]:80 default_server;
# If services hosted by dokku are available via HTTPS, it is recommended
# to also uncomment the following section.
#
# Please note that in order to let this work, you need an SSL certificate. However
# it does not need to be valid. Users of Debian-based distributions can install the
# `ssl-cert` package with `sudo apt install ssl-cert` to automatically generate
# a self-signed certificate that is stored at `/etc/ssl/certs/ssl-cert-snakeoil.pem`.
#
#listen 443 ssl;
#listen [::]:443 ssl;
#ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
#ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
listen 80 default_server;
listen [::]:80 default_server;
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
server_name _;
access_log off;
access_log off;
ssl_reject_handshake on;
return 444;
}
```
Make sure to reload nginx after creating this file by running `systemctl reload nginx.service`.
The `00-` prefix forces nginx to load this file before `/etc/nginx/conf.d/dokku.conf`, so its `default_server` markers establish the default for each port before any per-app server blocks are loaded.
This will catch all unknown HOST header values and close the connection without responding. You can replace the `return 444;` with `return 410;` which will cause nginx to respond with an error page.
On systems running nginx older than 1.19.4 (e.g., Debian Bullseye, which ships nginx 1.18.0), `ssl_reject_handshake` is not available. The postinst detects this and installs an HTTP-only variant instead:
The configuration file must be loaded before `/etc/nginx/conf.d/dokku.conf`, so it can not be arranged as a vhost in `/etc/nginx/sites-enabled` that is only processed afterwards.
```nginx
server {
listen 80 default_server;
listen [::]:80 default_server;
Alternatively, you may push an app to your Dokku host with a name like "00-default". As long as it lists first in `ls /home/dokku/*/nginx.conf | head`, it will be used as the default nginx vhost.
server_name _;
access_log off;
return 444;
}
```
On these systems, HTTPS requests to unknown hosts are not rejected by the catch-all - nginx falls through to the lexicographically first port-443 server block and presents that block's certificate, the same behavior as before 0.38.0.
#### TLS handshake behavior
The catch-all does not affect TLS handshakes for legitimate apps. nginx selects the matching server block via SNI before completing the handshake; only requests that have no matching app fall through to the catch-all.
| Request | Result |
| --- | --- |
| HTTPS to a configured app's hostname (with matching SNI) and the app has a cert | Handshake completes with the app's cert. Catch-all not consulted. |
| HTTPS to a configured app's hostname when the app has no cert configured | Handshake rejected by the catch-all on nginx 1.19.4+. On older nginx, falls through to the lexicographically first port-443 server block and presents its cert, producing a cert-mismatch error. |
| HTTPS to the server's IP with no SNI, or with an SNI matching no app | Handshake rejected on nginx 1.19.4+. On older nginx, falls through to the first port-443 server block. |
| HTTP to a configured app's hostname | Routed normally to that app. Catch-all not consulted. |
| HTTP to a hostname matching no app | Catch-all `return 444`. |
#### Conflicting upstream nginx default vhost
A fresh nginx install ships its own default vhost that also claims port 80 with `default_server`, which would cause `nginx -t` to fail with `a duplicate default server for 0.0.0.0:80` once the dokku catch-all is in place. To avoid this, the dokku postinst renames any of the following files in place to `${path}.dokku-disabled` instead of deleting them, preserving any local customizations:
- `/etc/nginx/sites-enabled/default`
- `/etc/nginx/sites-available/default`
- `/etc/nginx/conf.d/default.conf`
To recover an original file, inspect the `.dokku-disabled` sibling.
#### Disabling the catch-all on first install
Select "No" at the `dokku/install_default_site` debconf prompt, or pre-seed the answer before installing:
```shell
echo 'dokku dokku/install_default_site boolean false' | debconf-set-selections
```
#### Customizing or removing the catch-all after install
To customize the reject behavior, edit `/etc/nginx/conf.d/00-default-vhost.conf` and reload:
```shell
dokku nginx:reload
```
For example, replace `return 444;` with `return 410;` to respond with an HTTP 410 Gone error page instead of dropping the connection.
To disable the catch-all without uninstalling dokku:
```shell
mv /etc/nginx/conf.d/00-default-vhost.conf{,.disabled}
dokku nginx:reload
```
#### Installing the catch-all on upgraded or non-apt installs
Existing dokku installs upgraded from earlier versions do not get the catch-all installed automatically; the upgrade leaves their nginx configuration untouched. To install it manually, copy the shipped template into place and reload nginx:
```shell
cp /var/lib/dokku/core-plugins/available/nginx-vhosts/templates/default-site.conf /etc/nginx/conf.d/00-default-vhost.conf
dokku nginx:reload
```
If the upstream nginx default vhost is also active, disable it first (e.g. `mv /etc/nginx/sites-enabled/default{,.disabled}`) to avoid a duplicate-default-server error.
#### App-name based alternative
As an alternative to the catch-all file, you may push an app to your Dokku host with a name like `00-default`. As long as it lists first in `ls /home/dokku/*/nginx.conf | head`, it will be used as the default nginx vhost.
### Customizing the nginx configuration
@@ -235,8 +351,8 @@ Unsetting this value is the same as enabling custom nginx config usage.
{{ .APP }} Application name
{{ .APP_SSL_PATH }} Path to SSL certificate and key
{{ .DOKKU_ROOT }} Global Dokku root directory (ex: app dir would be `{{ .DOKKU_ROOT }}/{{ .APP }}`)
{{ .PROXY_PORT }} Non-SSL nginx listener port (same as `DOKKU_PROXY_PORT` config var)
{{ .PROXY_SSL_PORT }} SSL nginx listener port (same as `DOKKU_PROXY_SSL_PORT` config var)
{{ .PROXY_PORT }} Non-SSL nginx listener port (same as the `proxy-port` property)
{{ .PROXY_SSL_PORT }} SSL nginx listener port (same as the `proxy-ssl-port` property)
{{ .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)
@@ -332,11 +448,13 @@ Changing these value globally or on a per-app basis will require rebuilding the
| keepalive-timeout | `75s` | string | Timeout (with units) during which a keep-alive client connection will stay open on the server side |
| lingering-timeout | `5s` | string | Timeout (with units) is the maximum waiting time for more client data to arrive |
| nginx-conf-sigil-path | `nginx.conf.sigil` | string | Path in the repository to the `nginx.conf.sigil` file |
| nginx-service-command | | string | Full path to an executable script or binary to invoke instead of the system's init process when interacting with nginx |
| proxy-buffer-size | `8k` (# is os pagesize) | string | Size of the buffer used for reading the first part of proxied server response |
| proxy-buffering | `on` | string | Enables or disables buffering of responses from the proxied server |
| proxy-buffers | `8 8k` | string | Number and size of the buffers used for reading the proxied server response, for a single connection |
| proxy-busy-buffers-size | `16k` | string | Limits the total size of buffers that can be busy sending a response to the client while the response is not yet fully read. |
| proxy-connect-timeout | `60s` | string | Timeout (with units) for establishing a connection to your backend server |
| proxy-keepalive | empty (disabled) | integer | Number of idle keepalive connections to upstream servers (disabled by default) |
| proxy-read-timeout | `60s` | string | Timeout (with units) for reading response from your backend server |
| proxy-send-timeout | `60s` | string | Timeout (with units) for transmitting a request to your backend server |
| send-timeout | `60s` | string | Timeout (with units) for transmitting a response to your the client |
@@ -487,7 +605,7 @@ See the [customizing hostnames documentation](/docs/configuration/domains.md#cus
### Disabling VHOSTS
See the [disabling vhosts documentation](/docs/configuration/domains.md#disabling-vhosts) for more information on how to disable domain usage for your app.
See the [enabling and disabling vhosts documentation](/docs/configuration/domains.md#enabling-and-disabling-vhosts) for more information on how to disable domain usage for your app.
### SSL Configuration
@@ -504,3 +622,60 @@ See the [ports documentation](/docs/networking/port-management.md) for more info
### Regenerating nginx config
See the [proxy documentation](/docs/networking/proxy-management.md#regenerating-proxy-config) for more information on how to rebuild the nginx proxy configuration for your app.
## Properties
### Settable properties
All nginx-vhosts properties are settable at both the app and global scope.
| Property | Scope | Default | Report flags | Description |
|---|---|---|---|---|
| `access-log-format` | app + global | none | `--nginx-access-log-format`, `--nginx-global-access-log-format`, `--nginx-computed-access-log-format` | Custom nginx `log_format` directive used for the access log |
| `access-log-path` | app + global | _`{nginx-log-root}/{app}-access.log`_ | `--nginx-access-log-path`, `--nginx-global-access-log-path`, `--nginx-computed-access-log-path` | Path inside the nginx container where access logs are written |
| `bind-address-ipv4` | app + global | none | `--nginx-bind-address-ipv4`, `--nginx-global-bind-address-ipv4`, `--nginx-computed-bind-address-ipv4` | IPv4 address the nginx server block binds to |
| `bind-address-ipv6` | app + global | `::` | `--nginx-bind-address-ipv6`, `--nginx-global-bind-address-ipv6`, `--nginx-computed-bind-address-ipv6` | IPv6 address the nginx server block binds to |
| `client-body-timeout` | app + global | `60s` | `--nginx-client-body-timeout`, `--nginx-global-client-body-timeout`, `--nginx-computed-client-body-timeout` | Time allowed to read the request body from the client |
| `client-header-timeout` | app + global | `60s` | `--nginx-client-header-timeout`, `--nginx-global-client-header-timeout`, `--nginx-computed-client-header-timeout` | Time allowed to read the request header from the client |
| `client-max-body-size` | app + global | `1m` | `--nginx-client-max-body-size`, `--nginx-global-client-max-body-size`, `--nginx-computed-client-max-body-size` | Maximum allowed request body size |
| `disable-custom-config` | app + global | `false` | `--nginx-disable-custom-config`, `--nginx-global-disable-custom-config`, `--nginx-computed-disable-custom-config` | When `true`, ignores app-supplied `nginx.conf.d/*.conf` snippets |
| `error-log-path` | app + global | _`{nginx-log-root}/{app}-error.log`_ | `--nginx-error-log-path`, `--nginx-global-error-log-path`, `--nginx-computed-error-log-path` | Path inside the nginx container where error logs are written |
| `hsts` | app + global | `true` | `--nginx-hsts`, `--nginx-global-hsts`, `--nginx-computed-hsts` | When `true`, emits a `Strict-Transport-Security` header on HTTPS responses |
| `hsts-include-subdomains` | app + global | `true` | `--nginx-hsts-include-subdomains`, `--nginx-global-hsts-include-subdomains`, `--nginx-computed-hsts-include-subdomains` | Adds the `includeSubDomains` directive to the HSTS header |
| `hsts-max-age` | app + global | `15724800` | `--nginx-hsts-max-age`, `--nginx-global-hsts-max-age`, `--nginx-computed-hsts-max-age` | `max-age` value (seconds) in the HSTS header |
| `hsts-preload` | app + global | `false` | `--nginx-hsts-preload`, `--nginx-global-hsts-preload`, `--nginx-computed-hsts-preload` | Adds the `preload` directive to the HSTS header |
| `keepalive-timeout` | app + global | `75s` | `--nginx-keepalive-timeout`, `--nginx-global-keepalive-timeout`, `--nginx-computed-keepalive-timeout` | Time an idle keep-alive connection stays open |
| `lingering-timeout` | app + global | `5s` | `--nginx-lingering-timeout`, `--nginx-global-lingering-timeout`, `--nginx-computed-lingering-timeout` | Time nginx waits for more client data when closing a connection |
| `nginx-conf-sigil-path` | app + global | `nginx.conf.sigil` | `--nginx-nginx-conf-sigil-path`, `--nginx-global-nginx-conf-sigil-path`, `--nginx-computed-nginx-conf-sigil-path` | Path within the app to a custom `nginx.conf.sigil` template |
| `nginx-service-command` | app + global | none | `--nginx-nginx-service-command`, `--nginx-global-nginx-service-command`, `--nginx-computed-nginx-service-command` | Override command used by `nginx:start`/`nginx:stop`/`nginx:reload` |
| `proxy-buffer-size` | app + global | _system pagesize_ | `--nginx-proxy-buffer-size`, `--nginx-global-proxy-buffer-size`, `--nginx-computed-proxy-buffer-size` | Buffer size for reading the first part of the upstream response |
| `proxy-buffering` | app + global | `on` | `--nginx-proxy-buffering`, `--nginx-global-proxy-buffering`, `--nginx-computed-proxy-buffering` | Whether nginx buffers upstream responses (`on` or `off`) |
| `proxy-buffers` | app + global | _`8 {pagesize}`_ | `--nginx-proxy-buffers`, `--nginx-global-proxy-buffers`, `--nginx-computed-proxy-buffers` | Number and size of buffers used for an upstream response |
| `proxy-busy-buffers-size` | app + global | _`2 * pagesize`_ | `--nginx-proxy-busy-buffers-size`, `--nginx-global-proxy-busy-buffers-size`, `--nginx-computed-proxy-busy-buffers-size` | Maximum buffer size that can be busy sending a response to the client |
| `proxy-connect-timeout` | app + global | `60s` | `--nginx-proxy-connect-timeout`, `--nginx-global-proxy-connect-timeout`, `--nginx-computed-proxy-connect-timeout` | Time to establish a connection to the upstream |
| `proxy-keepalive` | app + global | none | `--nginx-proxy-keepalive`, `--nginx-global-proxy-keepalive`, `--nginx-computed-proxy-keepalive` | Number of idle keep-alive connections to upstream servers held open per worker |
| `proxy-read-timeout` | app + global | `60s` | `--nginx-proxy-read-timeout`, `--nginx-global-proxy-read-timeout`, `--nginx-computed-proxy-read-timeout` | Time to read a response from the upstream |
| `proxy-send-timeout` | app + global | `60s` | `--nginx-proxy-send-timeout`, `--nginx-global-proxy-send-timeout`, `--nginx-computed-proxy-send-timeout` | Time to transmit a request to the upstream |
| `send-timeout` | app + global | `60s` | `--nginx-send-timeout`, `--nginx-global-send-timeout`, `--nginx-computed-send-timeout` | Time between two successive write operations to the client |
| `underscore-in-headers` | app + global | `off` | `--nginx-underscore-in-headers`, `--nginx-global-underscore-in-headers`, `--nginx-computed-underscore-in-headers` | Whether to allow underscores in client request header field names |
| `x-forwarded-for-value` | app + global | `$remote_addr` | `--nginx-x-forwarded-for-value`, `--nginx-global-x-forwarded-for-value`, `--nginx-computed-x-forwarded-for-value` | Value used for the `X-Forwarded-For` header |
| `x-forwarded-port-value` | app + global | `$server_port` | `--nginx-x-forwarded-port-value`, `--nginx-global-x-forwarded-port-value`, `--nginx-computed-x-forwarded-port-value` | Value used for the `X-Forwarded-Port` header |
| `x-forwarded-proto-value` | app + global | `$scheme` | `--nginx-x-forwarded-proto-value`, `--nginx-global-x-forwarded-proto-value`, `--nginx-computed-x-forwarded-proto-value` | Value used for the `X-Forwarded-Proto` header |
| `x-forwarded-ssl` | app + global | none | `--nginx-x-forwarded-ssl`, `--nginx-global-x-forwarded-ssl`, `--nginx-computed-x-forwarded-ssl` | Value used for the `X-Forwarded-Ssl` header (e.g. `on`/`off`) |
### Read-only flags
The following flag surfaces in `nginx:report` but is not managed by `nginx:set`:
| Flag | Description |
|---|---|
| `--nginx-last-visited-at` | UNIX timestamp of the last request served by nginx for the app |
### Internal properties
The following properties are recorded internally by the plugin and are not exposed via `nginx:report`:
| Property | Description | Source |
|---|---|---|
| `proxy-status` | `started`/`stopped` state of the nginx system service | `cmd-nginx-start`/`cmd-nginx-stop` |
| `nginx-conf-sigil-migrated` | Migration sentinel set the first time a v1 template is rewritten to the current schema | `plugins/nginx-vhosts/install` writes `"true"` once the install-time migration runs |

View File

@@ -35,7 +35,7 @@ The OpenResty plugin has specific rules for routing requests:
To use the OpenResty plugin, use the `proxy:set` command for the app in question:
```shell
dokku proxy:set node-js-app openresty
dokku proxy:set node-js-app type openresty
```
This will enable the docker label-based OpenResty integration. All future deploys will inject the correct labels for OpenResty to read and route requests to containers. Due to the docker label-based integration used by OpenResty, a single deploy or rebuild will be required before requests will route successfully.
@@ -124,6 +124,56 @@ The following folders within an app repository may have `*.conf` files that will
- `openresty/http-includes/`: Injected in the `server` block serving http(s) requests for the app.
- `openresty/http-location-includes/`: Injected in the `location` block that proxies to the app in the app's respective `server` block.
Custom snippets filenames may only include alphanumeric, underscore, and dot characters. For security reasons, filenames that contain other characters will be ignored.
### Label Management
The OpenResty plugin allows you to add custom container labels to apps. These labels are injected into containers during deployment and can be used to configure OpenResty behavior beyond what the plugin provides by default.
Refer to the upstream [openresty-docker-proxy](https://github.com/dokku/openresty-docker-proxy) documentation for more information on what labels are available.
#### Adding a label
To add a custom container label to an app, use the `openresty:labels:add` command:
```shell
dokku openresty:labels:add node-js-app openresty.directive value
```
This will add the label `openresty.directive=value` to the app's containers. After adding a label, you will need to rebuild or redeploy the app for the label to be applied to running containers.
```shell
dokku ps:rebuild node-js-app
```
#### Removing a label
To remove a custom container label from an app, use the `openresty:labels:remove` command:
```shell
dokku openresty:labels:remove node-js-app openresty.directive
```
This will remove the specified label from the app. After removing a label, you will need to rebuild or redeploy the app for the change to be applied to running containers.
```shell
dokku ps:rebuild node-js-app
```
#### Showing labels
To view all custom container labels for an app, use the `openresty:labels:show` command:
```shell
dokku openresty:labels:show node-js-app
```
To view a specific label value, provide the label name:
```shell
dokku openresty:labels:show node-js-app openresty.directive
```
### SSL Configuration
The OpenResty plugin only supports automatic ssl certificates from it's letsencrypt integration. Managed certificates provided by the `certs` plugin are ignored.
@@ -227,5 +277,50 @@ dokku openresty:report node-js-app
You can pass flags which will output only the value of the specific information you want. For example:
```shell
dokku openresty:report node-js-app --openresty-letsencrypt-email
dokku openresty:report node-js-app --openresty-computed-letsencrypt-email
```
## Properties
### Settable properties
Five properties (`image`, `log-level`, `letsencrypt-email`, `letsencrypt-server`, `allowed-letsencrypt-domains-func-base64`) are global only. The rest may be set per-app or globally with `--global`; a global value applies to any app that has no per-app value, otherwise the built-in default is used.
Global-only properties expose two report flags: `--openresty-global-<property>` returns the raw stored value (empty when the property has never been set), while `--openresty-computed-<property>` returns the effective value (the global value if set, otherwise the built-in default).
App-or-global properties expose three report flags: `--openresty-<property>` returns the raw per-app value (empty when unset), `--openresty-global-<property>` returns the raw global value (empty when unset), and `--openresty-computed-<property>` returns the effective value, resolving the per-app value first, then the global value, then the built-in default.
| Property | Scope | Default | Report flags | Description |
|---|---|---|---|---|
| `access-log-format` | app or global | none | `--openresty-access-log-format`, `--openresty-global-access-log-format`, `--openresty-computed-access-log-format` | Custom nginx `log_format` directive used for the access log |
| `access-log-path` | app or global | _`/var/log/nginx/{app}-access.log`_ | `--openresty-access-log-path`, `--openresty-global-access-log-path`, `--openresty-computed-access-log-path` | Path inside the openresty container where access logs are written |
| `allowed-letsencrypt-domains-func-base64` | global only | _allow-all stub_ | `--openresty-global-allowed-letsencrypt-domains-func-base64`, `--openresty-computed-allowed-letsencrypt-domains-func-base64` | Base64-encoded Lua function deciding which domains may request a letsencrypt certificate |
| `bind-address-ipv4` | app or global | none | `--openresty-bind-address-ipv4`, `--openresty-global-bind-address-ipv4`, `--openresty-computed-bind-address-ipv4` | IPv4 address the openresty server block binds to |
| `bind-address-ipv6` | app or global | `::` | `--openresty-bind-address-ipv6`, `--openresty-global-bind-address-ipv6`, `--openresty-computed-bind-address-ipv6` | IPv6 address the openresty server block binds to |
| `client-body-timeout` | app or global | `60s` | `--openresty-client-body-timeout`, `--openresty-global-client-body-timeout`, `--openresty-computed-client-body-timeout` | Time allowed to read the request body from the client |
| `client-header-timeout` | app or global | `60s` | `--openresty-client-header-timeout`, `--openresty-global-client-header-timeout`, `--openresty-computed-client-header-timeout` | Time allowed to read the request header from the client |
| `client-max-body-size` | app or global | `1m` | `--openresty-client-max-body-size`, `--openresty-global-client-max-body-size`, `--openresty-computed-client-max-body-size` | Maximum allowed request body size |
| `error-log-path` | app or global | _`/var/log/nginx/{app}-error.log`_ | `--openresty-error-log-path`, `--openresty-global-error-log-path`, `--openresty-computed-error-log-path` | Path inside the openresty container where error logs are written |
| `hsts` | app or global | `true` | `--openresty-hsts`, `--openresty-global-hsts`, `--openresty-computed-hsts` | When `true`, emits a `Strict-Transport-Security` header on HTTPS responses |
| `hsts-include-subdomains` | app or global | `true` | `--openresty-hsts-include-subdomains`, `--openresty-global-hsts-include-subdomains`, `--openresty-computed-hsts-include-subdomains` | Adds the `includeSubDomains` directive to the HSTS header |
| `hsts-max-age` | app or global | `15724800` | `--openresty-hsts-max-age`, `--openresty-global-hsts-max-age`, `--openresty-computed-hsts-max-age` | `max-age` value (seconds) in the HSTS header |
| `hsts-preload` | app or global | `false` | `--openresty-hsts-preload`, `--openresty-global-hsts-preload`, `--openresty-computed-hsts-preload` | Adds the `preload` directive to the HSTS header |
| `image` | global only | _parsed from `plugins/openresty-vhosts/Dockerfile`_ | `--openresty-global-image`, `--openresty-computed-image` | Docker image used to run the openresty container |
| `keepalive-timeout` | app or global | `75s` | `--openresty-keepalive-timeout`, `--openresty-global-keepalive-timeout`, `--openresty-computed-keepalive-timeout` | Time an idle keep-alive connection stays open |
| `letsencrypt-email` | global only | none | `--openresty-global-letsencrypt-email`, `--openresty-computed-letsencrypt-email` | Contact email enabling letsencrypt; empty disables https issuance |
| `letsencrypt-server` | global only | `https://acme-v02.api.letsencrypt.org/directory` | `--openresty-global-letsencrypt-server`, `--openresty-computed-letsencrypt-server` | ACME directory used when requesting certificates |
| `lingering-timeout` | app or global | `5s` | `--openresty-lingering-timeout`, `--openresty-global-lingering-timeout`, `--openresty-computed-lingering-timeout` | Time openresty waits for more client data when closing a connection |
| `log-level` | global only | `ERROR` | `--openresty-global-log-level`, `--openresty-computed-log-level` | Openresty log level |
| `proxy-buffer-size` | app or global | _system pagesize_ | `--openresty-proxy-buffer-size`, `--openresty-global-proxy-buffer-size`, `--openresty-computed-proxy-buffer-size` | Buffer size for reading the first part of the upstream response |
| `proxy-buffering` | app or global | `on` | `--openresty-proxy-buffering`, `--openresty-global-proxy-buffering`, `--openresty-computed-proxy-buffering` | Whether openresty buffers upstream responses (`on` or `off`) |
| `proxy-buffers` | app or global | _`8 {pagesize}`_ | `--openresty-proxy-buffers`, `--openresty-global-proxy-buffers`, `--openresty-computed-proxy-buffers` | Number and size of buffers used for an upstream response |
| `proxy-busy-buffers-size` | app or global | _`2 * pagesize`_ | `--openresty-proxy-busy-buffers-size`, `--openresty-global-proxy-busy-buffers-size`, `--openresty-computed-proxy-busy-buffers-size` | Maximum buffer size that can be busy sending a response to the client |
| `proxy-connect-timeout` | app or global | `60s` | `--openresty-proxy-connect-timeout`, `--openresty-global-proxy-connect-timeout`, `--openresty-computed-proxy-connect-timeout` | Time to establish a connection to the upstream |
| `proxy-read-timeout` | app or global | `60s` | `--openresty-proxy-read-timeout`, `--openresty-global-proxy-read-timeout`, `--openresty-computed-proxy-read-timeout` | Time to read a response from the upstream |
| `proxy-send-timeout` | app or global | `60s` | `--openresty-proxy-send-timeout`, `--openresty-global-proxy-send-timeout`, `--openresty-computed-proxy-send-timeout` | Time to transmit a request to the upstream |
| `send-timeout` | app or global | `60s` | `--openresty-send-timeout`, `--openresty-global-send-timeout`, `--openresty-computed-send-timeout` | Time between two successive write operations to the client |
| `underscore-in-headers` | app or global | `off` | `--openresty-underscore-in-headers`, `--openresty-global-underscore-in-headers`, `--openresty-computed-underscore-in-headers` | Whether to allow underscores in client request header field names |
| `x-forwarded-for-value` | app or global | `$remote_addr` | `--openresty-x-forwarded-for-value`, `--openresty-global-x-forwarded-for-value`, `--openresty-computed-x-forwarded-for-value` | Value used for the `X-Forwarded-For` header |
| `x-forwarded-port-value` | app or global | `$server_port` | `--openresty-x-forwarded-port-value`, `--openresty-global-x-forwarded-port-value`, `--openresty-computed-x-forwarded-port-value` | Value used for the `X-Forwarded-Port` header |
| `x-forwarded-proto-value` | app or global | `$scheme` | `--openresty-x-forwarded-proto-value`, `--openresty-global-x-forwarded-proto-value`, `--openresty-computed-x-forwarded-proto-value` | Value used for the `X-Forwarded-Proto` header |
| `x-forwarded-ssl` | app or global | none | `--openresty-x-forwarded-ssl`, `--openresty-global-x-forwarded-ssl`, `--openresty-computed-x-forwarded-ssl` | Value used for the `X-Forwarded-Ssl` header (e.g. `on`/`off`) |

View File

@@ -32,13 +32,49 @@ The Traefik plugin has specific rules for routing requests:
- If no `https:443` mapping is found, the first `https` port mapping is used for https requests.
- If no `https` mapping is found, the container port from `http:80` will be used for https requests.
- Requests are routed as soon as the container is running and passing healthchecks.
- Readiness healthchecks defined in `app.json` with a `path` property are automatically transformed into Traefik healthcheck labels.
### Healthchecks
When an app has a readiness healthcheck defined in its `app.json` file with a `path` property, Dokku automatically generates Traefik healthcheck labels. These labels configure Traefik to perform health checks on the container before routing traffic to it.
The following `app.json` healthcheck properties are mapped to Traefik labels:
| app.json Property | Traefik Label Property | Description |
|-------------------|------------------------|-------------|
| `path` | `healthcheck.path` | The HTTP path to check (required) |
| `scheme` | `healthcheck.scheme` | The scheme to use (`http` or `https`) |
| `port` | `healthcheck.port` | The port to check |
| `timeout` | `healthcheck.timeout` | Timeout in seconds (formatted as `Xs`) |
| `wait` | `healthcheck.interval` | Interval between checks in seconds (formatted as `Xs`) |
Example `app.json` configuration:
```json
{
"healthchecks": {
"web": [
{
"name": "web readiness check",
"path": "/health",
"timeout": 5,
"type": "readiness",
"wait": 10
}
]
}
}
```
> [!NOTE]
> Only the first readiness healthcheck with a `path` property is used. Liveness, startup, and command-based healthchecks are not transformed into Traefik labels.
### Switching to Traefik
To use the Traefik plugin, use the `proxy:set` command for the app in question:
```shell
dokku proxy:set node-js-app traefik
dokku proxy:set node-js-app type traefik
```
This will enable the docker label-based Traefik integration. All future deploys will inject the correct labels for Traefik to read and route requests to containers. Due to the docker label-based integration used by Traefik, a single deploy or rebuild will be required before requests will route successfully.
@@ -127,6 +163,54 @@ dokku traefik:set --global log-level DEBUG
After modifying, the Traefik container will need to be restarted.
### Label Management
The Traefik plugin allows you to add custom container labels to apps. These labels are injected into containers during deployment and can be used to configure Traefik behavior beyond what the plugin provides by default.
Refer to the upstream [Traefik](https://doc.traefik.io/traefik/) documentation for more information on what labels are available.
#### Adding a label
To add a custom container label to an app, use the `traefik:labels:add` command:
```shell
dokku traefik:labels:add node-js-app traefik.directive value
```
This will add the label `traefik.directive=value` to the app's containers. After adding a label, you will need to rebuild or redeploy the app for the label to be applied to running containers.
```shell
dokku ps:rebuild node-js-app
```
#### Removing a label
To remove a custom container label from an app, use the `traefik:labels:remove` command:
```shell
dokku traefik:labels:remove node-js-app traefik.directive
```
This will remove the specified label from the app. After removing a label, you will need to rebuild or redeploy the app for the change to be applied to running containers.
```shell
dokku ps:rebuild node-js-app
```
#### Showing labels
To view all custom container labels for an app, use the `traefik:labels:show` command:
```shell
dokku traefik:labels:show node-js-app
```
To view a specific label value, provide the label name:
```shell
dokku traefik:labels:show node-js-app traefik.directive
```
### SSL Configuration
The traefik plugin only supports automatic ssl certificates from it's letsencrypt integration. Managed certificates provided by the `certs` plugin are ignored.
@@ -151,6 +235,51 @@ dokku traefik:set --global letsencrypt-server https://acme-staging-v02.api.letse
After enabling, the Traefik container will need to be restarted and apps will need to be rebuilt to retrieve certificates from the new server.
#### Switching to DNS-01 challenge mode
By default, Traefik uses TLS-ALPN-01 challenge for obtaining certificates. To switch to DNS-01 challenge mode (useful for wildcard certificates or when port 443 is not accessible), you need to:
1. Set the challenge mode to `dns`:
```shell
dokku traefik:set --global challenge-mode dns
```
2. Set your DNS provider:
```shell
dokku traefik:set --global dns-provider cloudflare
```
3. Configure the required environment variables for your DNS provider. Each DNS provider requires specific environment variables. The variable names should be prefixed with `dns-provider-`:
```shell
dokku traefik:set --global dns-provider-cf_api_email user@example.com
dokku traefik:set --global dns-provider-cf_api_key your-api-key
```
The `dns-provider-` prefix will be stripped and the variable name will be uppercased when passed to the Traefik container. For example, `dns-provider-cf_api_email` becomes `CF_API_EMAIL`.
Each configured variable is surfaced by `traefik:report` as `--traefik-global-dns-provider-<env_var>`. As these values are provider credentials, they are masked as `*******` in the default report output, including the aggregate `dokku report`. The raw value is returned when the flag is requested explicitly or when the report is rendered as json:
```shell
dokku traefik:report --global --traefik-global-dns-provider-cf_api_email
```
```shell
dokku traefik:report --global --format json | jq -r '."global-dns-provider-cf_api_email"'
```
After configuring, the Traefik container will need to be restarted and apps will need to be rebuilt.
Refer to the [Traefik DNS Challenge documentation](https://doc.traefik.io/traefik/https/acme/#dnschallenge) for the list of supported DNS providers and their required environment variables.
To switch back to TLS challenge mode:
```shell
dokku traefik:set --global challenge-mode tls
```
### API Access
Traefik exposes an API and Dashboard, which Dokku disables by default for security reasons. It can be exposed and customized as described below.
@@ -212,37 +341,30 @@ dokku traefik:report
```
=====> node-js-app traefik information
Traefik api enabled: false
Traefik api vhost: traefik.dokku.me
Traefik basic auth password: password
Traefik basic auth username: user
Traefik dashboard enabled: false
Traefik image: traefik:v2.8
Traefik letsencrypt email:
Traefik letsencrypt server:
Traefik log level: ERROR
=====> python-app traefik information
Traefik api enabled: false
Traefik api vhost: traefik.dokku.me
Traefik basic auth password: password
Traefik basic auth username: user
Traefik dashboard enabled: false
Traefik image: traefik:v2.8
Traefik letsencrypt email:
Traefik letsencrypt server:
Traefik log level: ERROR
=====> ruby-app traefik information
Traefik api enabled: false
Traefik api vhost: traefik.dokku.me
Traefik basic auth password: password
Traefik basic auth username: user
Traefik dashboard enabled: false
Traefik image: traefik:v2.8
Traefik letsencrypt email:
Traefik letsencrypt server:
Traefik log level: ERROR
Traefik computed api enabled: false
Traefik computed api vhost: traefik.dokku.me
Traefik computed challenge mode: tls
Traefik computed dashboard enabled: false
Traefik computed http entry point: http
Traefik computed https entry point: https
Traefik computed image: traefik:v2.8
Traefik computed letsencrypt email:
Traefik computed letsencrypt server: https://acme-v02.api.letsencrypt.org/directory
Traefik computed log level: ERROR
Traefik global api enabled:
Traefik global api vhost:
Traefik global challenge mode:
Traefik global dashboard enabled:
Traefik global http entry point:
Traefik global https entry point:
Traefik global image:
Traefik global letsencrypt email:
Traefik global letsencrypt server:
Traefik global log level:
```
The `global-<prop>` keys hold the raw global value and are empty when nothing has been set globally. The `computed-<prop>` keys hold the effective value used at deploy time, falling back to the built-in default when the global value is empty.
You can run the command for a specific app also.
```shell
@@ -251,19 +373,63 @@ dokku traefik:report node-js-app
```
=====> node-js-app traefik information
Traefik api enabled: false
Traefik api vhost: traefik.dokku.me
Traefik basic auth password: password
Traefik basic auth username: user
Traefik dashboard enabled: false
Traefik image: traefik:v2.8
Traefik letsencrypt email:
Traefik letsencrypt server:
Traefik log level: ERROR
Traefik computed api enabled: false
Traefik computed api vhost: traefik.dokku.me
Traefik computed challenge mode: tls
Traefik computed dashboard enabled: false
Traefik computed http entry point: http
Traefik computed https entry point: https
Traefik computed image: traefik:v2.8
Traefik computed letsencrypt email:
Traefik computed letsencrypt server: https://acme-v02.api.letsencrypt.org/directory
Traefik computed log level: ERROR
Traefik global api enabled:
Traefik global api vhost:
Traefik global challenge mode:
Traefik global dashboard enabled:
Traefik global http entry point:
Traefik global https entry point:
Traefik global image:
Traefik global letsencrypt email:
Traefik global letsencrypt server:
Traefik global log level:
```
You can pass flags which will output only the value of the specific information you want. For example:
```shell
dokku traefik:report node-js-app --traefik-api-enabled
dokku traefik:report node-js-app --traefik-computed-api-enabled
```
## Properties
### Settable properties
All traefik properties are global only. Set with `traefik:set --global <property> <value>`.
| Property | Scope | Default | Report flags | Description |
|---|---|---|---|---|
| `api-enabled` | global only | `false` | `--traefik-global-api-enabled`, `--traefik-computed-api-enabled` | When `true`, enables the Traefik HTTP API |
| `api-entry-point` | global only | none | `--traefik-global-api-entry-point`, `--traefik-computed-api-entry-point` | Name of the entry point used by the Traefik API |
| `api-entry-point-address` | global only | none | `--traefik-global-api-entry-point-address`, `--traefik-computed-api-entry-point-address` | Address (`host:port`) the Traefik API listens on |
| `api-vhost` | global only | `traefik.dokku.me` | `--traefik-global-api-vhost`, `--traefik-computed-api-vhost` | Virtual host that routes to the Traefik API |
| `basic-auth-password` | global only | none | `--traefik-global-basic-auth-password`, `--traefik-computed-basic-auth-password` (masked as `*******` in the default stdout report; the raw value is returned when queried via `--format json` or when one of these flags is requested explicitly) | Password for basic auth in front of the API/dashboard |
| `basic-auth-username` | global only | none | `--traefik-global-basic-auth-username`, `--traefik-computed-basic-auth-username` | Username for basic auth in front of the API/dashboard |
| `challenge-mode` | global only | `tls` | `--traefik-global-challenge-mode`, `--traefik-computed-challenge-mode` | ACME challenge method used by Traefik (`tls`, `http`, or `dns`) |
| `dashboard-enabled` | global only | `false` | `--traefik-global-dashboard-enabled`, `--traefik-computed-dashboard-enabled` | When `true`, enables the Traefik dashboard |
| `dns-provider` | global only | none | `--traefik-global-dns-provider`, `--traefik-computed-dns-provider` | Lego DNS provider name used when `challenge-mode` is `dns` |
| `dns-provider-<ENV_VAR>` | global only | none | `--traefik-global-dns-provider-<env_var>` (masked as `*******` in the default stdout report; the raw value is returned when queried via `--format json` or when this flag is requested explicitly) | Per-provider environment variables passed to the Traefik container; `<ENV_VAR>` is the upstream variable name (e.g. `dns-provider-cloudflare-api-token`) |
| `http-entry-point` | global only | `http` | `--traefik-global-http-entry-point`, `--traefik-computed-http-entry-point` | Entry point name handling plaintext HTTP traffic |
| `https-entry-point` | global only | `https` | `--traefik-global-https-entry-point`, `--traefik-computed-https-entry-point` | Entry point name handling TLS-terminated HTTPS traffic |
| `image` | global only | _parsed from `plugins/traefik-vhosts/Dockerfile`_ | `--traefik-global-image`, `--traefik-computed-image` | Docker image used to run the Traefik container |
| `letsencrypt-email` | global only | none | `--traefik-global-letsencrypt-email`, `--traefik-computed-letsencrypt-email` | Contact email enabling letsencrypt; empty disables https issuance |
| `letsencrypt-server` | global only | `https://acme-v02.api.letsencrypt.org/directory` | `--traefik-global-letsencrypt-server`, `--traefik-computed-letsencrypt-server` | ACME directory used when requesting certificates |
| `log-level` | global only | `ERROR` | `--traefik-global-log-level`, `--traefik-computed-log-level` | Traefik log level |
### Internal properties
The following properties are not managed by `traefik:set` but are recorded internally by the plugin:
| Property | Description | Source |
|---|---|---|
| `proxy-status` | `started`/`stopped` state of the traefik compose project | `cmd-traefik-start`/`cmd-traefik-stop` in `plugins/traefik-vhosts/command-functions` |

Some files were not shown because too many files have changed in this diff Show More