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 - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - + + - - - - - - -
-
-
-
-

- Dokku -

- -
+ + + + + + + + + + + +
+ +
+
+
+
Latest release v0.27.1
+

An open source PAAS alternative to Heroku.

+

Dokku helps you build and manage the lifecycle of applications from building to scaling.

+ +
+
+
+

Quick-start Instructions

+ +
+

+ # download the installation script +

+
+

+ $ + wget https://raw.githubusercontent.com/dokku/dokku/v0.27.10/bootstrap.sh +

+

+ # run the installer +

+

+ $ + sudo DOKKU_TAG=v0.27.10 bash bootstrap.sh +

+
+

+ # Configure your server domain +

+

+ $ + dokku domains:set-global dokku.me +

+

+ # and your ssh key to the dokku user +

+

+ $ + echo "your-public-key-contents-here" | dokku ssh-keys:add admin +

+

+ # # create your first app and you're off to the races! +

+

+ $ + dokku apps:create test-app +

+
+
+
+

Hate curl | bash? See our official Azure, DigitalOcean, and DreamHost Cloud instructions.

+
+
+
+
+
+ +
+
+
+
+
+

No vendor lock-in

+
+
+

Own your PaaS using tools you already know

+
+
+

Powered by Docker, you can install Dokku on any hardware. Use it on inexpensive cloud providers. Use the extra cash to buy a pony or feed kittens. You'll save tens of dollars a year on your dog photo sharing website.

+

Once it's set up on a host, you can push Heroku-compatible applications to it via Git. They'll build using Heroku buildpacks and then run in isolated containers. The end result is your own, single-host version of Heroku.

+
+ +
+
+
+
+ docker +
+
+ git +
+
+
+
-
-
+ -
-
-
-

The smallest PaaS implementation you've ever seen

-

Dokku helps you build and manage the lifecycle of applications

- +
+
+
+
+

Getting started is extremely easy

+
+
+
+
+ + +
+
-
-
- -
-
-

Quick-start Instructions

-
-
curl | bash
-
apt
-
arch
+ + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

Extensible & customizable

+
+
+

Customize your PaaS using plugins

+
+
+

Write dokku plugins in any language. Share them online with others, and extend those already available. Dokku's simple core is easy to hack and add the features you need to get your job done.

+

Plugins add support for additional features in Dokku. Dokku itself is built out of plugins provides support for a few extra that are not included in the default installation.

+
+ +
+
-
-

-  # 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 -

-

-  # Configure your server domain via `dokku domains:set-global` -

-

-  # and user access (via `dokku ssh-keys:add`) to complete the installation -

+
+ + +
+
+
+
+
+

Support Us

+
+
+

None of this would have been possible without the continued support of our supporters. Here are a few of our sponsors and backers. Join them and become a sponsor on OpenCollective!

+
+
+ You can also back us anonymously + + on Patreon + + +
+
+
+ +
+
+ +
+
+
+
+
-
-

-  # install docker -

-

- - $ - wget -nv -O - https://get.docker.com/ | sh -

-

-  # setup dokku apt repository -

-

- - $ - wget -nv -O - https://packagecloud.io/dokku/dokku/gpgkey | apt-key add - -

-

- - $ - export SOURCE="https://packagecloud.io/dokku/dokku/ubuntu/" -

-

- - $ - export OS_ID="$(lsb_release -cs 2>/dev/null || echo "bionic")" -

-

- - $ - echo "bionic focal jammy" | grep -q "$OS_ID" || OS_ID="bionic" -

-

- - $ - echo "deb $SOURCE $OS_ID main" | tee /etc/apt/sources.list.d/dokku.list -

-

- - $ - apt-get update -

-

-  # install dokku -

-

- - $ - apt-get install dokku -

-

- - $ - dokku plugin:install-dependencies --core # run with root! -

-

-  # Configure your server domain via `dokku domains:set-global` -

-

-  # and user access (via `dokku ssh-keys:add`) to complete the installation -

+ +
+
+
+
+
+ Need something that isn't covered in the Open Source version?
+ Please consider the
+ + pro version + + +
+
+
+
-
-

-  # install dokku via yay -

-

- - $ - yay -S dokku -

+ +
+
+
+
+

© 2013-2022 Dokku. Website designed & developed by Yasoob Khalid

+
+
-
+ -
-

Hate curl | bash? See our official Azure, DigitalOcean, and DreamHost Cloud instructions.

-

Still no love? Contributions welcome!

-
-
- -
- Have a question? Join us in our public slack channel! - -
- - Slack Logo - -
-
- -
- - -
-
-

Own Your PaaS. Infrastructure at a fraction of the cost.

-

Powered by Docker, you can install Dokku on any hardware. Use it on inexpensive cloud providers. Use the extra cash to buy a pony or feed kittens. You'll save tens of dollars a year on your dog photo sharing website.

-
-
- Docker Logo -
-
- -
- -
-
-

Easy Git Deploys. From your command-line to the cloud.

-

Once it's set up on a host, you can push Heroku-compatible applications to it via Git. They'll build using Heroku buildpacks and then run in isolated containers. The end result is your own, single-host version of Heroku.

-
-
- Git Logo -
-
- -
- -
-
-

Extensible Platform. Customize your PaaS.

-

Write dokku plugins in any language. Share them online with others, and extend those already available. Dokku's simple core is easy to hack and add the features you need to get your job done.

-
-
- Extend Logo -
-
-
- -
-

Sponsor Dokku

- -
-
- -

Here are a few of our sponsors and backers. Join them and become a sponsor on OpenCollective!

- - - -

- - - - - - - - - - -

-

- - - - - - - - - - -

- -

You can also back us anonymously on Patreon.

-
-
-
- -
-
-

© 2013-2020 Dokku

-
-
+ - + + diff --git a/docs/template.html b/docs/template.html index 1eace7df0..b07b4de40 100644 --- a/docs/template.html +++ b/docs/template.html @@ -9,26 +9,26 @@ Dokku - {{DOC_TITLE}} - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - + + - - - + + + + + + + + + - -
-
-
-
-

- Dokku -

- -
-
-
-
+
+ +
-
+
@@ -94,10 +120,7 @@
-
- {{CONTENT}} -
-
+ +
+ {{CONTENT}} +
@@ -222,7 +248,19 @@ This document is for dokku's development version, which can be significantly different from previous releases. For older releases, use the version selector floating in the bottom right corner of this page.
+ +
+
+
+
+

© 2013-2022 Dokku. Website designed & developed by Yasoob Khalid

+
+
+
+
+ +