Compare commits

...

43 Commits

Author SHA1 Message Date
Dokku Bot
e99ea77069 Release 0.35.4
# History

## 0.35.4

Install/update via the bootstrap script:

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

### Bug Fixes

- #7209: @josegonzalez Exit non-zero if any deployment tasks fails
- #7211: @josegonzalez Always set the git rev env var when building an app via git:sync
- #7208: @josegonzalez Compute path for docker-container-healthchecker
- #7205: @Cactusbone chore: fix vagrant dokku-windows config

### Tests

- #7210: @josegonzalez Ensure pack binary is installed correctly when running tests in a devcontainer

### Dependencies

- #7206: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.37 to 9.5.38 in /docs/_build
- #7207: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.10.1 to 10.10.2 in /docs/_build
- #7203: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.36 to 9.5.37 in /docs/_build
2024-09-29 06:50:53 +00:00
Jose Diaz-Gonzalez
27ce6b622c Merge pull request #7209 from dokku/6919-failed-deployment-tasks
Exit non-zero if any deployment tasks fails
2024-09-29 01:09:47 -04:00
Jose Diaz-Gonzalez
24b5447ba7 Merge pull request #7211 from dokku/6827-set-git-rev-on-sync
Always set the git rev env var when building an app via git:sync
2024-09-29 00:38:09 -04:00
Jose Diaz-Gonzalez
9490034412 tests: update tests for cnb builder 2024-09-29 00:04:58 -04:00
Jose Diaz-Gonzalez
1abb180d1c fix: correct lint issue 2024-09-28 23:56:28 -04:00
Jose Diaz-Gonzalez
b8b112cb7b fix: exit non-zero if any deployment tasks fails 2024-09-28 23:56:28 -04:00
Jose Diaz-Gonzalez
fcb66a43cc Merge pull request #7210 from dokku/test-pack
Ensure pack binary is installed correctly when running tests in a devcontainer
2024-09-28 23:48:38 -04:00
Jose Diaz-Gonzalez
4ec6fa3eb0 fix: always set the git rev env var when building an app via git:sync
Closes #6827
2024-09-28 23:47:48 -04:00
Jose Diaz-Gonzalez
b9ebf2bcca Merge pull request #7208 from dokku/7010-docker-container-healthchecker-path
Compute path for docker-container-healthchecker
2024-09-28 22:31:31 -04:00
Jose Diaz-Gonzalez
03102cd681 tests: ensure pack binary is installed correctly when running tests in a devcontainer 2024-09-28 22:30:09 -04:00
Jose Diaz-Gonzalez
e905503bb9 fix: compute path for docker-container-healthchecker
This fixes an issue for source-based Dokku installs where the binary is installed in /usr/local/bin instead of /usr/bin due to not being installed via an OS package.

Closes #7010
2024-09-28 21:11:13 -04:00
Jose Diaz-Gonzalez
5857a937d5 Merge pull request #7206 from dokku/dependabot/pip/docs/_build/mkdocs-material-9.5.38
chore(deps): bump mkdocs-material from 9.5.37 to 9.5.38 in /docs/_build
2024-09-26 11:11:21 -04:00
Jose Diaz-Gonzalez
ed4646153f Merge pull request #7207 from dokku/dependabot/pip/docs/_build/pymdown-extensions-10.10.2
chore(deps): bump pymdown-extensions from 10.10.1 to 10.10.2 in /docs/_build
2024-09-26 11:11:12 -04:00
Jose Diaz-Gonzalez
34df653536 Merge pull request #7205 from F4-Group/fix-vagrant-windows
chore: fix vagrant dokku-windows config
2024-09-26 11:10:52 -04:00
dependabot[bot]
8954e51224 chore(deps): bump pymdown-extensions in /docs/_build
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.10.1 to 10.10.2.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.10.1...10.10.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-26 14:50:28 +00:00
dependabot[bot]
ab18225237 chore(deps): bump mkdocs-material from 9.5.37 to 9.5.38 in /docs/_build
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.5.37 to 9.5.38.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.5.37...9.5.38)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-26 14:50:21 +00:00
Charly Koza
a7e2928f1e chore: fix vagrant dokku-windows config
Fixes #7202.
2024-09-26 11:20:01 +02:00
Jose Diaz-Gonzalez
de33c7375b Merge pull request #7203 from dokku/dependabot/pip/docs/_build/mkdocs-material-9.5.37
chore(deps): bump mkdocs-material from 9.5.36 to 9.5.37 in /docs/_build
2024-09-25 12:28:43 -04:00
dependabot[bot]
afe3ce4ab5 chore(deps): bump mkdocs-material from 9.5.36 to 9.5.37 in /docs/_build
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.5.36 to 9.5.37.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.5.36...9.5.37)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-25 13:14:54 +00:00
Dokku Bot
095995da87 Release 0.35.3
# History

## 0.35.3

Install/update via the bootstrap script:

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

### Bug Fixes

- #7200: @josegonzalez Automatically select a container type if none is specified
- #7199: @josegonzalez Check if nginx is running before reloading during an app deletion
- #7198: @josegonzalez Add builder-herokuish to default help output
- #7197: @josegonzalez Implement missing network:info command

### Tests

- #7201: @josegonzalez Run arm build on 22.04

### Dependencies

- #7193: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.9 to 10.10.1 in /docs/_build
- #7194: @dependabot[bot] chore(deps): bump traefik from 3.1.2 to 3.1.4 in /plugins/traefik-vhosts
- #7195: @dependabot[bot] chore(deps): bump dokku/openresty-docker-proxy from 0.9.0 to 0.9.1 in /plugins/openresty-vhosts
- #7196: @dependabot[bot] chore(deps): bump socket.io from 4.7.5 to 4.8.0 in /tests/apps/.websocket.disabled
2024-09-24 19:01:02 +00:00
Jose Diaz-Gonzalez
5832523446 Merge pull request #7201 from dokku/buildjet-2204
Run arm build on 22.04
2024-09-23 21:54:05 -04:00
Jose Diaz-Gonzalez
68be10b661 Merge pull request #7200 from dokku/6893-enter-without-container-type
Automatically select a container type if none is specified
2024-09-23 21:53:21 -04:00
Jose Diaz-Gonzalez
0a9ce752cc Merge pull request #7199 from dokku/6832-is-nginx-running
Check if nginx is running before reloading during an app deletion
2024-09-23 21:52:51 -04:00
Jose Diaz-Gonzalez
9d76265e33 fix: run arm build on 22.04
There is no 24.04 buildjet runner, so this just stalls forever.
2024-09-23 21:46:48 -04:00
Jose Diaz-Gonzalez
4b30e33ce8 Merge pull request #7198 from dokku/6974-builder-herokuish-help
Add builder-herokuish to default help output
2024-09-23 21:45:51 -04:00
Jose Diaz-Gonzalez
34bdd15364 Merge pull request #7197 from dokku/7093-network-info
Implement missing network:info command
2024-09-23 21:45:44 -04:00
Jose Diaz-Gonzalez
caa7b10091 fix: automatically select a container type if none is specified
Closes #6893
2024-09-23 21:41:02 -04:00
Jose Diaz-Gonzalez
ac56a5ffdd fix: check if nginx is running before reloading during an app deletion
The purpose of the reload is to remove nginx from being loaded. If nginx isn't running, then by definition the config is not loaded.

Closes #6832
2024-09-23 21:25:23 -04:00
Jose Diaz-Gonzalez
aa74178622 fix: add builder-herokuish to default help output
Closes #6974
2024-09-23 20:33:16 -04:00
Jose Diaz-Gonzalez
61b7752cce fix: implement missing network:info command
Also add json format output to the network:list command.

Closes #7093
2024-09-23 20:27:13 -04:00
Jose Diaz-Gonzalez
0f8395365e Merge pull request #7193 from dokku/dependabot/pip/docs/_build/pymdown-extensions-10.10.1
chore(deps): bump pymdown-extensions from 10.9 to 10.10.1 in /docs/_build
2024-09-23 16:25:13 -04:00
Jose Diaz-Gonzalez
2fd9de8456 Merge pull request #7194 from dokku/dependabot/docker/plugins/traefik-vhosts/traefik-3.1.4
chore(deps): bump traefik from 3.1.2 to 3.1.4 in /plugins/traefik-vhosts
2024-09-23 16:24:51 -04:00
Jose Diaz-Gonzalez
a53d8cf5c7 Merge pull request #7195 from dokku/dependabot/docker/plugins/openresty-vhosts/dokku/openresty-docker-proxy-0.9.1
chore(deps): bump dokku/openresty-docker-proxy from 0.9.0 to 0.9.1 in /plugins/openresty-vhosts
2024-09-23 16:24:36 -04:00
Jose Diaz-Gonzalez
551ca6771f Merge pull request #7196 from dokku/dependabot/npm_and_yarn/tests/apps/dot-websocket.disabled/socket.io-4.8.0
chore(deps): bump socket.io from 4.7.5 to 4.8.0 in /tests/apps/.websocket.disabled
2024-09-23 16:24:24 -04:00
dependabot[bot]
04bae1efd9 chore(deps): bump socket.io in /tests/apps/.websocket.disabled
Bumps [socket.io](https://github.com/socketio/socket.io) from 4.7.5 to 4.8.0.
- [Release notes](https://github.com/socketio/socket.io/releases)
- [Changelog](https://github.com/socketio/socket.io/blob/main/CHANGELOG.md)
- [Commits](https://github.com/socketio/socket.io/compare/socket.io@4.7.5...socket.io@4.8.0)

---
updated-dependencies:
- dependency-name: socket.io
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-23 13:57:13 +00:00
dependabot[bot]
e09a9185f5 chore(deps): bump dokku/openresty-docker-proxy
Bumps dokku/openresty-docker-proxy from 0.9.0 to 0.9.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-23 13:30:59 +00:00
dependabot[bot]
fe89dc3ac4 chore(deps): bump traefik from 3.1.2 to 3.1.4 in /plugins/traefik-vhosts
Bumps traefik from 3.1.2 to 3.1.4.

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-23 13:21:10 +00:00
dependabot[bot]
66dbd22805 chore(deps): bump pymdown-extensions in /docs/_build
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.9 to 10.10.1.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.9...10.10.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-23 13:18:38 +00:00
Dokku Bot
826be00fbc Release 0.35.2
# History

## 0.35.2

Install/update via the bootstrap script:

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

### Bug Fixes

- #7191: @josegonzalez Revert to building Dokku on Ubunut 20.04 Focal to hotfix glibc issues

### New Features

- #7190: @josegonzalez Allow setting most nginx properties globally
2024-09-23 09:19:30 +00:00
Jose Diaz-Gonzalez
a88c9bfaac Merge pull request #7191 from dokku/build-on-focal
Revert to building Dokku on Ubunut 20.04 Focal to hotfix glibc issues
2024-09-23 05:07:56 -04:00
Jose Diaz-Gonzalez
c8982fb2ab fix: revert to building Dokku on Ubunut 20.04 Focal to hotfix glibc issues
An upcoming fix will revert this and also test that the packages install on all versions of Ubuntu.
2024-09-23 04:51:25 -04:00
Jose Diaz-Gonzalez
5e13865c5c Merge pull request #7190 from dokku/7151-global-nginx-properties
Allow setting most nginx properties globally
2024-09-23 04:29:17 -04:00
Jose Diaz-Gonzalez
e70169f591 feat: allow setting most nginx properties globally
Closes #7151
2024-09-23 04:02:44 -04:00
86 changed files with 636 additions and 190 deletions

View File

@@ -2,7 +2,7 @@ FROM dokku/dokku:latest
RUN apt-get update
RUN apt-get install --no-install-recommends -y build-essential file nano && \
apt-get install --no-install-recommends -y help2man shellcheck uuid-runtime wget xmlstarlet && \
apt-get install --no-install-recommends -y software-properties-common help2man shellcheck uuid-runtime wget xmlstarlet && \
apt-get clean autoclean && \
apt-get autoremove --yes && \
rm -rf /var/lib/apt/lists/*

View File

@@ -97,7 +97,7 @@ jobs:
build-image-arm64:
name: build-image.linux/arm64
needs: build
runs-on: buildjet-4vcpu-ubuntu-2404-arm
runs-on: buildjet-4vcpu-ubuntu-2204-arm
timeout-minutes: 20
steps:

View File

@@ -1,5 +1,75 @@
# History
## 0.35.4
Install/update via the bootstrap script:
```shell
wget -NP . https://dokku.com/install/v0.35.4/bootstrap.sh
sudo DOKKU_TAG=v0.35.4 bash bootstrap.sh
```
### Bug Fixes
- #7209: @josegonzalez Exit non-zero if any deployment tasks fails
- #7211: @josegonzalez Always set the git rev env var when building an app via git:sync
- #7208: @josegonzalez Compute path for docker-container-healthchecker
- #7205: @Cactusbone chore: fix vagrant dokku-windows config
### Tests
- #7210: @josegonzalez Ensure pack binary is installed correctly when running tests in a devcontainer
### Dependencies
- #7206: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.37 to 9.5.38 in /docs/_build
- #7207: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.10.1 to 10.10.2 in /docs/_build
- #7203: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.36 to 9.5.37 in /docs/_build
## 0.35.3
Install/update via the bootstrap script:
```shell
wget -NP . https://dokku.com/install/v0.35.3/bootstrap.sh
sudo DOKKU_TAG=v0.35.3 bash bootstrap.sh
```
### Bug Fixes
- #7200: @josegonzalez Automatically select a container type if none is specified
- #7199: @josegonzalez Check if nginx is running before reloading during an app deletion
- #7198: @josegonzalez Add builder-herokuish to default help output
- #7197: @josegonzalez Implement missing network:info command
### Tests
- #7201: @josegonzalez Run arm build on 22.04
### Dependencies
- #7193: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.9 to 10.10.1 in /docs/_build
- #7194: @dependabot[bot] chore(deps): bump traefik from 3.1.2 to 3.1.4 in /plugins/traefik-vhosts
- #7195: @dependabot[bot] chore(deps): bump dokku/openresty-docker-proxy from 0.9.0 to 0.9.1 in /plugins/openresty-vhosts
- #7196: @dependabot[bot] chore(deps): bump socket.io from 4.7.5 to 4.8.0 in /tests/apps/.websocket.disabled
## 0.35.2
Install/update via the bootstrap script:
```shell
wget -NP . https://dokku.com/install/v0.35.2/bootstrap.sh
sudo DOKKU_TAG=v0.35.2 bash bootstrap.sh
```
### Bug Fixes
- #7191: @josegonzalez Revert to building Dokku on Ubunut 20.04 Focal to hotfix glibc issues
### New Features
- #7190: @josegonzalez Allow setting most nginx properties globally
## 0.35.1
Install/update via the bootstrap script:

View File

@@ -86,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 -NP . https://dokku.com/install/v0.35.1/bootstrap.sh
sudo DOKKU_TAG=v0.35.1 bash bootstrap.sh
wget -NP . https://dokku.com/install/v0.35.4/bootstrap.sh
sudo DOKKU_TAG=v0.35.4 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.

2
Vagrantfile vendored
View File

@@ -72,7 +72,7 @@ Vagrant::configure("2") do |config|
config.vm.define "dokku-windows", autostart: false do |vm|
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 dos2unix >/dev/null"
vm.vm.provision :shell, :inline => "export DEBIAN_FRONTEND=noninteractive && apt-get update -qq >/dev/null && apt-get -qq -y --no-install-recommends install git dos2unix nginx >/dev/null"
vm.vm.provision :shell, :inline => "cd /vagrant/ && export DOKKU_BRANCH=`git symbolic-ref -q --short HEAD 2>/dev/null` && export DOKKU_TAG=`git describe --tags --exact-match 2>/dev/null` && cd /root/ && cp /vagrant/bootstrap.sh ./ && dos2unix bootstrap.sh && bash bootstrap.sh"
end

View File

@@ -1,4 +1,4 @@
FROM dokku/build-base:0.2.1 AS builder
FROM dokku/build-base:0.1.2 AS builder
ENV DEBIAN_FRONTEND=noninteractive

2
debian/control vendored
View File

@@ -1,5 +1,5 @@
Package: dokku
Version: 0.35.1
Version: 0.35.4
Section: web
Priority: optional
Architecture: amd64

View File

@@ -8,11 +8,11 @@ MarkupSafe==2.1.5
mergedeep==1.3.4
mkdocs==1.6.1
mkdocs-exclude==1.0.2
mkdocs-material==9.5.36
mkdocs-material==9.5.38
mkdocs-material-extensions==1.3.1
packaging==24.1
Pygments==2.18.0
pymdown-extensions==10.9
pymdown-extensions==10.10.2
pyparsing==3.1.4
python-dateutil==2.9.0.post0
PyYAML==6.0.2

View File

@@ -36,35 +36,35 @@ dokku plugin:list
```
plugn: dev
00_dokku-standard 0.35.1 enabled dokku core standard plugin
20_events 0.35.1 enabled dokku core events logging plugin
app-json 0.35.1 enabled dokku core app-json plugin
apps 0.35.1 enabled dokku core apps plugin
build-env 0.35.1 enabled dokku core build-env plugin
buildpacks 0.35.1 enabled dokku core buildpacks plugin
certs 0.35.1 enabled dokku core certificate management plugin
checks 0.35.1 enabled dokku core checks plugin
common 0.35.1 enabled dokku core common plugin
config 0.35.1 enabled dokku core config plugin
docker-options 0.35.1 enabled dokku core docker-options plugin
domains 0.35.1 enabled dokku core domains plugin
enter 0.35.1 enabled dokku core enter plugin
git 0.35.1 enabled dokku core git plugin
logs 0.35.1 enabled dokku core logs plugin
network 0.35.1 enabled dokku core network plugin
nginx-vhosts 0.35.1 enabled dokku core nginx-vhosts plugin
plugin 0.35.1 enabled dokku core plugin plugin
proxy 0.35.1 enabled dokku core proxy plugin
ps 0.35.1 enabled dokku core ps plugin
repo 0.35.1 enabled dokku core repo plugin
resource 0.35.1 enabled dokku core resource plugin
scheduler-docker-local 0.35.1 enabled dokku core scheduler-docker-local plugin
shell 0.35.1 enabled dokku core shell plugin
ssh-keys 0.35.1 enabled dokku core ssh-keys plugin
storage 0.35.1 enabled dokku core storage plugin
tags 0.35.1 enabled dokku core tags plugin
tar 0.35.1 enabled dokku core tar plugin
trace 0.35.1 enabled dokku core trace plugin
00_dokku-standard 0.35.4 enabled dokku core standard plugin
20_events 0.35.4 enabled dokku core events logging plugin
app-json 0.35.4 enabled dokku core app-json plugin
apps 0.35.4 enabled dokku core apps plugin
build-env 0.35.4 enabled dokku core build-env plugin
buildpacks 0.35.4 enabled dokku core buildpacks plugin
certs 0.35.4 enabled dokku core certificate management plugin
checks 0.35.4 enabled dokku core checks plugin
common 0.35.4 enabled dokku core common plugin
config 0.35.4 enabled dokku core config plugin
docker-options 0.35.4 enabled dokku core docker-options plugin
domains 0.35.4 enabled dokku core domains plugin
enter 0.35.4 enabled dokku core enter plugin
git 0.35.4 enabled dokku core git plugin
logs 0.35.4 enabled dokku core logs plugin
network 0.35.4 enabled dokku core network plugin
nginx-vhosts 0.35.4 enabled dokku core nginx-vhosts plugin
plugin 0.35.4 enabled dokku core plugin plugin
proxy 0.35.4 enabled dokku core proxy plugin
ps 0.35.4 enabled dokku core ps plugin
repo 0.35.4 enabled dokku core repo plugin
resource 0.35.4 enabled dokku core resource plugin
scheduler-docker-local 0.35.4 enabled dokku core scheduler-docker-local plugin
shell 0.35.4 enabled dokku core shell plugin
ssh-keys 0.35.4 enabled dokku core ssh-keys plugin
storage 0.35.4 enabled dokku core storage plugin
tags 0.35.4 enabled dokku core tags plugin
tar 0.35.4 enabled dokku core tar plugin
trace 0.35.4 enabled dokku core trace plugin
```
> [!WARNING]

View File

@@ -2,10 +2,10 @@
<browserconfig>
<msapplication>
<tile>
<square70x70logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/mstile-70x70.png"/>
<square150x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/mstile-150x150.png"/>
<square310x310logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/mstile-310x310.png"/>
<wide310x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/mstile-310x150.png"/>
<square70x70logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/mstile-70x70.png"/>
<square150x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/mstile-150x150.png"/>
<square310x310logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/mstile-310x310.png"/>
<wide310x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/mstile-310x150.png"/>
<TileColor>#da532c</TileColor>
</tile>
</msapplication>

View File

@@ -2,37 +2,37 @@
"name": "Dokku",
"icons": [
{
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.35.1\/docs\/assets\/favicons\/android-chrome-36x36.png",
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.35.4\/docs\/assets\/favicons\/android-chrome-36x36.png",
"sizes": "36x36",
"type": "image\/png",
"density": "0.75"
},
{
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.35.1\/docs\/assets\/favicons\/android-chrome-48x48.png",
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.35.4\/docs\/assets\/favicons\/android-chrome-48x48.png",
"sizes": "48x48",
"type": "image\/png",
"density": "1.0"
},
{
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.35.1\/docs\/assets\/favicons\/android-chrome-72x72.png",
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.35.4\/docs\/assets\/favicons\/android-chrome-72x72.png",
"sizes": "72x72",
"type": "image\/png",
"density": "1.5"
},
{
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.35.1\/docs\/assets\/favicons\/android-chrome-96x96.png",
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.35.4\/docs\/assets\/favicons\/android-chrome-96x96.png",
"sizes": "96x96",
"type": "image\/png",
"density": "2.0"
},
{
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.35.1\/docs\/assets\/favicons\/android-chrome-144x144.png",
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.35.4\/docs\/assets\/favicons\/android-chrome-144x144.png",
"sizes": "144x144",
"type": "image\/png",
"density": "3.0"
},
{
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.35.1\/docs\/assets\/favicons\/android-chrome-192x192.png",
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.35.4\/docs\/assets\/favicons\/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image\/png",
"density": "4.0"

View File

@@ -32,6 +32,6 @@
"0.32.4",
"0.33.9",
"0.34.9",
"0.35.1"
"0.35.4"
]
}

View File

@@ -29,7 +29,7 @@ The workflow looks like this:
```shell
# having dokku-arch in ../dokku-arch
vagrant up build-arch
# wait for "==> build-arch: ==> Finished making: dokku 0.35.1-2 (Mon Feb 22 23:20:37 CET 2016)"
# wait for "==> build-arch: ==> Finished making: dokku 0.35.4-2 (Mon Feb 22 23:20:37 CET 2016)"
cd ../dokku-arch
git add PKGBUILD .SRCINFO
git commit -m 'Update to dokku 0.9.9'

View File

@@ -3,7 +3,7 @@
Pull the dokku/dokku image:
```shell
docker pull dokku/dokku:0.35.1
docker pull dokku/dokku:0.35.4
```
Next, run the image.
@@ -19,7 +19,7 @@ docker container run -d \
--publish 8443:443 \
--volume /var/lib/dokku:/mnt/dokku \
--volume /var/run/docker.sock:/var/run/docker.sock \
dokku/dokku:0.35.1
dokku/dokku:0.35.4
```
Alternatively, you can use `docker-compose.yml`:
@@ -27,7 +27,7 @@ Alternatively, you can use `docker-compose.yml`:
```yaml
services:
dokku:
image: dokku/dokku:0.35.1
image: dokku/dokku:0.35.4
container_name: dokku
network_mode: bridge
ports:
@@ -83,7 +83,7 @@ redis: https://github.com/dokku/dokku-redis.git
The alternative is to build a custom docker image via a custom Dockerfile. This Dockerfile can run any `plugin:install` command. Note that the version installed at that time will be the one that persists. Below is an example Dockerfile showing this method.
```Dockerfile
FROM dokku/dokku:0.35.1
FROM dokku/dokku:0.35.4
RUN dokku plugin:install https://github.com/dokku/dokku-postgres.git postgres
RUN dokku plugin:install https://github.com/dokku/dokku-redis.git redis
```

View File

@@ -37,8 +37,8 @@ To install the latest stable version of Dokku, you can run the following shell c
```shell
# for debian systems, installs Dokku via apt-get
wget -NP . https://dokku.com/install/v0.35.1/bootstrap.sh
sudo DOKKU_TAG=v0.35.1 bash bootstrap.sh
wget -NP . https://dokku.com/install/v0.35.4/bootstrap.sh
sudo DOKKU_TAG=v0.35.4 bash bootstrap.sh
```
The installation process takes about 5-10 minutes, depending upon internet connection speed.

View File

@@ -10,26 +10,26 @@
<meta name="author" content="">
<title>Dokku - The smallest PaaS implementation you've ever seen</title>
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/manifest.json">
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/favicon.ico">
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/manifest.json">
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/favicon.ico">
<meta name="apple-mobile-web-app-title" content="Dokku">
<meta name="application-name" content="Dokku">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/mstile-144x144.png">
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/browserconfig.xml">
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/mstile-144x144.png">
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/browserconfig.xml">
<meta name="theme-color" content="#ffffff">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous">
@@ -38,7 +38,7 @@
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700;900&display=swap" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/style.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/style.css" rel="stylesheet">
<!-- <link href="./assets/style.css" rel="stylesheet"> -->
</head>
@@ -98,7 +98,7 @@
<main class="container px-4 px-lg-5">
<div class="row">
<div class="col-lg-7">
<a class="badge-link" href="https://github.com/dokku/dokku/releases"><span class="badge py-2 d-flex fit-content"><div class="circle align-self-center me-2"></div>Latest release <span id="releaseVersion" class="ms-1">v0.35.1</span></span></a>
<a class="badge-link" href="https://github.com/dokku/dokku/releases"><span class="badge py-2 d-flex fit-content"><div class="circle align-self-center me-2"></div>Latest release <span id="releaseVersion" class="ms-1">v0.35.4</span></span></a>
<h1 class="text-white hero-heading mt-5">An open source PAAS alternative to Heroku.</h1>
<h4 class="text-white mt-5">Dokku helps you build and manage the lifecycle of applications from building to scaling.</h4>
<div class="d-flex mt-5">
@@ -125,7 +125,7 @@
</p>
<p class="line">
<span class="prompt">$</span>
<span class="command">sudo DOKKU_TAG=v0.35.1 bash bootstrap.sh</span>
<span class="command">sudo DOKKU_TAG=v0.35.4 bash bootstrap.sh</span>
</p>
<br>

View File

@@ -4,15 +4,15 @@
> New as of 0.11.0, Enhanced in 0.20.0
```
network:create <network> # Creates an attachable docker network
network:destroy <network> # Destroys a docker network
network:exists <network> # Checks if a docker network exists
network:info <network> # Outputs information about a docker network
network:list # Lists all docker networks
network:report [<app>] [<flag>] # Displays a network report for one or more apps
network:rebuild <app> # Rebuilds network settings for an app
network:rebuildall # Rebuild network settings for all apps
network:set <app> <key> (<value>) # Set or clear a network property for an app
network:create <network> # Creates an attachable docker network
network:destroy <network> # Destroys a docker network
network:exists <network> # Checks if a docker network exists
network:info <network> [--format text|json] # Outputs information about a docker network
network:list [--format text|json] # Lists all docker networks
network:report [<app>] [<flag>] # Displays a network report for one or more apps
network:rebuild <app> # Rebuilds network settings for an app
network:rebuildall # Rebuild network settings for all apps
network:set <app> <key> (<value>) # Set or clear a network property for an app
```
The Network plugin allows developers to abstract the concept of container network management, allowing developers to both change what networks a given container is attached to as well as rebuild the configuration on the fly.
@@ -51,6 +51,21 @@ none
test-network
```
The `network:list` command also takes a `--format` flag, with the valid options including `text` (default) and `json`. The `json` output format can be used for automation purposes:
```shell
dokku network:list --format json
```
```
[
{"CreatedAt":"2024-02-25T01:55:24.275184461Z","Driver":"bridge","ID":"d18df2d21433","Internal":false,"IPv6":false,"Labels":{},"Name":"bridge","Scope":"local"},
{"CreatedAt":"2024-02-25T01:55:24.275184461Z","Driver":"bridge","ID":"f50fa882e7de","Internal":false,"IPv6":false,"Labels":{},"Name":"test-network","Scope":"local"},
{"CreatedAt":"2024-02-25T01:55:24.275184461Z","Driver":"host","ID":"ab6a59291443","Internal":false,"IPv6":false,"Labels":{},"Name":"host","Scope":"local"},
{"CreatedAt":"2024-02-25T01:55:24.275184461Z","Driver":"null","ID":"e2506bc8b7d7","Internal":false,"IPv6":false,"Labels":{},"Name":"none","Scope":"local"}
]
```
### Creating a network
> [!IMPORTANT]
@@ -117,16 +132,30 @@ The `network:exists` command will return non-zero if the network does not exist,
### Checking network info
> [!IMPORTANT]
> New as of 0.20.0, Requires Docker 1.21+
> New as of 0.35.3
Network information can be retrieved via the `network:info` command. This is a slightly different version of the `docker network` command.
```shell
dokku network:info test-network
dokku network:info bridge
```
```
// TODO
=====> bridge network information
ID: d18df2d21433
Name: bridge
Driver: bridge
Scope: local
```
The `network:info` command also takes a `--format` flag, with the valid options including `text` (default) and `json`. The `json` output format can be used for automation purposes:
```shell
dokku network:info bridge --format json
```
```
{"CreatedAt":"2024-02-25T01:55:24.275184461Z","Driver":"bridge","ID":"d18df2d21433","Internal":false,"IPv6":false,"Labels":{},"Name":"bridge","Scope":"local"}
```
### Routing an app to a known ip:port combination

View File

@@ -12,6 +12,9 @@ enter <app> [<container-type> || --container-id <container-id>] # Connect to a
The `enter` command can be used to enter a running container. The following variations of the command exist:
```shell
# enter the first container
dokku enter node-js-app
# enter the web process
dokku enter node-js-app web

View File

@@ -9,26 +9,26 @@
<meta name="author" content="">
<title>Dokku - {{DOC_TITLE}}</title>
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/manifest.json">
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/favicon.ico">
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/manifest.json">
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/favicon.ico">
<meta name="apple-mobile-web-app-title" content="Dokku">
<meta name="application-name" content="Dokku">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/mstile-144x144.png">
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/favicons/browserconfig.xml">
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/mstile-144x144.png">
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/browserconfig.xml">
<meta name="theme-color" content="#ffffff">
<script>
@@ -48,7 +48,7 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700;900&display=swap" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.1/docs/assets/style.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/style.css" rel="stylesheet">
<!-- <link href="./assets/style.css" rel="stylesheet"> -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet">
</head>

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core standard plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core events logging plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core app-json plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core apps plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core builder-dockerfile plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -0,0 +1,15 @@
#!/usr/bin/env bash
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_AVAILABLE_PATH/builder-herokuish/help-functions"
case "$1" in
help | builder-herokuish:help)
cmd-builder-herokuish-help "$@"
;;
*)
exit "$DOKKU_NOT_IMPLEMENTED_EXIT"
;;
esac

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core builder-herokuish plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core builder-lambda plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core builder-nixpacks plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core builder-null plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core builder-pack plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core builder plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core buildpacks plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core caddy-vhosts plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core certificate management plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core checks plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -3,6 +3,7 @@ package common
import (
"fmt"
"os"
"strconv"
"strings"
"time"
)
@@ -64,6 +65,17 @@ func ContainerWait(containerID string) bool {
if err != nil {
return false
}
stdout := result.StdoutContents()
if stdout != "0" {
exitCode, err := strconv.Atoi(stdout)
if err != nil {
return false
}
return exitCode == 0
}
return result.ExitCode == 0
}

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core common plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core config plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core cron plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core docker-options plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core domains plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core enter plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -235,10 +235,11 @@ cmd-git-sync() {
if [[ "$SHOULD_BUILD" == "true" ]]; then
if [[ -n "$GIT_REF" ]]; then
GIT_REF="$(fn-git-cmd "$APP_ROOT" rev-parse "$GIT_REF")"
plugn trigger receive-app "$APP" "$GIT_REF"
else
plugn trigger receive-app "$APP"
GIT_REF="$UPDATED_REF"
fi
plugn trigger receive-app "$APP" "$GIT_REF"
plugn trigger deploy-source-set "$APP" "git-sync" "${GIT_REMOTE}#${GIT_REF}"
fi
}

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core git plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core haproxy-vhosts plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core logs plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,13 +1,27 @@
package network
import (
"encoding/json"
"errors"
"fmt"
"strconv"
"strings"
"time"
"github.com/dokku/dokku/plugins/common"
)
type DockerNetwork struct {
CreatedAt time.Time
Driver string
ID string
Internal bool
IPv6 bool
Labels map[string]string
Name string
Scope string
}
// attachAppToNetwork attaches a container to a network
func attachAppToNetwork(containerID string, networkName string, appName string, phase string, processType string) error {
if isContainerInNetwork(containerID, networkName) {
@@ -110,13 +124,13 @@ func networkExists(networkName string) (bool, error) {
exists := false
networks, err := listNetworks()
networks, err := getNetworks()
if err != nil {
return false, err
}
for _, n := range networks {
if networkName == n {
for _, network := range networks {
if networkName == network.Name {
exists = true
break
}
@@ -125,21 +139,75 @@ func networkExists(networkName string) (bool, error) {
return exists, nil
}
// listNetworks returns a list of docker networks
func listNetworks() ([]string, error) {
// getNetworks returns a list of docker networks
func getNetworks() (map[string]DockerNetwork, error) {
result, err := common.CallExecCommand(common.ExecCommandInput{
Command: common.DockerBin(),
Args: []string{"network", "ls", "--format", "{{ .Name }}"},
Args: []string{"network", "ls", "--format", "json"},
})
if err != nil {
common.LogVerboseQuiet(result.StderrContents())
return []string{}, err
return map[string]DockerNetwork{}, err
}
if result.ExitCode != 0 {
common.LogVerboseQuiet(result.StderrContents())
return []string{}, fmt.Errorf("Unable to list networks")
return map[string]DockerNetwork{}, fmt.Errorf("Unable to list networks")
}
networkLines := strings.Split(result.StdoutContents(), "\n")
networks := map[string]DockerNetwork{}
for _, line := range networkLines {
if line == "" {
continue
}
result := make(map[string]interface{})
err := json.Unmarshal([]byte(line), &result)
if err != nil {
return map[string]DockerNetwork{}, err
}
network := DockerNetwork{
Driver: result["Driver"].(string),
ID: result["ID"].(string),
Name: result["Name"].(string),
Scope: result["Scope"].(string),
Labels: map[string]string{},
}
if createdAtVal := result["CreatedAt"].(string); createdAtVal != "" {
createdAt, err := time.Parse("2006-01-02 15:04:05.999999999 -0700 MST", "2024-02-25 01:55:24.275184461 +0000 UTC")
if err == nil {
network.CreatedAt = createdAt
}
}
if ipv6Val := result["IPv6"].(string); ipv6Val != "" {
val, err := strconv.ParseBool(ipv6Val)
if err == nil {
network.IPv6 = val
}
}
if internalVal := result["Internal"].(string); internalVal != "" {
val, err := strconv.ParseBool(internalVal)
if err == nil {
network.Internal = val
}
}
labels := strings.Split(result["Labels"].(string), ",")
for _, v := range labels {
parts := strings.SplitN(v, "=", 2)
if len(parts) != 2 {
continue
}
key := parts[0]
value := parts[1]
network.Labels[key] = value
}
networks[network.Name] = network
}
networks := strings.Split(result.StdoutContents(), "\n")
return networks, nil
}

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core network plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -21,8 +21,8 @@ Additional commands:`
network:create <network>, Creates an attachable docker network
network:destroy <network>, Destroys a docker network
network:exists <network>, Checks if a docker network exists
network:info <network>, Outputs information about a docker network
network:list, Lists all docker networks
network:info <network> [--format text|json], Outputs information about a docker network
network:list [--format text|json], Lists all docker networks
network:rebuild <app>, Rebuilds network settings for an app
network:rebuildall, Rebuild network settings for all apps
network:report [<app>] [<flag>], Displays a network report for one or more apps

View File

@@ -36,12 +36,15 @@ func main() {
err = network.CommandExists(networkName)
case "info":
args := flag.NewFlagSet("network:info", flag.ExitOnError)
format := args.String("format", "text", "format: [ text | json ]")
args.Parse(os.Args[2:])
err = network.CommandInfo()
networkName := args.Arg(0)
err = network.CommandInfo(networkName, *format)
case "list":
args := flag.NewFlagSet("network:list", flag.ExitOnError)
format := args.String("format", "text", "format: [ text | json ]")
args.Parse(os.Args[2:])
err = network.CommandList()
err = network.CommandList(*format)
case "rebuild":
args := flag.NewFlagSet("network:rebuild", flag.ExitOnError)
args.Parse(os.Args[2:])

View File

@@ -1,6 +1,7 @@
package network
import (
"encoding/json"
"errors"
"fmt"
"os"
@@ -74,20 +75,67 @@ func CommandExists(networkName string) error {
}
// CommandInfo is an alias for "docker network inspect"
func CommandInfo() error {
return nil
}
func CommandInfo(networkName string, format string) error {
if networkName == "" {
return errors.New("No network name specified")
}
// CommandList is an alias for "docker network ls"
func CommandList() error {
networks, err := listNetworks()
if format != "json" && format != "text" {
return errors.New("Invalid format specified, use either text or json")
}
networks, err := getNetworks()
if err != nil {
return err
}
network, ok := networks[networkName]
if !ok {
return errors.New("Network does not exist")
}
if format == "json" {
out, err := json.Marshal(network)
if err != nil {
return err
}
common.Log(string(out))
return nil
}
length := 10
common.LogInfo2Quiet(fmt.Sprintf("%s network information", networkName))
common.LogVerbose(fmt.Sprintf("%s%s", common.RightPad("ID:", length, " "), network.ID))
common.LogVerbose(fmt.Sprintf("%s%s", common.RightPad("Name:", length, " "), network.Name))
common.LogVerbose(fmt.Sprintf("%s%s", common.RightPad("Driver:", length, " "), network.Driver))
common.LogVerbose(fmt.Sprintf("%s%s", common.RightPad("Scope:", length, " "), network.Scope))
return nil
}
// CommandList is an alias for "docker network ls"
func CommandList(format string) error {
networks, err := getNetworks()
if err != nil {
return err
}
if format == "json" {
networkList := []DockerNetwork{}
for _, network := range networks {
networkList = append(networkList, network)
}
out, err := json.Marshal(networkList)
if err != nil {
return err
}
common.Log(string(out))
return nil
}
common.LogInfo2Quiet("Networks")
for _, networkName := range networks {
fmt.Println(networkName)
for _, network := range networks {
fmt.Println(network.Name)
}
return nil

View File

@@ -75,7 +75,7 @@ trigger-nginx-vhosts-install() {
case "$DOKKU_DISTRO" in
debian | raspbian)
if [[ -x "$systemctl_path" ]]; then
echo "%dokku ALL=(ALL) NOPASSWD:$systemctl_path enable $NGINX_INIT_NAME, $systemctl_path disable $NGINX_INIT_NAME, $systemctl_path reload $NGINX_INIT_NAME, $systemctl_path start $NGINX_INIT_NAME, $systemctl_path stop $NGINX_INIT_NAME, $NGINX_BIN -t, $NGINX_BIN -t -c *" >"$NGINX_SUDOERS_FILE"
echo "%dokku ALL=(ALL) NOPASSWD:$systemctl_path enable $NGINX_INIT_NAME, $systemctl_path disable $NGINX_INIT_NAME, $systemctl_path reload $NGINX_INIT_NAME, $systemctl_path start $NGINX_INIT_NAME, $systemctl_path stop $NGINX_INIT_NAME, $systemctl_path is-active --quiet $NGINX_INIT_NAME, $NGINX_BIN -t, $NGINX_BIN -t -c *" >"$NGINX_SUDOERS_FILE"
else
echo "%dokku ALL=(ALL) NOPASSWD:/usr/sbin/invoke-rc.d $NGINX_INIT_NAME enable, /usr/sbin/invoke-rc.d $NGINX_INIT_NAME disable, /usr/sbin/invoke-rc.d $NGINX_INIT_NAME reload, /usr/sbin/invoke-rc.d $NGINX_INIT_NAME start, /usr/sbin/invoke-rc.d $NGINX_INIT_NAME stop, $NGINX_BIN -t, ${NGINX_BIN} -t -c *" >"$NGINX_SUDOERS_FILE"
fi
@@ -83,18 +83,18 @@ trigger-nginx-vhosts-install() {
ubuntu)
if [[ "$DOKKU_INIT_SYSTEM" == "sv" ]]; then
echo "%dokku ALL=(ALL) NOPASSWD:/usr/bin/sv enable $NGINX_INIT_NAME, /usr/bin/sv disable $NGINX_INIT_NAME, /usr/bin/sv reload $NGINX_INIT_NAME, /usr/bin/sv start $NGINX_INIT_NAME, /usr/bin/sv stop $NGINX_INIT_NAME, $NGINX_BIN -t, $NGINX_BIN -t -c *" >"$NGINX_SUDOERS_FILE"
echo "%dokku ALL=(ALL) NOPASSWD:/usr/bin/sv enable $NGINX_INIT_NAME, /usr/bin/sv disable $NGINX_INIT_NAME, /usr/bin/sv reload $NGINX_INIT_NAME, /usr/bin/sv start $NGINX_INIT_NAME, /usr/bin/sv stop $NGINX_INIT_NAME, /usr/bin/sv status $NGINX_INIT_NAME, $NGINX_BIN -t, $NGINX_BIN -t -c *" >"$NGINX_SUDOERS_FILE"
elif [[ -x "$systemctl_path" ]]; then
echo "%dokku ALL=(ALL) NOPASSWD:$systemctl_path enable $NGINX_INIT_NAME, $systemctl_path disable $NGINX_INIT_NAME, $systemctl_path reload $NGINX_INIT_NAME, $systemctl_path start $NGINX_INIT_NAME, $systemctl_path stop $NGINX_INIT_NAME, $NGINX_BIN -t, $NGINX_BIN -t -c *" >"$NGINX_SUDOERS_FILE"
echo "%dokku ALL=(ALL) NOPASSWD:$systemctl_path enable $NGINX_INIT_NAME, $systemctl_path disable $NGINX_INIT_NAME, $systemctl_path reload $NGINX_INIT_NAME, $systemctl_path start $NGINX_INIT_NAME, $systemctl_path stop $NGINX_INIT_NAME, $systemctl_path is-active --quiet $NGINX_INIT_NAME, $NGINX_BIN -t, $NGINX_BIN -t -c *" >"$NGINX_SUDOERS_FILE"
elif [[ -x /usr/bin/sv ]]; then
echo "%dokku ALL=(ALL) NOPASSWD:/usr/bin/sv enable $NGINX_INIT_NAME, /usr/bin/sv disable $NGINX_INIT_NAME, /usr/bin/sv reload $NGINX_INIT_NAME, /usr/bin/sv start $NGINX_INIT_NAME, /usr/bin/sv stop $NGINX_INIT_NAME, $NGINX_BIN -t, $NGINX_BIN -t -c *" >"$NGINX_SUDOERS_FILE"
echo "%dokku ALL=(ALL) NOPASSWD:/usr/bin/sv enable $NGINX_INIT_NAME, /usr/bin/sv disable $NGINX_INIT_NAME, /usr/bin/sv reload $NGINX_INIT_NAME, /usr/bin/sv start $NGINX_INIT_NAME, /usr/bin/sv stop $NGINX_INIT_NAME, /usr/bin/sv status $NGINX_INIT_NAME, $NGINX_BIN -t, $NGINX_BIN -t -c *" >"$NGINX_SUDOERS_FILE"
else
echo "%dokku ALL=(ALL) NOPASSWD:/etc/init.d/$NGINX_INIT_NAME enable, /etc/init.d/$NGINX_INIT_NAME disable, /etc/init.d/$NGINX_INIT_NAME reload, /etc/init.d/$NGINX_INIT_NAME start, /etc/init.d/$NGINX_INIT_NAME stop, $NGINX_BIN -t, $NGINX_BIN -t -c *" >"$NGINX_SUDOERS_FILE"
fi
;;
arch)
echo "%dokku ALL=(ALL) NOPASSWD:$systemctl_path enable $NGINX_INIT_NAME, $systemctl_path disable $NGINX_INIT_NAME, $systemctl_path reload $NGINX_INIT_NAME, $systemctl_path start $NGINX_INIT_NAME, $systemctl_path stop $NGINX_INIT_NAME, $NGINX_BIN -t, $NGINX_BIN -t -c *" >"$NGINX_SUDOERS_FILE"
echo "%dokku ALL=(ALL) NOPASSWD:$systemctl_path enable $NGINX_INIT_NAME, $systemctl_path disable $NGINX_INIT_NAME, $systemctl_path reload $NGINX_INIT_NAME, $systemctl_path start $NGINX_INIT_NAME, $systemctl_path stop $NGINX_INIT_NAME, $systemctl_path is-active --quiet $NGINX_INIT_NAME, $NGINX_BIN -t, $NGINX_BIN -t -c *" >"$NGINX_SUDOERS_FILE"
;;
esac

View File

@@ -523,6 +523,57 @@ fn-nginx-vhosts-nginx-location() {
echo "$NGINX_LOCATION"
}
fn-nginx-vhosts-nginx-is-running() {
declare desc="check if nginx is running"
local NGINX_INIT_NAME
NGINX_INIT_NAME=nginx
if fn-nginx-vhosts-uses-openresty; then
NGINX_INIT_NAME=openresty
fi
case "$DOKKU_DISTRO" in
debian | raspbian)
if [[ -x "$systemctl_path" ]]; then
if sudo "$systemctl_path" is-active --quiet "$NGINX_INIT_NAME"; then
return 0
fi
else
dokku_log_warn "Checking $NGINX_INIT_NAME status is not possible for init.d managed services"
return 0
fi
;;
ubuntu)
# support docker-based installations
if [[ "$DOKKU_INIT_SYSTEM" == "sv" ]]; then
if sudo /usr/bin/sv status $NGINX_INIT_NAME | grep -q "^run:"; then
return 0
fi
elif [[ -x "$systemctl_path" ]]; then
if sudo "$systemctl_path" is-active --quiet "$NGINX_INIT_NAME"; then
return 0
fi
elif [[ -x /usr/bin/sv ]]; then
if sudo /usr/bin/sv status $NGINX_INIT_NAME | grep -q "^run:"; then
return 0
fi
else
dokku_log_warn "Checking $NGINX_INIT_NAME status is not possible for init.d managed services"
return 0
fi
;;
arch)
if sudo "$systemctl_path" is-active --quiet "$NGINX_INIT_NAME"; then
return 0
fi
;;
esac
return 1
}
fn-nginx-vhosts-nginx-init-cmd() {
declare desc="start nginx for given distros"
declare CMD="$1"

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core nginx-vhosts plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -10,7 +10,9 @@ trigger-nginx-vhosts-post-delete() {
declare APP="$1"
fn-plugin-property-destroy "nginx" "$APP"
restart_nginx "$@" >/dev/null
if fn-nginx-vhosts-nginx-is-running; then
restart_nginx "$@" >/dev/null
fi
rm -rf "${DOKKU_LIB_ROOT}/data/nginx-vhosts/app-$APP"
}

View File

@@ -10,7 +10,7 @@ cmd-nginx-set() {
[[ "$1" == "$cmd" ]] && shift 1
declare APP="$1" KEY="$2" VALUE="$3"
local VALID_KEYS=("access-log-format" "access-log-path" "bind-address-ipv4" "bind-address-ipv6" "client-max-body-size" "disable-custom-config" "error-log-path" "hsts" "hsts-include-subdomains" "hsts-preload" "hsts-max-age" "nginx-conf-sigil-path" "proxy-read-timeout" "proxy-buffer-size" "proxy-buffering" "proxy-buffers" "proxy-busy-buffers-size" "underscore-in-headers" "x-forwarded-for-value" "x-forwarded-port-value" "x-forwarded-proto-value" "x-forwarded-ssl")
local GLOBAL_KEYS=("hsts" "nginx-conf-sigil-path")
local GLOBAL_KEYS=("access-log-format" "access-log-path" "bind-address-ipv4" "bind-address-ipv6" "client-max-body-size" "disable-custom-config" "error-log-path" "hsts-include-subdomains" "hsts-max-age" "hsts-preload" "hsts" "nginx-conf-sigil-path" "proxy-buffer-size" "proxy-buffering" "proxy-buffers" "proxy-busy-buffers-size" "proxy-read-timeout" "underscore-in-headers" "x-forwarded-for-value" "x-forwarded-port-value" "x-forwarded-proto-value" "x-forwarded-ssl")
[[ -z "$KEY" ]] && dokku_log_fail "No key specified"

View File

@@ -1 +1 @@
FROM dokku/openresty-docker-proxy:0.9.0
FROM dokku/openresty-docker-proxy:0.9.1

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core openresty-vhosts plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core plugin plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core ports plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core proxy plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core ps plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core registry plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core repo plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core resource plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core run plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -153,7 +153,10 @@ trigger-scheduler-docker-local-check-deploy() {
echo "$content" >"$TMP_APP_JSON_OUTPUT"
fi
sudo /usr/bin/docker-container-healthchecker check "$DOKKU_APP_CONTAINER_ID" "${ARG_ARRAY[@]}" || FAILEDCHECKS="$?"
local docker_container_healthchecker_path
docker_container_healthchecker_path="$(command -v docker-container-healthchecker)"
sudo "$docker_container_healthchecker_path" check "$DOKKU_APP_CONTAINER_ID" "${ARG_ARRAY[@]}" || FAILEDCHECKS="$?"
if [[ $FAILEDCHECKS -gt 0 ]]; then
"$DOCKER_BIN" container update --restart=no "$DOKKU_APP_CONTAINER_ID" &>/dev/null || true

View File

@@ -16,7 +16,9 @@ trigger-scheduler-docker-local-install() {
rm -f "/etc/sudoers.d/dokku-cron"
echo "%dokku ALL=(ALL) NOPASSWD:/usr/bin/docker-container-healthchecker" >"/etc/sudoers.d/dokku-docker-container-healthchecker"
local docker_container_healthchecker_path
docker_container_healthchecker_path="$(command -v docker-container-healthchecker)"
echo "%dokku ALL=(ALL) NOPASSWD:$docker_container_healthchecker_path" >"/etc/sudoers.d/dokku-docker-container-healthchecker"
chmod "0440" "/etc/sudoers.d/dokku-docker-container-healthchecker"
DOKKU_PATH="$(command -v dokku)"

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core scheduler-docker-local plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -39,7 +39,7 @@ trigger-scheduler-docker-local-scheduler-enter() {
esac
done
if [[ -z "$CONTAINER_ID" ]] && [[ -z "$CONTAINER_TYPE" ]]; then
if [[ -z "$CONTAINER_ID" ]] && [[ -z "$CONTAINER_TYPE" || "$CONTAINER_TYPE" == "--" ]]; then
AVAILABLE_CONTAINER_TYPES=($(get_app_running_container_types "$APP"))
if [[ ${#AVAILABLE_CONTAINER_TYPES[@]} -gt 1 ]]; then
dokku_log_warn "No container type specified."

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core scheduler-k3s plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core scheduler-null plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core scheduler plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core shell plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core ssh-keys plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core storage plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core trace plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -1 +1 @@
FROM traefik:3.1.2
FROM traefik:3.1.4

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core traefik-vhosts plugin"
version = "0.35.1"
version = "0.35.4"
[plugin.config]

View File

@@ -7,7 +7,7 @@
"express": "4.21.x",
"connect": "*",
"handlebars": "~4.7.1",
"socket.io": "~4.7.1",
"socket.io": "~4.8.0",
"express3-handlebars": "~0.5.2"
},
"engines": {

125
tests/unit/app-json-4.bats Normal file
View File

@@ -0,0 +1,125 @@
#!/usr/bin/env bats
load test_helper
setup_file() {
install_pack
}
setup() {
global_setup
create_app
}
teardown() {
destroy_app
global_teardown
}
@test "(app-json) app.json failing dokku.predeploy" {
run /bin/bash -c "dokku builder-herokuish:set $TEST_APP allowed true"
echo "output: $output"
echo "status: $status"
assert_success
run deploy_app python dokku@$DOKKU_DOMAIN:$TEST_APP add_failing_dokku_predeploy
echo "output: $output"
echo "status: $status"
assert_output_contains "Execution of predeploy task failed"
assert_failure
}
@test "(app-json) app.json failing dokku.postdeploy" {
run /bin/bash -c "dokku builder-herokuish:set $TEST_APP allowed true"
echo "output: $output"
echo "status: $status"
assert_success
run deploy_app python dokku@$DOKKU_DOMAIN:$TEST_APP add_failing_dokku_postdeploy
echo "output: $output"
echo "status: $status"
assert_output_contains "Execution of postdeploy task failed"
assert_failure
}
@test "(app-json) app.json failing postdeploy" {
run /bin/bash -c "dokku builder-herokuish:set $TEST_APP allowed true"
echo "output: $output"
echo "status: $status"
assert_success
run deploy_app python dokku@$DOKKU_DOMAIN:$TEST_APP add_failing_postdeploy
echo "output: $output"
echo "status: $status"
assert_output_contains "Execution of first deploy postdeploy task failed"
assert_failure
}
@test "(app-json) app.json failing release" {
run /bin/bash -c "dokku builder-herokuish:set $TEST_APP allowed true"
echo "output: $output"
echo "status: $status"
assert_success
run deploy_app python dokku@$DOKKU_DOMAIN:$TEST_APP add_failing_release
echo "output: $output"
echo "status: $status"
assert_output_contains "Execution of release task failed"
assert_failure
}
add_failing_dokku_predeploy() {
local APP="$1"
local APP_REPO_DIR="$2"
[[ -z "$APP" ]] && local APP="$TEST_APP"
cat >"$APP_REPO_DIR/app.json" <<EOF
{
"scripts": {
"dokku": {
"predeploy": "exit 1"
}
}
}
EOF
}
add_failing_dokku_postdeploy() {
local APP="$1"
local APP_REPO_DIR="$2"
[[ -z "$APP" ]] && local APP="$TEST_APP"
cat >"$APP_REPO_DIR/app.json" <<EOF
{
"scripts": {
"dokku": {
"postdeploy": "exit 1"
}
}
}
EOF
}
add_failing_postdeploy() {
local APP="$1"
local APP_REPO_DIR="$2"
[[ -z "$APP" ]] && local APP="$TEST_APP"
cat >"$APP_REPO_DIR/app.json" <<EOF
{
"scripts": {
"postdeploy": "exit 1"
}
}
EOF
}
add_failing_release() {
local APP="$1"
local APP_REPO_DIR="$2"
[[ -z "$APP" ]] && local APP="$TEST_APP"
cat >"$APP_REPO_DIR/Procfile" <<EOF
web: python3 -u web.py
release: exit 1
EOF
}

View File

@@ -99,7 +99,7 @@ teardown() {
echo "status: $status"
assert_success
run deploy_app python dokku@$DOKKU_DOMAIN:$TEST_APP add_requirements_txt
run deploy_app python dokku@$DOKKU_DOMAIN:$TEST_APP add_requirements_txt_cnb
echo "output: $output"
echo "status: $status"
assert_success

View File

@@ -181,6 +181,11 @@ teardown() {
assert_success
assert_output_contains "Application deployed"
run /bin/bash -c "dokku config:get $TEST_APP GIT_REV"
echo "output: $output"
echo "status: $status"
assert_output_exists
run /bin/bash -c "cat /home/dokku/$TEST_APP/refs/heads/master"
echo "output: $output"
echo "status: $status"

View File

@@ -22,7 +22,7 @@ teardown() {
echo "status: $status"
assert_success
run deploy_app python dokku@$DOKKU_DOMAIN:$TEST_APP add_requirements_txt
run deploy_app python dokku@$DOKKU_DOMAIN:$TEST_APP add_requirements_txt_cnb
echo "output: $output"
echo "status: $status"
assert_success

View File

@@ -73,7 +73,7 @@ teardown() {
echo "status: $status"
assert_success
run deploy_app python dokku@$DOKKU_DOMAIN:$TEST_APP add_requirements_txt
run deploy_app python dokku@$DOKKU_DOMAIN:$TEST_APP add_requirements_txt_cnb
echo "output: $output"
echo "status: $status"
assert_success

View File

@@ -587,6 +587,15 @@ add_requirements_txt() {
echo "flask" >>"$APP_REPO_DIR/requirements.txt"
}
add_requirements_txt_cnb() {
local APP="$1"
local APP_REPO_DIR="$2"
[[ -z "$APP" ]] && local APP="$TEST_APP"
mv "$APP_REPO_DIR/app-cnb.json" "$APP_REPO_DIR/app.json"
add_requirements_txt "$APP" "$APP_REPO_DIR"
}
create_network() {
local NETWORK_NAME="${1:-$TEST_NETWORK}"
@@ -637,7 +646,7 @@ convert_to_dockerfile() {
}
install_pack() {
if ! command -v "pack" &>/dev/null; then
if [[ ! -x /usr/bin/pack ]]; then
add-apt-repository --yes ppa:cncf-buildpacks/pack-cli
apt-get update
apt-get --yes install pack-cli