diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 1f9ff247b..0fbe65462 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -54,7 +54,7 @@ jobs:
- name: Clone
uses: actions/checkout@v3
- name: Run shfmt
- uses: luizm/action-sh-checker@38985be9e872ef709f8ffca07af3ff88572fe429
+ uses: luizm/action-sh-checker@edd0e45ecff35b05f162052b50df50976c1b74fc
# v0.3.0 => 7f44869033b40ee4ffe7dc76c87a1bc66e3d025a
env:
SHFMT_OPTS: -l -bn -ci -i 2 -d
diff --git a/HISTORY.md b/HISTORY.md
index 9e21898f4..10282e0b4 100644
--- a/HISTORY.md
+++ b/HISTORY.md
@@ -1,5 +1,131 @@
# History
+## 0.27.10
+
+Install/update via the bootstrap script:
+
+```shell
+wget https://raw.githubusercontent.com/dokku/dokku/v0.27.10/bootstrap.sh
+sudo DOKKU_TAG=v0.27.10 bash bootstrap.sh
+```
+
+### Bug Fixes
+
+- #5276: @d6rkaiz Remove duplicate syntax for nginx.conf
+
+### Other
+
+- #5274: @kennell readme: mention Ubuntu 22.04 compability
+
+## 0.27.9
+
+Install/update via the bootstrap script:
+
+```shell
+wget https://raw.githubusercontent.com/dokku/dokku/v0.27.9/bootstrap.sh
+sudo DOKKU_TAG=v0.27.9 bash bootstrap.sh
+```
+
+### Bug Fixes
+
+- #5273: @josegonzalez Correct issue where more complex docker args were not properly parsed when scheduling containers
+- #5272: @josegonzalez Add support for --global as app name when calling config-get trigger
+- #5263: @alexgleason Update deprecated apt-key command
+
+### New Features
+
+- #5262: @josegonzalez Run shfmt against all test files
+- #5257: @chrisjdixon Move nginx.conf.d includes after all other hard-coded config to allow for overrides
+
+### Other
+
+- #5184: @yasoob New website. Closes #5175
+- #5270: @dependabot[bot] chore(deps): bump werkzeug from 2.2.0 to 2.2.1 in /tests/apps/python-flask
+- #5265: @dependabot[bot] chore(deps): bump werkzeug from 2.1.2 to 2.2.0 in /tests/apps/python-flask
+- #5264: @dependabot[bot] chore(deps): bump sinatra from 2.2.1 to 2.2.2 in /tests/apps/ruby
+- #5261: @dependabot[bot] chore(deps): bump luizm/action-sh-checker from 0.4.0 to 0.5.0
+- #5258: @dependabot[bot] chore(deps): bump sinatra from 2.2.0 to 2.2.1 in /tests/apps/ruby
+
+## 0.27.8
+
+Install/update via the bootstrap script:
+
+```shell
+wget https://raw.githubusercontent.com/dokku/dokku/v0.27.8/bootstrap.sh
+sudo DOKKU_TAG=v0.27.8 bash bootstrap.sh
+```
+
+### Bug Fixes
+
+- #5232: @YuukiHogo builder-build fix for DOKKU_DOCKERFILE_CACHE_BUILD and DOKKU_DOCKER_BUILD_OPTS variables
+
+### New Features
+
+- #5255: @josegonzalez export DOKKU_COMMAND for use in authentication systems
+
+### Other
+
+- #5250: @dependabot[bot] chore(deps): bump flask from 2.1.2 to 2.1.3 in /tests/apps/multi
+- #5251: @dependabot[bot] chore(deps): bump flask from 2.1.2 to 2.1.3 in /tests/apps/python-flask
+- #5245: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 221 to 222 in /tests/apps/php
+
+## 0.27.7
+
+Install/update via the bootstrap script:
+
+```shell
+wget https://raw.githubusercontent.com/dokku/dokku/v0.27.7/bootstrap.sh
+sudo DOKKU_TAG=v0.27.7 bash bootstrap.sh
+```
+
+### Bug Fixes
+
+- #5238: @josegonzalez Respect dokku system user/group when setting storage permissions on installation
+
+### New Features
+
+- #5239: @josegonzalez Add builder-type and image-stage labels to all images
+
+### Documentation
+
+- #5241: @josegonzalez Clarify where logs are pulled from and general log shipping stance
+- #5237: @josegonzalez Fix builder-pack:set command example
+
+### Other
+
+- #5235: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 220 to 221 in /tests/apps/php
+
+## 0.27.6
+
+Install/update via the bootstrap script:
+
+```shell
+wget https://raw.githubusercontent.com/dokku/dokku/v0.27.6/bootstrap.sh
+sudo DOKKU_TAG=v0.27.6 bash bootstrap.sh
+```
+
+### Bug Fixes
+
+- #5225: @josegonzalez Use original app name when setting include_labels for vector source
+- #5228: @josegonzalez Always respect app.json formations in scale settings
+- #5201: @josegonzalez Use pack as default builder for arm64 servers
+
+### Documentation
+
+- #5230: @josegonzalez Clarify usage of build args to set environment variables for Dockerfile deploys
+- #5208: @asokoloski-m Fix typo in dockerfile builder docs
+- #5206: @AxelTheGerman Added dokku-litestream to list of community plugins
+
+### Other
+
+- #5218: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 219 to 220 in /tests/apps/php
+- #5222: @dependabot[bot] chore(deps): bump jetty-servlet from 11.0.10 to 11.0.11 in /tests/apps/java
+- #5224: @josegonzalez Document that the community registry plugin should be uninstalled before upgrading past 0.24.x
+- #5220: @dependabot[bot] chore(deps): bump jetty-servlet from 11.0.9 to 11.0.10 in /tests/apps/java
+- #5212: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 218 to 219 in /tests/apps/php
+- #5210: @dependabot[bot] chore(deps): bump monolog/monolog from 1.27.0 to 1.27.1 in /tests/apps/php
+- #5204: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 217 to 218 in /tests/apps/php
+
## 0.27.5
Install/update via the bootstrap script:
diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md
index 607fd1281..9dff003bd 100644
--- a/ISSUE_TEMPLATE.md
+++ b/ISSUE_TEMPLATE.md
@@ -31,7 +31,7 @@
> For problems affecting all applications, the report output for a broken application is useful for our debugging.
> In these cases, you may run `dokku report` without any arguments to display the top-level reporting information.
-### How (deb/make/rpm) and where (AWS, VirtualBox, physical, etc.) was Dokku installed?
+### How (deb/make) and where (AWS, VirtualBox, physical, etc.) was Dokku installed?
### Additional information
diff --git a/Makefile b/Makefile
index 2743de58a..f6074a87d 100644
--- a/Makefile
+++ b/Makefile
@@ -1,12 +1,12 @@
DOKKU_VERSION ?= master
-DOCKER_IMAGE_LABELER_VERSION ?= 0.4.1
-HEROKUISH_VERSION ?= 0.5.34
-NETRC_VERSION ?= 0.5.1
-PLUGN_VERSION ?= 0.8.2
-PROCFILE_VERSION ?= 0.14.1
-SIGIL_VERSION ?= 0.8.1
-SSHCOMMAND_VERSION ?= 0.15.0
+DOCKER_IMAGE_LABELER_VERSION ?= 0.5.0
+HEROKUISH_VERSION ?= 0.5.37
+NETRC_VERSION ?= 0.6.0
+PLUGN_VERSION ?= 0.12.0
+PROCFILE_VERSION ?= 0.15.0
+SIGIL_VERSION ?= 0.9.0
+SSHCOMMAND_VERSION ?= 0.16.0
DOCKER_IMAGE_LABELER_URL ?= https://github.com/dokku/docker-image-labeler/releases/download/v${DOCKER_IMAGE_LABELER_VERSION}/docker-image-labeler_${DOCKER_IMAGE_LABELER_VERSION}_linux_amd64.tgz
NETRC_URL ?= https://github.com/dokku/netrc/releases/download/v${NETRC_VERSION}/netrc_${NETRC_VERSION}_linux_amd64.tgz
PLUGN_URL ?= https://github.com/dokku/plugn/releases/download/v${PLUGN_VERSION}/plugn_${PLUGN_VERSION}_linux_amd64.tgz
@@ -41,7 +41,6 @@ include common.mk
include tests.mk
include package.mk
include deb.mk
-include rpm.mk
include arch.mk
all:
diff --git a/README.md b/README.md
index 003c835af..ab9482d83 100644
--- a/README.md
+++ b/README.md
@@ -74,9 +74,8 @@ Support us with a monthly donation and help us continue our activities. [[Become
A fresh VM running any of the following operating systems:
-- Ubuntu 18.04/20.04 x64 - Any currently supported release
-- Debian 9+ x64
-- CentOS 7 x64 *(experimental)*
+- Ubuntu 18.04 / 20.04 / 22.04 x64 - Any currently supported release
+- Debian 10+ x64
- Arch Linux x64 *(experimental)*
An SSH keypair that can be used for application deployment. If this exists before installation, it will be automatically imported into dokku.
@@ -87,8 +86,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 https://raw.githubusercontent.com/dokku/dokku/v0.27.5/bootstrap.sh
-sudo DOKKU_TAG=v0.27.5 bash bootstrap.sh
+wget https://raw.githubusercontent.com/dokku/dokku/v0.27.10/bootstrap.sh
+sudo DOKKU_TAG=v0.27.10 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.
diff --git a/Vagrantfile b/Vagrantfile
index e03513065..51ddce82f 100644
--- a/Vagrantfile
+++ b/Vagrantfile
@@ -83,20 +83,12 @@ Vagrant::configure("2") do |config|
vm.vm.provision :shell, :inline => "cd /root/dokku && make install-from-deb"
end
- config.vm.define "dokku-rpm", autostart: false do |vm|
- vm.vm.box = "centos/7"
- vm.vm.synced_folder File.dirname(__FILE__), "/root/dokku"
- vm.vm.hostname = "#{DOKKU_DOMAIN}"
- vm.vm.network :private_network, ip: DOKKU_IP
- vm.vm.provision :shell, :inline => "cd /root/dokku && bash bootstrap.sh"
- end
-
config.vm.define "build", autostart: false do |vm|
vm.vm.synced_folder File.dirname(__FILE__), "/root/dokku"
vm.vm.hostname = "#{DOKKU_DOMAIN}"
vm.vm.network :private_network, ip: DOKKU_IP
vm.vm.provision :shell, :inline => "export DEBIAN_FRONTEND=noninteractive && apt-get update -qq >/dev/null && apt-get -qq -y --no-install-recommends install git >/dev/null && cd /root/dokku && #{make_cmd}"
- vm.vm.provision :shell, :inline => "export IS_RELEASE=true && cd /root/dokku && make deb-all rpm-all"
+ vm.vm.provision :shell, :inline => "export IS_RELEASE=true && cd /root/dokku && make deb-all"
end
config.vm.define "build-arch", autostart: false do |vm|
diff --git a/bootstrap.sh b/bootstrap.sh
index dac9ee095..99277b027 100755
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -3,7 +3,7 @@ set -eo pipefail
[[ $TRACE ]] && set -x
# A script to bootstrap dokku.
-# It expects to be run on Ubuntu 18.04/20.04, or CentOS 7 via 'sudo'
+# It expects to be run on Ubuntu 18.04/20.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 [9, 10, 11], CentOS [7], Fedora (partial) [33, 34], Ubuntu [18.04, 20.04, 22.04]"
+SUPPORTED_VERSIONS="Debian [10, 11], Ubuntu [18.04, 20.04, 22.04]"
log-fail() {
declare desc="log fail formatter"
@@ -139,9 +139,6 @@ install-dokku-from-package() {
debian | ubuntu)
install-dokku-from-deb-package "$@"
;;
- centos | fedora | rhel)
- install-dokku-from-rpm-package "$@"
- ;;
*)
log-fail "Unsupported Linux distribution. For manual installation instructions, consult https://dokku.com/docs/getting-started/advanced-installation/"
;;
@@ -163,7 +160,7 @@ install-dokku-from-deb-package() {
local NO_INSTALL_RECOMMENDS=${DOKKU_NO_INSTALL_RECOMMENDS:=""}
local OS_ID
- if ! in-array "$DOKKU_DISTRO_VERSION" "18.04" "20.04" "22.04" "9" "10" "11"; then
+ if ! in-array "$DOKKU_DISTRO_VERSION" "18.04" "20.04" "22.04" "10" "11"; then
log-fail "Unsupported Linux distribution. Only the following versions are supported: $SUPPORTED_VERSIONS"
fi
@@ -212,7 +209,7 @@ install-dokku-from-deb-package() {
fi
echo "--> Installing dokku"
- wget -nv -O - https://packagecloud.io/dokku/dokku/gpgkey | apt-key add -
+ wget -qO- https://packagecloud.io/dokku/dokku/gpgkey | sudo tee /etc/apt/trusted.gpg.d/dokku.asc
echo "deb https://packagecloud.io/dokku/dokku/$DOKKU_DISTRO/ $OS_ID main" | tee /etc/apt/sources.list.d/dokku.list
apt-get update -qq >/dev/null
@@ -231,35 +228,6 @@ install-dokku-from-deb-package() {
fi
}
-install-dokku-from-rpm-package() {
- local DOKKU_CHECKOUT="$1"
-
- if ! in-array "$DOKKU_DISTRO_VERSION" "7"; then
- log-fail "Unsupported Linux distribution. Only the following versions are supported: $SUPPORTED_VERSIONS"
- fi
-
- echo "--> Installing docker"
- curl -fsSL https://get.docker.com/ | sh
-
- echo "--> Installing epel for nginx packages to be available"
- yum install -y epel-release
-
- echo "--> Installing herokuish and dokku"
- curl -s https://packagecloud.io/install/repositories/dokku/dokku/script.rpm.sh | bash
- if [[ -n $DOKKU_CHECKOUT ]]; then
- yum -y install herokuish "dokku-$DOKKU_CHECKOUT"
- else
- yum -y install herokuish dokku
- fi
-
- echo "--> Enabling docker and nginx on system startup"
- systemctl enable docker
- systemctl enable nginx
-
- echo "--> Starting nginx"
- systemctl start nginx
-}
-
main() {
export DOKKU_DISTRO DOKKU_DISTRO_VERSION
# shellcheck disable=SC1091
diff --git a/contrib/build-dokku.Dockerfile b/contrib/build-dokku.Dockerfile
index 3ca85034a..89c0042b8 100644
--- a/contrib/build-dokku.Dockerfile
+++ b/contrib/build-dokku.Dockerfile
@@ -18,7 +18,7 @@ WORKDIR ${WORKDIR}
COPY Makefile ${WORKDIR}/
COPY *.mk ${WORKDIR}/
-RUN make deb-setup rpm-setup sshcommand plugn
+RUN make deb-setup sshcommand plugn
COPY . ${WORKDIR}
@@ -37,7 +37,7 @@ RUN PLUGIN_MAKE_TARGET=${PLUGIN_MAKE_TARGET} \
IS_RELEASE=${IS_RELEASE} \
SKIP_GO_CLEAN=true \
make version copyfiles \
- && make deb-dokku rpm-dokku
+ && make deb-dokku
FROM builder as armhf
diff --git a/contrib/release-dokku b/contrib/release-dokku
index 81747eec4..a5b1ce224 100755
--- a/contrib/release-dokku
+++ b/contrib/release-dokku
@@ -134,7 +134,6 @@ fn-publish-package() {
local OS_ID ex
[[ "$IS_RELEASE" == "true" ]] && REPOSITORY=dokku/dokku
- [[ "$RELEASE_TYPE" == "rpm" ]] && DIST=el/7
[[ "$RELEASE_TYPE" == "raspbian" ]] && DIST=raspbian
if [[ "$RELEASE_TYPE" == "raspbian" ]]; then
@@ -159,7 +158,7 @@ fn-publish-package() {
done
DIST=debian
- OS_IDS=("stretch" "buster" "bullseye")
+ OS_IDS=("buster" "bullseye")
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"
@@ -408,18 +407,15 @@ main() {
fn-extract-package "$IS_RELEASE" "dokku_${NEXT_VERSION}_armhf.deb" || log-fail "Error extracting deb package"
fn-extract-package "$IS_RELEASE" "dokku_${NEXT_VERSION}_arm64.deb" || log-fail "Error extracting deb package"
fn-extract-package "$IS_RELEASE" "dokku_${NEXT_VERSION}_amd64.deb" || log-fail "Error extracting deb package"
- fn-extract-package "$IS_RELEASE" "dokku-${NEXT_VERSION}-1.x86_64.rpm" || log-fail "Error extracting rpm package"
mkdir -p build/package
cp -f "build/dokku_${NEXT_VERSION}_amd64.deb" build/package/dokku-amd64.deb
cp -f "build/dokku_${NEXT_VERSION}_arm64.deb" build/package/dokku-arm64.deb
cp -f "build/dokku_${NEXT_VERSION}_armhf.deb" build/package/dokku-armhf.deb
- cp -f "build/dokku-${NEXT_VERSION}-1.x86_64.rpm" build/package/dokku-amd64.rpm
if [[ "$RELEASE" != "build" ]]; then
fn-publish-package "$IS_RELEASE" "raspbian" "build/dokku_${NEXT_VERSION}_armhf.deb" || log-fail "Error publishing deb package"
fn-publish-package "$IS_RELEASE" "deb" "build/dokku_${NEXT_VERSION}_arm64.deb" || log-fail "Error publishing deb package"
fn-publish-package "$IS_RELEASE" "deb" "build/dokku_${NEXT_VERSION}_amd64.deb" || log-fail "Error publishing deb package"
- fn-publish-package "$IS_RELEASE" "rpm" "build/dokku-${NEXT_VERSION}-1.x86_64.rpm" || log-fail "Error publishing rpm package"
fn-build-docker-image "$NEXT_VERSION" "$IS_RELEASE" || log-fail "Error building docker image"
fn-repo-push-tags "$IS_RELEASE"
diff --git a/deb.mk b/deb.mk
index 9d1382bb6..635ab036f 100644
--- a/deb.mk
+++ b/deb.mk
@@ -19,7 +19,7 @@ install-from-deb:
wget -nv -O - https://get.docker.com/ | sh
@echo "--> Installing dokku"
- wget -nv -O - https://packagecloud.io/dokku/dokku/gpgkey | apt-key add -
+ wget -qO- https://packagecloud.io/dokku/dokku/gpgkey | sudo tee /etc/apt/trusted.gpg.d/dokku.asc
@echo "deb https://packagecloud.io/dokku/dokku/ubuntu/ $(shell lsb_release -cs 2>/dev/null || echo "bionic") main" | sudo tee /etc/apt/sources.list.d/dokku.list
sudo apt-get update -qq >/dev/null
sudo DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true apt-get -qq -y --no-install-recommends install dokku
diff --git a/debian/control b/debian/control
index bace8b72d..b872c85c5 100644
--- a/debian/control
+++ b/debian/control
@@ -1,5 +1,5 @@
Package: dokku
-Version: 0.27.5
+Version: 0.27.10
Section: web
Priority: optional
Architecture: amd64
diff --git a/docs/advanced-usage/plugin-management.md b/docs/advanced-usage/plugin-management.md
index 3bb5d428e..07a09f450 100644
--- a/docs/advanced-usage/plugin-management.md
+++ b/docs/advanced-usage/plugin-management.md
@@ -35,35 +35,35 @@ dokku plugin:list
```
plugn: dev
- 00_dokku-standard 0.27.5 enabled dokku core standard plugin
- 20_events 0.27.5 enabled dokku core events logging plugin
- app-json 0.27.5 enabled dokku core app-json plugin
- apps 0.27.5 enabled dokku core apps plugin
- build-env 0.27.5 enabled dokku core build-env plugin
- buildpacks 0.27.5 enabled dokku core buildpacks plugin
- certs 0.27.5 enabled dokku core certificate management plugin
- checks 0.27.5 enabled dokku core checks plugin
- common 0.27.5 enabled dokku core common plugin
- config 0.27.5 enabled dokku core config plugin
- docker-options 0.27.5 enabled dokku core docker-options plugin
- domains 0.27.5 enabled dokku core domains plugin
- enter 0.27.5 enabled dokku core enter plugin
- git 0.27.5 enabled dokku core git plugin
- logs 0.27.5 enabled dokku core logs plugin
- network 0.27.5 enabled dokku core network plugin
- nginx-vhosts 0.27.5 enabled dokku core nginx-vhosts plugin
- plugin 0.27.5 enabled dokku core plugin plugin
- proxy 0.27.5 enabled dokku core proxy plugin
- ps 0.27.5 enabled dokku core ps plugin
- repo 0.27.5 enabled dokku core repo plugin
- resource 0.27.5 enabled dokku core resource plugin
- scheduler-docker-local 0.27.5 enabled dokku core scheduler-docker-local plugin
- shell 0.27.5 enabled dokku core shell plugin
- ssh-keys 0.27.5 enabled dokku core ssh-keys plugin
- storage 0.27.5 enabled dokku core storage plugin
- tags 0.27.5 enabled dokku core tags plugin
- tar 0.27.5 enabled dokku core tar plugin
- trace 0.27.5 enabled dokku core trace plugin
+ 00_dokku-standard 0.27.10 enabled dokku core standard plugin
+ 20_events 0.27.10 enabled dokku core events logging plugin
+ app-json 0.27.10 enabled dokku core app-json plugin
+ apps 0.27.10 enabled dokku core apps plugin
+ build-env 0.27.10 enabled dokku core build-env plugin
+ buildpacks 0.27.10 enabled dokku core buildpacks plugin
+ certs 0.27.10 enabled dokku core certificate management plugin
+ checks 0.27.10 enabled dokku core checks plugin
+ common 0.27.10 enabled dokku core common plugin
+ config 0.27.10 enabled dokku core config plugin
+ docker-options 0.27.10 enabled dokku core docker-options plugin
+ domains 0.27.10 enabled dokku core domains plugin
+ enter 0.27.10 enabled dokku core enter plugin
+ git 0.27.10 enabled dokku core git plugin
+ logs 0.27.10 enabled dokku core logs plugin
+ network 0.27.10 enabled dokku core network plugin
+ nginx-vhosts 0.27.10 enabled dokku core nginx-vhosts plugin
+ plugin 0.27.10 enabled dokku core plugin plugin
+ proxy 0.27.10 enabled dokku core proxy plugin
+ ps 0.27.10 enabled dokku core ps plugin
+ repo 0.27.10 enabled dokku core repo plugin
+ resource 0.27.10 enabled dokku core resource plugin
+ scheduler-docker-local 0.27.10 enabled dokku core scheduler-docker-local plugin
+ shell 0.27.10 enabled dokku core shell plugin
+ ssh-keys 0.27.10 enabled dokku core ssh-keys plugin
+ storage 0.27.10 enabled dokku core storage plugin
+ tags 0.27.10 enabled dokku core tags plugin
+ tar 0.27.10 enabled dokku core tar plugin
+ trace 0.27.10 enabled dokku core trace plugin
```
> Warning: All plugin commands other than `plugin:list` and `plugin:help` require sudo access and must be run directly from the Dokku server.
diff --git a/docs/appendices/0.28.0-migration-guide.md b/docs/appendices/0.28.0-migration-guide.md
new file mode 100644
index 000000000..9485b2372
--- /dev/null
+++ b/docs/appendices/0.28.0-migration-guide.md
@@ -0,0 +1,18 @@
+# 0.28.0 Migration Guide
+
+## Removals
+
+Support for the following operating systems has been removed:
+
+- CentOS 7
+- Debian 9 (Stretch)
+- Fedora
+- OpenSuse
+
+Dokku will no longer provide packages for RPM based systems. Debian 9 users _may_ use new Debian packages, though support is not guaranteed.
+
+All users are encouraged to install Dokku via the [Docker-based installation method](/docs/getting-started/install/docker.md), or switch to a supported operating system.
+
+## Deprecations
+
+Ubuntu 18.04 is now a deprecated installation target. The operating system will be considered EOL by Canonical in April 2023. Users are encouraged to upgrade to Ubuntu 22.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.
diff --git a/docs/assets/dokku-logo.svg b/docs/assets/dokku-logo.svg
new file mode 100644
index 000000000..29ada9ae0
--- /dev/null
+++ b/docs/assets/dokku-logo.svg
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/assets/favicons/browserconfig.xml b/docs/assets/favicons/browserconfig.xml
index 506727caf..4d1aae471 100644
--- a/docs/assets/favicons/browserconfig.xml
+++ b/docs/assets/favicons/browserconfig.xml
@@ -2,10 +2,10 @@
-
-
-
-
+
+
+
+
#da532c
diff --git a/docs/assets/favicons/manifest.json b/docs/assets/favicons/manifest.json
index d4cae553e..6af931548 100644
--- a/docs/assets/favicons/manifest.json
+++ b/docs/assets/favicons/manifest.json
@@ -2,37 +2,37 @@
"name": "Dokku",
"icons": [
{
- "src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.27.5\/docs\/assets\/favicons\/android-chrome-36x36.png",
+ "src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.27.10\/docs\/assets\/favicons\/android-chrome-36x36.png",
"sizes": "36x36",
"type": "image\/png",
"density": "0.75"
},
{
- "src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.27.5\/docs\/assets\/favicons\/android-chrome-48x48.png",
+ "src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.27.10\/docs\/assets\/favicons\/android-chrome-48x48.png",
"sizes": "48x48",
"type": "image\/png",
"density": "1.0"
},
{
- "src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.27.5\/docs\/assets\/favicons\/android-chrome-72x72.png",
+ "src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.27.10\/docs\/assets\/favicons\/android-chrome-72x72.png",
"sizes": "72x72",
"type": "image\/png",
"density": "1.5"
},
{
- "src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.27.5\/docs\/assets\/favicons\/android-chrome-96x96.png",
+ "src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.27.10\/docs\/assets\/favicons\/android-chrome-96x96.png",
"sizes": "96x96",
"type": "image\/png",
"density": "2.0"
},
{
- "src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.27.5\/docs\/assets\/favicons\/android-chrome-144x144.png",
+ "src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.27.10\/docs\/assets\/favicons\/android-chrome-144x144.png",
"sizes": "144x144",
"type": "image\/png",
"density": "3.0"
},
{
- "src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.27.5\/docs\/assets\/favicons\/android-chrome-192x192.png",
+ "src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.27.10\/docs\/assets\/favicons\/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image\/png",
"density": "4.0"
diff --git a/docs/assets/placeholder-avatar.jpg b/docs/assets/placeholder-avatar.jpg
new file mode 100644
index 000000000..26c0e4918
Binary files /dev/null and b/docs/assets/placeholder-avatar.jpg differ
diff --git a/docs/assets/social/discord.png b/docs/assets/social/discord.png
new file mode 100644
index 000000000..57a4ff53f
Binary files /dev/null and b/docs/assets/social/discord.png differ
diff --git a/docs/assets/social/github.png b/docs/assets/social/github.png
new file mode 100644
index 000000000..f3959d46b
Binary files /dev/null and b/docs/assets/social/github.png differ
diff --git a/docs/assets/social/irc.png b/docs/assets/social/irc.png
new file mode 100644
index 000000000..cfe5aa54a
Binary files /dev/null and b/docs/assets/social/irc.png differ
diff --git a/docs/assets/social/slack.png b/docs/assets/social/slack.png
new file mode 100644
index 000000000..ca910f44c
Binary files /dev/null and b/docs/assets/social/slack.png differ
diff --git a/docs/assets/style.css b/docs/assets/style.css
index 14cc4822c..e2cbaa671 100644
--- a/docs/assets/style.css
+++ b/docs/assets/style.css
@@ -1,251 +1,687 @@
:root {
- color-scheme: light dark;
+ /* Used on the hero background */
+ --primary-blue: #2A8FBD;
+ --dropdown-hover: #277FA930;
+ --cta-color: #79ACCA;
+ --cta-hover-color: #97C0D9;
+ --text-blue: #297BAB;
+ --badge-color: #09CACE5C;
+ --badge-circle-color: #297BAC;
+ --badge-hover-color: #10E3E85C;
+ --explore-cta-hover: #ffffffe8;
+ /* Used on anchor tag on blue background */
+ --transparent-white: #fffc;
+ /* Used for section background */
+ --slate-bg: #F5F5F5;
+ --slate-border: #DADADA;
+ --animation-speed: 40s;
+ /* Used on the code showcase */
+ --gradient-shadow: linear-gradient(45deg, #2A8FBD, #679ab2, #ffffff, #81ccef, #2abbbd, #c9e0eb, #66c1eb, #40809e, #2A8FBD);
+
+ --darkmode-light: #11398c;
+ --darkmode-button-light: #325fae;
+ --darkmode-button-light-hover: #254989;
+ --darkmode-dark: #0a2d75;
+
+ /* 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-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%;
}
+
body {
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
- font-size: 62.5%;
- font-weight: 400;
- padding-bottom: 40px;
- color: #5a5a5a;
- -webkit-font-smoothing: antialiased;
+ font-family: 'Lato', sans-serif;
}
-h1 {
- color: #5a5a5a;
- font-weight: 400;
- line-height: 1.1;
- margin-bottom: 12px;
- margin-top: 12px;
- text-rendering: optimizelegibility;
+
+.btn-check:active+.btn:focus,
+.btn-check:checked+.btn:focus,
+.btn.active:focus,
+.btn.show:focus,
+.btn:active:focus {
+ box-shadow: none;
}
-.header {
- background-color: #2a8fbd;
- padding: 22px 0;
+
+.fit-content {
+ width: fit-content;
}
-.header .heading {
- color: #fff;
- font-size: 2.4em;
- margin: 7px 0 0 0;
- padding: 0 0 0 1em;
+
+
+/* Common */
+
+.cta-arrow {
+ position: relative;
+ margin-left: 5px;
+ stroke-width: 2px;
+ fill: none;
+ stroke: currentColor;
}
-.header a {
- color: #fff;
- background-position: center left;
- display: block;
- width: 100%;
- height: 100%;
- -webkit-background-size: contain;
- -moz-background-size: contain;
- background-size: contain;
- background-repeat: no-repeat;
+
+.cta-arrow .cta-arrow__tip {
+ transition: transform .2s;
}
-.header .nav-item a {
- font-size: 1.6em;
+
+.cta-arrow .cta-arrow__line {
+ opacity: 0;
+ transition: opacity .2s;
}
-.header .navbar-brand a {
- background-image: url(https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.5/docs/assets/dokku.png);
- text-indent: 40px;
+
+a:hover>.cta-arrow .cta-arrow__line {
+ opacity: 1;
}
-.blurb {
- color: #424242;
- background-color: #ededed;
- background-image: url(https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.5/docs/assets/gplaypattern.png);
- padding: 45px 0;
- text-align: center;
+
+a:hover>.cta-arrow .cta-arrow__tip {
+ transform: translateX(3px);
}
-.blurb h2 {
- font-size: 3.5em;
+
+
+/* Navigation */
+
+.navbar-toggler,
+.navbar-toggler:focus {
+ border: none;
+ box-shadow: none;
+
}
-.blurb p {
- font-size: 1.9em;
- font-weight: 300;
- margin: 18px 0;
- text-align: center;
+
+.navbar-brand {
+ color: white;
+ font-weight: bold;
}
-.blurb .btn-lg {
- font-size: 2.2em;
+
+.navbar-brand:hover {
+ color: white;
}
+
+.nav-item .btn:hover {
+ border-color: transparent;
+ background-color: var(--dropdown-hover);
+}
+
+.nav-item .dropdown-menu strong {
+ width: max-content;
+}
+
+.nav-item .dropdown-menu a,
+.nav-item .dropdown-menu a:hover {
+ color: var(--text-blue);
+}
+
+.nav-item a {
+ font-weight: bolder;
+ color: var(--transparent-white);
+ transition: all .2s;
+}
+
+.nav-item a:hover,
+.nav-item a:focus {
+ color: white;
+}
+
+a.dropdown-toggle.show {
+ color: white;
+}
+
+.nav-item .cta,
+.nav-item .cta:focus {
+ background-color: var(--cta-color);
+ box-shadow: none;
+ border: none;
+ color: white;
+}
+
+.nav-item .cta:hover {
+ background-color: var(--cta-hover-color);
+ color: white;
+}
+
+.dropdown-menu.show {
+ box-shadow: 0px 0px 5px 0px #a1e1ff;
+ border: none;
+ margin-top: 10px;
+}
+
+ul.navbar-nav li.nav-item {
+ height: max-content;
+ transition: transform .2s;
+}
+
+
+/* hero section */
+
+.hero-section {
+ background: radial-gradient(56.99% 613.79% at 24.22% 51.49%, rgba(40, 39, 107, 0.2) 0%, rgba(0, 0, 0, 0.098) 100%), linear-gradient(0deg, #2A8FBD, #2A8FBD), linear-gradient(0deg, #28276C, #28276C);
+}
+
+.hero-section .badge-link {
+ font-weight: normal;
+ color: white;
+ text-decoration: none;
+ display: inline-block;
+}
+
+.hero-section .badge {
+ background-color: var(--badge-color);
+ font-size: 16px;
+ transition: background-color .2s;
+}
+
+.hero-section .badge-link:hover .badge {
+ background-color: var(--badge-hover-color);
+}
+
+.hero-section .cta {
+ background-color: var(--cta-color);
+ border: none;
+}
+
+.hero-section .cta:hover {
+ background-color: var(--cta-hover-color);
+}
+
+.hero-section .badge .circle {
+ width: 8px;
+ height: 8px;
+ display: inline-block;
+ background: var(--badge-circle-color);
+ border-radius: 100%;
+}
+
+.hero-heading {
+ font-weight: bolder;
+ font-size: 42px;
+}
+
+.hero-section .explore-cta {
+ background-color: white;
+ color: var(--primary-blue);
+}
+
+.hero-section .explore-cta:hover {
+ background-color: var(--explore-cta-hover);
+ color: var(--primary-blue);
+}
+
+.hero-section main {
+ padding-top: 5em;
+ padding-bottom: 5em;
+}
+
+.hero-section code {
+ background-color: var(--badge-color);
+ color: white;
+ font-family: inherit;
+ border-radius: 2px;
+}
+
+a.platform {
+ font-weight: 900;
+ color: inherit;
+ opacity: .8;
+ transition: all .2s;
+ text-decoration: none;
+}
+
+a.platform:hover {
+ color: inherit;
+ opacity: 1;
+}
+
+
+/* Quickstart code */
+
.quickstart-code {
- display: block;
+ position: relative;
line-height: 1.3em;
- margin: 45px auto;
- max-width: 860px;
+ filter: drop-shadow(0px 0px 8px #3B3D84);
padding: 0;
}
+
+.quickstart-code:before,
+.quickstart-code:after {
+ content: "";
+ position: absolute;
+ border-radius: 5px;
+ top: -2px;
+ left: -2px;
+ background: var(--gradient-shadow);
+ background-size: 400%;
+ width: calc(100% + 4px);
+ height: calc(100% + 4px);
+ z-index: -1;
+ animation: animate 60s linear infinite;
+}
+
+.quickstart-code:after {
+ filter: blur(30px);
+}
+
+@keyframes animate {
+ 0% {
+ background-position: 0 0;
+ }
+
+ 50% {
+ background-position: 300% 0;
+ }
+
+ 100% {
+ background-position: 0 0;
+ }
+}
+
.quickstart-code .title {
background-color: #dfdfdf;
background-image: linear-gradient(top, #f7f7f7 0%, #dfdfdf 7%, #ccc 100%);
border-radius: 5px 5px 0 0;
- box-shadow: 0 3px 0 rgba(0, 0, 0, 0.5);
color: #444;
display: block;
- font-size: 1.6em;
+ font-size: 1em;
font-weight: 400;
- margin: 0 20px;
+ margin: 0px;
padding: 3px 0;
text-align: center;
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
}
-.quickstart-code .tabs {
- background-color: #bcbcbc;
- border-top: 1px solid #686868;
- color: #444;
- display: flex;
- display: -webkit-flex;
- font-weight: bold;
- margin: 0 20px;
- padding: 0;
- text-align: center;
- text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-}
-.quickstart-code .tab {
- border-right: 1px solid #686868;
- cursor: pointer;
- flex: 1;
- -webkit-flex: 1;
-}
-.quickstart-code .tab-active {
- background-color: #ededed;
- border-radius: 0 0 5px 5px;
- box-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);
-}
-.quickstart-code .tab:last-of-type {
- border-right: none;
-}
+
.quickstart-code .shell {
- background-color: #171717;
+ background-color: #555699;
border-radius: 0 0 5px 5px;
border-top: 1px solid #bcbcbc;
- box-shadow: 0 5px 30px rgba(0, 0, 0, 0.3);
- display: none;
- font-size: 1.4em;
+ display: block;
+ font-size: 1em;
font-family: Menlo, Consolas, "Courier New", Courier, "Liberation Mono", monospace;
- margin: 0 20px;
+ margin: 0px;
padding: 20px;
text-shadow: none;
}
-.quickstart-code .shell-active {
- display: block;
-}
+
.quickstart-code .line {
display: block;
margin: 0;
padding: 0;
}
-.quickstart-code .line span {
- display: inline-block;
-}
+
.quickstart-code .line .output {
- color: #aaa;
-}
-.quickstart-code .path {
- color: #2a8fbd;
- content: '~';
- user-select: none;
+ color: #b7e2f9;
}
+
.quickstart-code .prompt {
color: #f90;
user-select: none;
}
+
.quickstart-code .command {
color: #ffc;
+ line-break: anywhere;
}
-.alternate-instructions {
- display: block;
- font-size: 1.6em;
- line-height: 1.3em;
- margin: 45px auto;
- max-width: 860px;
+
+
+/* Powered by */
+
+.powered-by {
+ padding-top: 8rem;
+ padding-bottom: 8rem;
+}
+
+.copy-caption {
+ color: var(--primary-blue);
+ border-left: 5px solid var(--primary-blue);
+}
+
+.copy-title {
+ font-size: 38px;
+}
+
+.copy-body {
+ line-height: 28px;
+ font-size: 18px;
+}
+
+.copy-body p {
+ margin-bottom: 1.3em;
+}
+
+a.copy-cta-btn {
+ color: var(--primary-blue);
+ background-color: transparent;
+ border-color: transparent;
+ border: none;
padding: 0;
- text-align: center;
+ vertical-align: baseline;
}
-.marketing .col-lg-4 {
- margin-bottom: 20px;
- text-align: center;
+
+a.copy-cta-btn:hover {
+ color: var(--primary-blue);
+ background-color: transparent;
+ border: transparent;
}
-.marketing .col-lg-4 p {
+
+.powered-by_brands img {
+ max-width: 300px;
+}
+
+
+/* Getting started */
+.getting-started {
+ margin-bottom: -20%;
+ z-index: 1;
+}
+
+.getting-started .container {
+ position: relative;
+ z-index: 1;
+}
+
+.getting-started::after {
+ position: absolute;
+ content: "";
+ top: 30%;
+ left: 0;
+ right: 0;
+ bottom: 20%;
+ background: linear-gradient(0deg, rgba(52, 52, 87, 0.2) -40.97%, rgba(0, 0, 0, 0) 103.19%), #2781AB;
+ z-index: 0;
+}
+
+.nav-tabs {
+ width: fit-content;
+ margin: 0 auto;
+ padding: 10px;
+ background-color: #4794B8;
+ border-radius: 20px 20px 0px 0px;
+}
+
+.nav-tabs .nav-link {
+ background: rgba(85, 86, 153, 0.72);
+ border-radius: 0px;
+ padding: 0.6em 3em;
+ color: var(--transparent-white);
+ font-weight: bold;
+ border: 0px;
+ position: relative;
+ font-size: 1em;
+}
+
+.nav-tabs .nav-link:hover {
+ color: white;
+}
+
+.nav-tabs .nav-link:hover svg path {
+ fill: white;
+}
+
+.nav-tabs .nav-link svg {
margin-right: 10px;
- margin-left: 10px;
}
-.featurette-divider {
- margin: 20px 0;
+
+.nav-tabs .nav-link svg path {
+ fill: var(--bs-gray-300);
+ transition: all .2s
}
-.featurette-heading {
- font-weight: normal;
- line-height: 1;
- letter-spacing: -1px;
+
+.nav-tabs .nav-link.active {
+ background: linear-gradient(0deg, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2)), #555699;
+ color: white;
}
-.featurette-heading .text-muted {
- font-weight: 300;
+
+.nav-tabs .nav-link.active svg path {
+ fill: white;
}
-.featurette img {
- width: 400px;
+
+.nav-tabs .nav-link.active::after {
+ content: '';
+ position: absolute;
+ margin-left: -10px;
+ left: 50%;
+ bottom: 0px;
+ height: 0;
+ width: 0;
+ border-bottom: 10px solid #4794B8;
+ border-left: 10px solid transparent;
+ border-right: 10px solid transparent;
}
-.slack-channel,
-.sponsors {
- background-color: #EEF1F7;
- font-size: 1.6em;
- font-weight: 300;
- margin-bottom: 2.5em;
- padding-top: 2.5em;
- padding-bottom: 2.5em;
- text-align: center
+
+.nav-tabs .nav-link:nth-child(1) {
+ border-radius: 15px 0px 0px 0px;
}
-.slack-channel .inline-container {
- display: inline-block;
- margin-left: 0.5em
+
+.nav-tabs .nav-link:nth-child(3) {
+ border-radius: 0px 15px 0px 0px;
}
-.slack-button {
- background-image: -webkit-linear-gradient(#FCFCFC, #EAEAEA);
- background-image: linear-gradient(#FCFCFC, #EAEAEA);
- border: 1px solid #ddd;
- padding: 0.25rem 0.5rem;
+
+.tab-content {
+ margin: 0 auto;
+ margin-top: -10px;
+ background: #4794B8;
+ box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.25);
+ border-radius: 7px;
+ padding: 10px;
+ padding-bottom: 0px;
}
-.slack-button img {
- height: 1em;
+
+.tab-pane {
+ margin-top: -20px;
}
-.sponsors {
- background-color: #272822;
- color: #FCFCFC;
+
+.tab-pane img {
+ width: 100%;
+ padding-top: 20px;
+ padding-bottom: 20px;
}
-.sponsors a {
- color: #f0ad4e;
+
+/* Plugins section */
+
+section.plugins {
+ padding-top: 25%;
+ padding-bottom: 8rem;
+ background: var(--slate-bg);
+ border-width: 2px 2px;
+ border-style: solid;
+ border-color: var(--slate-border);
}
-.sponsors .backer img,
-.sponsors .sponsor img {
- -webkit-border-radius: 3px;
- border-radius: 3px;
- border: 8px solid gray;
- margin: 20px auto 20px auto;
- max-width: 192px;
+
+section.plugins svg {
+ transform: scale(1.3);
}
-.sponsors .backer img {
- -webkit-border-radius: 50%;
+
+g#plugins:hover,
+g#plugins:hover g {
+ -webkit-animation-play-state: paused !important;
+ -moz-animation-play-state: paused !important;
+ -o-animation-play-state: paused !important;
+ animation-play-state: paused !important;
+}
+
+
+/* Support Us */
+
+section.supportus {
+ padding-top: 8rem;
+ padding-bottom: 8rem;
+}
+
+.supportus .copy-body {
+ max-width: 800px;
+ margin: 0 auto;
+}
+
+.supportus a.opencollective {
+ color: var(--primary-blue);
+ text-decoration: none;
+ font-weight: bold;
+}
+
+.avatar-section {
+ margin-top: 5em;
+ overflow: hidden;
+ position: relative;
+}
+
+.avatar-section:before,
+.avatar-section:after {
+ content: "";
+ position: absolute;
+ top: 0px;
+ width: 12%;
+ height: 100%;
+ pointer-events: none;
+ z-index: 2;
+}
+
+.avatar-section:before {
+ left: 0px;
+ background: var(--avatar-before-gradient);
+}
+
+.avatar-section:after {
+ right: 0px;
+ background: var(--avatar-after-gradient);
+}
+
+.avatar-row {
+ width: max-content;
+}
+
+.infinite-scroll {
+ animation: 48s linear 0s infinite normal none running scroll;
+}
+
+.avatar-row:hover {
+ -webkit-animation-play-state: paused;
+ -moz-animation-play-state: paused;
+ -o-animation-play-state: paused;
+ animation-play-state: paused;
+}
+
+.avatar-row:nth-child(2) {
+ animation-duration: 60s;
+}
+
+.avatar {
+ width: 80px;
+ height: 80px;
border-radius: 50%;
- border: 0;
+ display: flex;
+ justify-content: center;
+ overflow: hidden;
+ flex-shrink: 0;
}
-.sponsors img:hover {
- -moz-box-shadow: 4px 4px 8px 0px rgba(0,0,0,0.75);
- -webkit-box-shadow: 4px 4px 8px 0px rgba(0,0,0,0.75);
- box-shadow: 0px 0px 32px 0px rgba(0,0,0,0.75);
+
+.avatar img {
+ flex-shrink: 0;
+ min-width: 100%;
+ min-height: 100%
}
-.sponsors .fund-link {
- display: block;
- font-size: .8em;
+
+.avatar-link {
+ padding: 5px;
+ margin-right: 20px;
+ margin-bottom: 20px;
+ background: white;
+ border-radius: 50%;
+ filter: drop-shadow(rgba(0, 0, 0, 0.1) 0px 4px 6px);
+ transition: transform .2s linear;
}
+
+.avatar-link:hover {
+ transform: scaleX(1.1) scaleY(1.1);
+}
+
+@keyframes scroll {
+ from {
+ transform: translateX(0%);
+ }
+
+ to {
+ transform: translateX(-50%);
+ }
+}
+
+
+/* pro-cta section */
+
+section.pro-cta {
+ background: var(--slate-bg);
+ border-width: 2px 2px;
+ border-style: solid;
+ border-color: var(--slate-border);
+}
+
+
+/* Footer */
+
+footer {
+ background: var(--primary-blue);
+}
+
+footer p {
+ font-size: 1em;
+}
+
+footer a {
+ color: inherit;
+ font-weight: 900;
+ opacity: .9;
+ transition: all .2s;
+ text-decoration: none;
+}
+
+footer a:hover {
+ color: inherit;
+ opacity: 1;
+}
+
+
+/* Accessibility */
+
+@media (prefers-reduced-motion) {
+
+ g#plugins,
+ g#plugins g,
+ .avatar-row,
+ .quickstart-code:before,
+ .quickstart-code:after {
+ -webkit-animation-play-state: paused !important;
+ -moz-animation-play-state: paused !important;
+ -o-animation-play-state: paused !important;
+ animation-play-state: paused !important;
+ }
+}
+
+/* Documentation */
.list-group-item {
border: none;
font-size: 14px;
font-weight: normal;
padding: .2rem .5rem;
color: #157577;
+ transition: all .1s;
}
+
a.list-group-item {
- color: #666
+ color: #666;
+ font-size: 1em;
}
-.list-group-item.disabled:first-child, .list-group-item.disabled:first-child:focus, .list-group-item.disabled:first-child:hover {
+
+a.list-group-item:focus,
+a.list-group-item:hover,
+button.list-group-item:focus,
+button.list-group-item:hover {
+ color: #555;
+ text-decoration: none;
+ background-color: #f5f5f5;
+}
+
+.list-group-item.disabled:first-child,
+.list-group-item.disabled:first-child:focus,
+.list-group-item.disabled:first-child:hover {
margin-top: 0;
}
-.list-group-item.disabled, .list-group-item.disabled:focus, .list-group-item.disabled:hover {
+
+.list-group-item.disabled,
+.list-group-item.disabled:focus,
+.list-group-item.disabled:hover {
background: none;
color: #bbb;
cursor: default;
@@ -254,28 +690,33 @@ a.list-group-item {
margin-top: 2em;
text-transform: uppercase;
}
+
.table-of-contents {
font-size: 1.2em;
padding: 1em;
margin: 0 0 0.5em 0.5em;
}
+
.table-of-contents ul {
margin-bottom: 0;
padding-left: 20px;
}
+
.anchorjs-link {
color: #24cbce;
}
+
.markdown-body {
-webkit-font-smoothing: antialiased;
box-sizing: border-box;
color: rgb(71, 74, 84);
- font-size: 1.6em;
+ font-size: 1.1em;
font-weight: normal;
height: 20px;
- line-height: 1.5;
+ line-height: 1.7;
text-align: left;
}
+
.markdown-body h1 {
border-bottom: 1px solid #dfdfdf;
color: #444;
@@ -283,32 +724,40 @@ a.list-group-item {
padding-bottom: 1em;
margin-top: 0;
text-rendering: optimizelegibility;
+ font-weight: 900;
}
+
.markdown-body h2 {
font-size: 1.3em;
font-weight: 700;
color: #555;
margin-top: 2em;
text-transform: uppercase;
+ font-weight: 900;
}
+
.markdown-body h3 {
font-size: 1.2em;
font-weight: 700;
color: #555;
margin: 1em 0;
}
+
.markdown-body h4 {
font-size: 1.1em;
font-weight: 700;
color: #555;
margin: 1em 0;
}
-.markdown-body h1 + h2 {
+
+.markdown-body h1+h2 {
margin-top: 1em;
}
+
.highlight-show-language {
position: relative;
}
+
.highlight-show-language-label {
color: black;
background-color: #CFCFCF;
@@ -334,11 +783,13 @@ a.list-group-item {
-o-transform: none;
transform: none;
}
+
.highlight-output pre {
color: #fff;
background-color: #000;
padding: 10px;
}
+
code {
padding: 0;
padding-top: 0.2em;
@@ -351,18 +802,23 @@ code {
border-radius: 3px;
font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
}
+
code:before {
letter-spacing: -0.2em;
content: "\00a0";
}
+
code:after {
letter-spacing: -0.2em;
content: "\00a0";
}
-pre code:before, pre code:after {
+
+pre code:before,
+pre code:after {
letter-spacing: 0;
content: "";
}
+
pre {
display: block;
line-height: 1.428571429;
@@ -377,38 +833,48 @@ pre {
color: #4d4d4c;
margin: 2em 0;
}
+
blockquote {
border-left: 4px solid #5bc0de;
background-color: #f4f8fa;
padding: 15px 15px 1px;
margin-bottom: 30px;
}
+
.new-as-of {
border-left: 4px solid #d1f2a5;
background-color: #effab4;
}
+
.not-yet-released {
border-left: 4px solid #ef5b58;
background-color: #f9ad76;
}
+
.warning {
border-left: 4px solid #cd2512;
background-color: #d1675f;
color: white;
}
+
.fa:before {
-webkit-font-smoothing: antialiased
}
+
.clearfix {
*zoom: 1
}
-.clearfix:before, .clearfix:after {
+
+.clearfix:before,
+.clearfix:after {
display: table;
content: ""
}
+
.clearfix:after {
clear: both
}
+
.improve-slideout {
position: fixed;
bottom: 66%;
@@ -418,15 +884,18 @@ blockquote {
-o-transition-duration: 0.3s;
transition-duration: 0.3s;
background: #363637;
- padding: 5px 0 4px;
+ padding: 0px 0 3px;
z-index: 90;
}
+
.improve-slideout:hover {
right: 205px;
}
+
.improve-slideout:hover .improve-slideout-inner {
right: 0;
}
+
.improve-slideout-inner {
position: fixed;
bottom: 66%;
@@ -439,17 +908,20 @@ blockquote {
padding: 4px 12px;
width: 205px;
}
+
.improve-slideout-inner h6 {
color: #363637;
font-weight: 700;
text-transform: uppercase;
margin: 0;
- font-size: 1.3em;
+ font-size: 1em;
}
+
.git-improve {
- vertical-align: -2px;
+ vertical-align: baseline;
padding-left: 8px;
}
+
.back-to-contents {
position: fixed;
bottom: calc(66% - 34px);
@@ -458,31 +930,41 @@ blockquote {
padding: 5px 0 4px;
z-index: 90;
}
+
.icon-improve {
color: #bdbdb5;
padding: 2px 9px 0 10px;
}
+
a .fa {
display: inline-block;
text-decoration: inherit
}
+
li .fa {
display: inline-block
}
-li .fa-large:before, li .fa-large:before {
+
+li .fa-large:before,
+li .fa-large:before {
width: 1.875em
}
+
ul.fas {
list-style-type: none;
margin-left: 2em;
text-indent: -0.8em
}
+
ul.fas li .fa {
width: 0.8em
}
-ul.fas li .fa-large:before, ul.fas li .fa-large:before {
+
+ul.fas li .fa-large:before,
+ul.fas li .fa-large:before {
vertical-align: baseline
}
+
.rst-versions {
position: fixed;
bottom: 0;
@@ -494,13 +976,16 @@ ul.fas li .fa-large:before, ul.fas li .fa-large:before {
font-family: "Lato", "proxima-nova", "Helvetica Neue", Arial, sans-serif;
z-index: 400
}
+
.rst-versions a {
color: #7c8e98;
text-decoration: none
}
+
.rst-versions .rst-badge-small {
display: none
}
+
.rst-versions .rst-current-version {
padding: 12px;
background-color: #2475c3;
@@ -510,31 +995,40 @@ ul.fas li .fa-large:before, ul.fas li .fa-large:before {
color: #d8edf8;
*zoom: 1
}
-.rst-versions .rst-current-version:before, .rst-versions .rst-current-version:after {
+
+.rst-versions .rst-current-version:before,
+.rst-versions .rst-current-version:after {
display: table;
content: ""
}
+
.rst-versions .rst-current-version:after {
clear: both
}
+
.rst-versions .rst-current-version .fa {
color: #fcfcfc
}
+
.rst-versions .rst-current-version .fa-book {
float: left;
line-height: 30px
}
+
.rst-versions .rst-current-version .icon-book {
float: left
}
+
.rst-versions .rst-current-version.rst-out-of-date {
background-color: #E74C3C;
color: #fff
}
+
.rst-versions .rst-current-version.rst-active-old-version {
background-color: #F1C40F;
color: #000
}
+
.rst-versions.rst-badge {
border: none;
bottom: 20px;
@@ -546,25 +1040,32 @@ ul.fas li .fa-large:before, ul.fas li .fa-large:before {
right: 20px;
width: auto;
}
+
.rst-versions.rst-badge.shift-up {
overflow-y: scroll;
height: calc(100vh - 100px);
}
+
.rst-versions.rst-badge .icon-book {
float: none
}
+
.rst-versions.rst-badge .fa-book {
float: none
}
+
.rst-versions.rst-badge.shift-up .rst-current-version {
text-align: right
}
+
.rst-versions.rst-badge.shift-up .rst-current-version .fa-book {
float: left
}
+
.rst-versions.rst-badge.shift-up .rst-current-version .icon-book {
float: left
}
+
.rst-versions.rst-badge .rst-current-version {
width: auto;
height: 30px;
@@ -573,17 +1074,21 @@ ul.fas li .fa-large:before, ul.fas li .fa-large:before {
display: block;
text-align: center
}
+
.rst-other-versions {
display: none;
padding: 12px;
text-align: left;
}
+
.shift-up .rst-other-versions {
display: block;
}
+
.rst-other-versions a {
border: 0;
}
+
.rst-other-versions hr {
display: block;
border: 0;
@@ -591,19 +1096,24 @@ ul.fas li .fa-large:before, ul.fas li .fa-large:before {
padding: 0;
border-top: solid 1px #d6edf9
}
+
.rst-other-versions dl {
margin: 0;
}
+
.rst-other-versions dd {
display: inline-block;
margin: 0
}
+
.rst-other-versions dd a {
display: inline-block;
padding: 6px;
color: #fcfcfc
}
-.dev-warning, .outdated-warning {
+
+.dev-warning,
+.outdated-warning {
position: absolute;
top: 0;
width: 100%;
@@ -617,121 +1127,218 @@ ul.fas li .fa-large:before, ul.fas li .fa-large:before {
background-image: -ms-linear-gradient(-45deg, rgba(0, 0, 0, 0.04) 25%, transparent 25%, transparent 50%, rgba(0, 0, 0, 0.04) 50%, rgba(0, 0, 0, 0.04) 75%, transparent 75%, transparent);
background-image: linear-gradient(135deg, rgba(0, 0, 0, 0.04) 25%, transparent 25%, transparent 50%, rgba(0, 0, 0, 0.04) 50%, rgba(0, 0, 0, 0.04) 75%, transparent 75%, transparent);
font-family: "Roboto", Corbel, Avenir, "Lucida Grande", "Lucida Sans", sans-serif;
- font-size: 1.6em;
+ font-size: 1.1em;
text-align: center;
background-color: #ffe761;
}
-@media screen and (max-width: 768px) {
- .rst-versions {
- width: 85%;
- display: none
- }
- .rst-versions.shift {
- display: block
- }
- img {
- width: 100%;
- height: auto
- }
-}
-.button.slack-button > img {
- width: inherit;
-}
-
-@media (min-width: 768px) {
- .col-md-offset-right-2 {
- margin-right: 20.666667%;
- }
- .quickstart-code {
- line-height: 22px;
- }
- .featurette-heading {
- font-size: 5em;
- }
-}
-@media (min-width: 992px) {
- .featurette img {
- width: 300px;
- }
- .featurette-heading {
- margin-top: 30px;
- }
-}
+/* Large devices (desktops, 992px and up) */
@media (max-width: 992px) {
- .featurette img {
- width: 200px;
+ .nav-item a.cta {
+ width: 100%;
+ }
+
+ .powered-by {
+ padding-bottom: 4rem;
+ }
+
+ .nav-tabs .nav-link {
+ padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);
+ font-size: 0.8em;
+ padding: 1.2em 1.2em;
+ }
+
+ .nav-tabs .nav-link svg {
+ margin-right: 5px;
+ width: 25px;
+ height: 25px;
+ }
+
+ section.plugins {
+ padding-top: 30%;
+ }
+
+ section.plugins svg {
+ transform: scale(1.1);
}
}
-@media (prefers-color-scheme: dark) {
- body {
- background-color: rgb(13, 17, 23);
- }
- .header {
- background-color: #0b1f4c;
- }
- .blurb {
- filter: invert(1);
- }
- .slack-channel {
- background-color: #110e09;
- }
- code {
- background-color: rgb(22, 27, 34);
- color: #bbb;
- }
- pre {
- background-color: rgb(22, 27, 34);
- color: #bbb;
- border: 1px solid #555;
- box-shadow: 0 0 0 3px #111;
- }
- .highlight-show-language-label {
- filter: invert(1);
- }
- .list-group-item {
- background-color: rgb(13, 17, 23);
- }
- blockquote {
- background-color: rgba(0, 82, 204, 0.18);
- border-left: 4px solid rgba(108, 169, 255, 0.3);;
- color: rgb(108, 169, 255);
- }
- blockquote.warning {
- border-left: 4px solid rgba(239, 136, 84, 0.3);
- background-color: rgba(235, 100, 32, 0.18);
- color: rgb(239, 136, 84);
- }
- blockquote.new-as-of {
- border-left: 4px solid rgba(11, 216, 73, 0.3);
- background-color: rgba(9, 171, 60, 0.18);
- color: rgb(11, 216, 73);
- }
- .dev-warning, .outdated-warning {
- background-color: #4e440d;
- color: #fff;
- }
- .table-striped tbody tr:nth-of-type(odd) {
- background-color: #080808
- }
- .table-hover tbody tr:hover {
- background-color: #3b3b3b;
- color: #bbb;
- }
- .table td, .table th {
- border-top: 1px solid #131110;
- }
- .table thead th {
- border-bottom: 2px solid #131110;
- }
- .markdown-body {
- color: rgb(184, 181, 171);
- }
- .markdown-body h1 {
- color: #bbb;
- }
- .markdown-body h2, .markdown-body h3, .markdown-body h4 {
- color: #aaa;
- }
-}
+@media (prefers-color-scheme: dark) {
+ body {
+ background-color: var(--darkmode-dark);
+ color: white;
+ }
+
+ header,
+ footer {
+ background: #0b1f4c !important;
+ }
+
+ .hero-section .cta {
+ background-color: var(--darkmode-button-light);
+ }
+
+ .hero-section .cta:hover {
+ background-color: var(--darkmode-button-light-hover);
+ }
+
+ .hero-section .explore-cta {
+ color: white;
+ }
+
+ .hero-section .explore-cta:hover {
+ color: white;
+ }
+
+ .getting-started::after {
+ background: linear-gradient(0deg, rgba(52, 52, 87, 0.2) -40.97%, rgba(0, 0, 0, 0) 103.19%),
+ #043791;
+ }
+
+ .tab-content {
+ background: #043791;
+ }
+
+ .nav-tabs {
+ background: #043791;
+ }
+
+ .powered-by_brands {
+ filter: contrast(2);
+ }
+
+ div.quickstart-code {
+ filter: none;
+ }
+
+ .quickstart-code .shell {
+ background: #313274;
+ }
+
+ section.powered-by {
+ background: var(--darkmode-light);
+ }
+
+ section.plugins {
+ background: var(--darkmode-dark);
+ border-width: 0px;
+ }
+
+ section.supportus {
+ background: var(--darkmode-light);
+ border-width: 0px;
+ }
+
+ section.pro-cta {
+ background: var(--darkmode-dark);
+ border-width: 0px;
+ }
+
+ .avatar-section:before {
+ background: var(--avatar-darkmode-before-gradient);
+ }
+
+ .avatar-section:after {
+ background: var(--avatar-darkmode-after-gradient);
+ }
+
+ .blurb {
+ filter: invert(1);
+ }
+
+ .slack-channel {
+ background-color: #110e09;
+ }
+
+ code {
+ background-color: #052148;
+ color: #bbb;
+ }
+
+ pre {
+ background-color: #052148;
+ color: #bbb;
+ border: 1px solid #052148;
+ box-shadow: 0 0 0 3px #07387b;
+ }
+
+ .list-group-item.disabled,
+ .list-group-item.disabled:focus,
+ .list-group-item.disabled:hover {
+ color: var(--bs-gray-100);
+ }
+
+ a.list-group-item {
+ background-color: var(--darkmode-dark);
+ color: var(--bs-gray-500);
+ }
+
+ a.list-group-item:focus,
+ a.list-group-item:hover,
+ button.list-group-item:focus,
+ button.list-group-item:hover {
+ color: white;
+ background-color: var(--darkmode-button-light-hover);
+ }
+
+ blockquote {
+ background-color: rgba(0, 82, 204, 0.18);
+ border-left: 4px solid rgba(108, 169, 255, 0.3);
+ ;
+ color: rgb(108, 169, 255);
+ }
+
+ blockquote.warning {
+ border-left: 4px solid rgba(239, 136, 84, 0.3);
+ background-color: rgba(235, 100, 32, 0.18);
+ color: rgb(239, 136, 84);
+ }
+
+ blockquote.new-as-of {
+ border-left: 4px solid rgba(11, 216, 73, 0.3);
+ background-color: rgba(9, 171, 60, 0.18);
+ color: rgb(11, 216, 73);
+ }
+
+ .dev-warning,
+ .outdated-warning {
+ background-color: #4e440d;
+ color: #fff;
+ }
+
+ .table-striped tbody tr:nth-of-type(odd) {
+ background-color: #080808
+ }
+
+ .table-hover tbody tr:hover {
+ background-color: #3b3b3b;
+ color: #bbb;
+ }
+
+ .table td,
+ .table th {
+ border-top: 1px solid #131110;
+ }
+
+ .table thead th {
+ border-bottom: 2px solid #131110;
+ }
+
+ .markdown-body {
+ color: var(--bs-gray-400);
+ }
+
+ .markdown-body h1 {
+ color: white;
+ }
+
+ .markdown-body h2,
+ .markdown-body h3,
+ .markdown-body h4 {
+ color: var(--bs-gray-300);
+ }
+
+ .markdown-body a {
+ color: #ffffff;
+ }
+}
\ No newline at end of file
diff --git a/docs/assets/universe/universe animation.keyshape b/docs/assets/universe/universe animation.keyshape
new file mode 100644
index 000000000..1cc50819c
Binary files /dev/null and b/docs/assets/universe/universe animation.keyshape differ
diff --git a/docs/assets/universe/universe animation.svg b/docs/assets/universe/universe animation.svg
new file mode 100644
index 000000000..a2056619e
--- /dev/null
+++ b/docs/assets/universe/universe animation.svg
@@ -0,0 +1,303 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/assets/versions.json b/docs/assets/versions.json
index dd671dbd9..0e4c2f3be 100644
--- a/docs/assets/versions.json
+++ b/docs/assets/versions.json
@@ -24,6 +24,6 @@
"0.24.10",
"0.25.7",
"0.26.8",
- "0.27.5"
+ "0.27.10"
]
}
diff --git a/docs/configuration/environment-variables.md b/docs/configuration/environment-variables.md
index 2914a6d03..bb078ec93 100644
--- a/docs/configuration/environment-variables.md
+++ b/docs/configuration/environment-variables.md
@@ -14,7 +14,7 @@ config:keys (|--global) [--merged]
config:set [--encoded] [--no-restart] (|--global) KEY1=VALUE1 [KEY2=VALUE2 ...] Set one or more config vars
config:unset [--no-restart] (|--global) KEY1 [KEY2 ...] Unset one or more config vars
```
-> For security reasons - and as per [docker recommendations](https://github.com/docker/docker/issues/13490) - Dockerfile-based deploys have variables available _only_ during runtime, as noted in [this issue](https://github.com/dokku/dokku/issues/1860).
+> For security reasons - and as per [docker recommendations](https://github.com/docker/docker/issues/13490) - Dockerfile-based deploys have variables available _only_ during runtime, as noted in [this issue](https://github.com/dokku/dokku/issues/1860). Consider using [build arguments](/docs/deployment/builders/dockerfiles.md#build-time-configuration-variables) to expose variables during build-time for Dockerfile apps.
Environment variables are available both at run time and during the application build/compilation step for buildpack-based deploys.
diff --git a/docs/deployment/builders/cloud-native-buildpacks.md b/docs/deployment/builders/cloud-native-buildpacks.md
index 572a6d2c4..ebbb15768 100644
--- a/docs/deployment/builders/cloud-native-buildpacks.md
+++ b/docs/deployment/builders/cloud-native-buildpacks.md
@@ -84,7 +84,7 @@ dokku builder-pack:set --global projecttoml-path
You can get a report about the app's storage status using the `builder-pack:report` command:
```shell
-dokku app-json:report
+dokku builder-pack:report
```
```
diff --git a/docs/deployment/logs.md b/docs/deployment/logs.md
index 1271ddde6..f4f2ce66c 100644
--- a/docs/deployment/logs.md
+++ b/docs/deployment/logs.md
@@ -20,6 +20,8 @@ You can easily get logs of an app using the `logs` command:
dokku logs node-js-app
```
+Logs are pulled via integration with the scheduler for the specified application via "live tailing". As such, logs from previously running deployments are usually not available. Users that desire to see logs from previous deployments for debugging purposes should persist those logs to external services. Please see Dokku's [vector integration](deployment/logs.md#vector-logging-shipping) for more information on how to persist logs across deployments to ship logs to another service or a third-party platform.
+
#### Behavioral modifiers
Dokku also supports certain command-line arguments that augment the `log` command's behavior.
diff --git a/docs/deployment/schedulers/docker-local.md b/docs/deployment/schedulers/docker-local.md
index df2048f78..5d50da590 100644
--- a/docs/deployment/schedulers/docker-local.md
+++ b/docs/deployment/schedulers/docker-local.md
@@ -91,7 +91,11 @@ Omitting or removing the entry will result in parallelism for that process type
Note that increasing the value of `max_parallel` may significantly impact CPU utilization on your host as your app containers - and their respective processes - start up. Setting a value higher than the number of available CPUs is discouraged. It is recommended that users carefully set this value so as not to overburden their server.
-## Implemented Triggers
+## Scheduler Interface
+
+The following sections describe implemented scheduler functionality for the `docker-local` scheduler.
+
+### Implemented Commands and Triggers
This plugin implements various functionality through `plugn` triggers to integrate with Docker for running apps on a single server. The following functionality is supported by the `scheduler-docker-local` plugin.
@@ -105,11 +109,16 @@ This plugin implements various functionality through `plugn` triggers to integra
- `ps:stop`
- `run`
-## Supported Resource Management Properties
+
+### Logging support
+
+App logs for the `logs` command are fetched from running containers via the `docker` cli. To persist logs across deployments, consider using Dokku's [vector integration](deployment/logs.md#vector-logging-shipping) to ship logs to another service or a third-party platform.
+
+### Supported Resource Management Properties
The `docker-local` scheduler supports a minimal list of resource _limits_ and _reservations_. The following properties are supported:
-### Resource Limits
+#### Resource Limits
- cpu: (docker option: `--cpus`), is specified in number of CPUs a process can access.
- See the ["CPU" section](https://docs.docker.com/config/containers/resource_constraints/#cpu) of the Docker Runtime Options documentation for more information.
@@ -120,7 +129,7 @@ The `docker-local` scheduler supports a minimal list of resource _limits_ and _r
- nvidia-gpus: (docker option: `--gpus`), is specified in number of Nvidia GPUs a process can access.
- See the ["GPU" section](https://docs.docker.com/config/containers/resource_constraints/#gpu) of the Docker Runtime Options documentation for more information.
-### Resource Reservations
+#### Resource Reservations
- 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.
diff --git a/docs/deployment/schedulers/kubernetes.md b/docs/deployment/schedulers/kubernetes.md
index 245f5857d..1d945bf88 100644
--- a/docs/deployment/schedulers/kubernetes.md
+++ b/docs/deployment/schedulers/kubernetes.md
@@ -2,13 +2,23 @@
> Warning: This scheduler is not in Dokku core and thus functionality may change over time as the API stabilizes.
-The [Kubernetes Scheduler Plugin](https://github.com/dokku/dokku-scheduler-kubernetes) implements the following functionality:
+The [Nomad Scheduler Plugin](https://github.com/dokku/dokku-scheduler-kubernetes) is available free as an external plugin. Please see the plugin's [issue tracker](https://github.com/dokku/dokku-scheduler-kubernetes/issues) for more information on the status of the plugin.
+
+For users that require additional functionality, please refer to the [Sponsoring Documentation](https://github.com/dokku/.github/blob/master/SPONSORING.md).
+
+## Scheduler Interface
+
+The following sections describe implemented scheduler functionality for the `docker-local` scheduler.
+
+### Implemented Commands and Triggers
+
+This plugin implements various functionality through `plugn` triggers to integrate with `kubectl` for running apps on a Kubernetes cluster. The following functionality is supported by the `scheduler-kubernetes` plugin.
- `apps:destroy`
- `deploy`: partial, does not implement failed deploy log capture
- `logs`: partial, does not implement failure logs
- `ps:stop`
-Please see the plugin's [issue tracker](https://github.com/dokku/dokku-scheduler-kubernetes/issues) for more information on the status of the plugin.
+### Logging support
-For users that require additional functionality, please refer to the [Sponsoring Documentation](https://github.com/dokku/.github/blob/master/SPONSORING.md).
+App logs for the `logs` command are fetched from running pods via the `kubectl` cli. To persist logs across deployments, consider using [Vector](https://vector.dev/docs/setup/installation/platforms/kubernetes/) or a similar tool to ship logs to another service or a third-party platform.
diff --git a/docs/deployment/schedulers/nomad.md b/docs/deployment/schedulers/nomad.md
index 380f92875..e043db3a9 100644
--- a/docs/deployment/schedulers/nomad.md
+++ b/docs/deployment/schedulers/nomad.md
@@ -2,12 +2,22 @@
> Warning: This scheduler is not in Dokku core and thus functionality may change over time as the API stabilizes.
-The [Nomad Scheduler Plugin](https://github.com/dokku/dokku-scheduler-nomad) implements the following functionality:
+The [Nomad Scheduler Plugin](https://github.com/dokku/dokku-scheduler-nomad) is available free as an external plugin. Please see the plugin's [issue tracker](https://github.com/dokku/dokku-scheduler-nomad/issues) for more information on the status of the plugin.
+
+For users that require additional functionality, please refer to the [Sponsoring Documentation](https://github.com/dokku/.github/blob/master/SPONSORING.md).
+
+## Scheduler Interface
+
+The following sections describe implemented scheduler functionality for the `docker-local` scheduler.
+
+### Implemented Commands and Triggers
+
+This plugin implements various functionality through `plugn` triggers to integrate with the `nomad` cli for running apps on a Nomad cluster. The following functionality is supported by the `scheduler-nomad` plugin.
- `apps:destroy`
- `deploy`
- `ps:stop`
-Please see the plugin's [issue tracker](https://github.com/dokku/dokku-scheduler-nomad/issues) for more information on the status of the plugin.
+### Logging support
-For users that require additional functionality, please refer to the [Sponsoring Documentation](https://github.com/dokku/.github/blob/master/SPONSORING.md).
+> Warning: Fetching app logs for the `logs` command is currently not implemented. Please consider using [Vector](https://vector.dev/docs/setup/installation/platforms/kubernetes/) or a similar tool to ship logs to another service or a third-party platform.
diff --git a/docs/development/plugin-triggers.md b/docs/development/plugin-triggers.md
index 95f9da8d2..3e5564eee 100644
--- a/docs/development/plugin-triggers.md
+++ b/docs/development/plugin-triggers.md
@@ -441,7 +441,6 @@ DOKKU_SCHEDULER="$1"
```shell
#!/usr/bin/env bash
# Installs nginx for the current plugin
-# Supports both opensuse and ubuntu
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
@@ -451,9 +450,8 @@ case "$DOKKU_DISTRO" in
debian|raspbian|ubuntu)
apt-get -qq -y --no-install-recommends install nginx
;;
-
- opensuse)
- zypper -q in -y nginx
+ *)
+ echo "Installation on $DOKKU_DISTRO not supported" 1>&2
;;
esac
```
diff --git a/docs/development/release-process.md b/docs/development/release-process.md
index a9a316814..0e3825fea 100644
--- a/docs/development/release-process.md
+++ b/docs/development/release-process.md
@@ -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.27.5-2 (Mon Feb 22 23:20:37 CET 2016)"
+# wait for "==> build-arch: ==> Finished making: dokku 0.27.10-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'
diff --git a/docs/getting-started/advanced-installation.md b/docs/getting-started/advanced-installation.md
index 07519b31a..02fbd6143 100644
--- a/docs/getting-started/advanced-installation.md
+++ b/docs/getting-started/advanced-installation.md
@@ -12,7 +12,6 @@ As well, you may wish to customize your installation in some other fashion. or e
- [Debian Package Installation Notes](/docs/getting-started/install/debian.md)
- [Docker-based Installation Notes](/docs/getting-started/install/docker.md)
-- [RPM Package Installation Notes](/docs/getting-started/install/rpm.md)
- [Vagrant Installation Notes](/docs/getting-started/install/vagrant.md)
- [Advanced Install Customization](/docs/getting-started/advanced-installation.md)
- [Automated deployment via ansible](https://github.com/dokku/ansible-dokku)
diff --git a/docs/getting-started/install/debian.md b/docs/getting-started/install/debian.md
index dfc0e093e..e0c39e019 100644
--- a/docs/getting-started/install/debian.md
+++ b/docs/getting-started/install/debian.md
@@ -11,7 +11,7 @@ sudo apt-get -qq -y --no-install-recommends install apt-transport-https
wget -nv -O - https://get.docker.com/ | sh
# install dokku
-wget -nv -O - https://packagecloud.io/dokku/dokku/gpgkey | apt-key add -
+wget -qO- https://packagecloud.io/dokku/dokku/gpgkey | sudo tee /etc/apt/trusted.gpg.d/dokku.asc
OS_ID="$(lsb_release -cs 2>/dev/null || echo "bionic")"
echo "bionic focal jammy" | grep -q "$OS_ID" || OS_ID="bionic"
echo "deb https://packagecloud.io/dokku/dokku/ubuntu/ ${OS_ID} main" | sudo tee /etc/apt/sources.list.d/dokku.list
diff --git a/docs/getting-started/install/docker.md b/docs/getting-started/install/docker.md
index 006f8c4b3..2b3cdcfd4 100644
--- a/docs/getting-started/install/docker.md
+++ b/docs/getting-started/install/docker.md
@@ -3,7 +3,7 @@
Pull the dokku/dokku image:
```shell
-docker pull dokku/dokku:0.27.5
+docker pull dokku/dokku:0.27.10
```
Next, run the image.
@@ -18,7 +18,7 @@ docker container run \
--publish 8443:443 \
--volume /var/lib/dokku:/mnt/dokku \
--volume /var/run/docker.sock:/var/run/docker.sock \
- dokku/dokku:0.27.5
+ dokku/dokku:0.27.10
```
The above command will start a new docker container that is ready when a message similar to `Runit started as PID 12345` appears.
diff --git a/docs/getting-started/install/rpm.md b/docs/getting-started/install/rpm.md
deleted file mode 100644
index 52c12106b..000000000
--- a/docs/getting-started/install/rpm.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# RPM Package Installation Notes
-
-> New as of 0.8.0 *(experimental)*
-
-> **Warning:** Web installer is not available on CentOS. You will need to configure [SSH keys](/docs/deployment/user-management.md#adding-ssh-keys) and [virtual hosts](/docs/configuration/domains.md#customizing-hostnames) using dokku command line interface.
-
-Dokku defaults to being installed via RPM package on CentOS 7. While certain hosts may require extra work to get running, you may optionally wish to automate the installation of Dokku without the use of our `bootstrap.sh` Bash script. The following are the steps run by said script:
-
-```shell
-# Install docker
-curl -fsSL https://get.docker.com/ | sh
-
-# Install epel for nginx packages to be available
-sudo yum install -y epel-release
-
-# Install dokku
-curl -s https://packagecloud.io/install/repositories/dokku/dokku/script.rpm.sh | sudo bash
-sudo yum install -y herokuish dokku
-sudo dokku plugin:install-dependencies --core
-systemctl start nginx
-
-# Enable docker and nginx on system startup
-systemctl enable docker
-systemctl enable nginx
-```
-
-The [devicemapper](https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/) is the default Docker storage driver on CentOS 7 and defaults to a configuration mode known as `loop-lvm`. This mode is designed to work out-of-the-box with no additional configuration. However, production deployments should not run under `loop-lvm` mode. The preferred configuration for production deployments is [`direct-lvm`](https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/#/configure-direct-lvm-mode-for-production).
diff --git a/docs/getting-started/installation.md b/docs/getting-started/installation.md
index 0d787a9ab..694f4429f 100644
--- a/docs/getting-started/installation.md
+++ b/docs/getting-started/installation.md
@@ -10,8 +10,7 @@ To start using Dokku, you'll need a system that meets the following minimum requ
- A fresh installation of any of the following operating systems:
- [Ubuntu 18.04/20.04/22.04](https://www.ubuntu.com/download)
- - [Debian 9+ x64](https://www.debian.org/distrib/)
- - [CentOS 7 x64](https://www.centos.org/download/) *(experimental)*
+ - [Debian 10+ 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
- ARMV7 (alternatively known as `armhf`), commonly used for Raspberry PI
@@ -39,8 +38,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 https://raw.githubusercontent.com/dokku/dokku/v0.27.5/bootstrap.sh;
-sudo DOKKU_TAG=v0.27.5 bash bootstrap.sh
+wget https://raw.githubusercontent.com/dokku/dokku/v0.27.10/bootstrap.sh;
+sudo DOKKU_TAG=v0.27.10 bash bootstrap.sh
```
The installation process takes about 5-10 minutes, depending upon internet connection speed.
diff --git a/docs/getting-started/uninstalling.md b/docs/getting-started/uninstalling.md
index 480c33f9a..c4b1a8c28 100644
--- a/docs/getting-started/uninstalling.md
+++ b/docs/getting-started/uninstalling.md
@@ -9,13 +9,6 @@ While we hate to see you go, if you need to uninstall Dokku, the following may h
yay -Rsn dokku
```
-## CentOS Uninstallation
-
-```shell
-# uninstall dokku
-yum remove dokku herokuish
-```
-
## Debian Uninstallation
```shell
diff --git a/docs/getting-started/upgrading.md b/docs/getting-started/upgrading.md
index 98be5a4f9..65c058862 100644
--- a/docs/getting-started/upgrading.md
+++ b/docs/getting-started/upgrading.md
@@ -9,7 +9,6 @@ For any security related updates, please follow our [Twitter account](https://tw
Your operating system may occasionally provide security updates. We recommend setting unattended upgrades for your operating system. Here are some helpful links:
- [Arch Linux System Maintenance](https://wiki.archlinux.org/index.php/System_maintenance)
-- [CentOS Automatic Security Updates](https://serversforhackers.com/c/automatic-security-updates-centos)
- [Debian Unattended Upgrades](https://wiki.debian.org/UnattendedUpgrades)
- [Ubuntu Unattended Upgrades](https://help.ubuntu.com/community/AutomaticSecurityUpdates)
diff --git a/docs/home.html b/docs/home.html
index f8d2a33eb..6a03224ff 100644
--- a/docs/home.html
+++ b/docs/home.html
@@ -1,350 +1,738 @@
-
+
+
-
Dokku - The smallest PaaS implementation you've ever seen
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
-
-
-
-