Compare commits
43 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e99ea77069 | ||
|
|
27ce6b622c | ||
|
|
24b5447ba7 | ||
|
|
9490034412 | ||
|
|
1abb180d1c | ||
|
|
b8b112cb7b | ||
|
|
fcb66a43cc | ||
|
|
4ec6fa3eb0 | ||
|
|
b9ebf2bcca | ||
|
|
03102cd681 | ||
|
|
e905503bb9 | ||
|
|
5857a937d5 | ||
|
|
ed4646153f | ||
|
|
34df653536 | ||
|
|
8954e51224 | ||
|
|
ab18225237 | ||
|
|
a7e2928f1e | ||
|
|
de33c7375b | ||
|
|
afe3ce4ab5 | ||
|
|
095995da87 | ||
|
|
5832523446 | ||
|
|
68be10b661 | ||
|
|
0a9ce752cc | ||
|
|
9d76265e33 | ||
|
|
4b30e33ce8 | ||
|
|
34bdd15364 | ||
|
|
caa7b10091 | ||
|
|
ac56a5ffdd | ||
|
|
aa74178622 | ||
|
|
61b7752cce | ||
|
|
0f8395365e | ||
|
|
2fd9de8456 | ||
|
|
a53d8cf5c7 | ||
|
|
551ca6771f | ||
|
|
04bae1efd9 | ||
|
|
e09a9185f5 | ||
|
|
fe89dc3ac4 | ||
|
|
66dbd22805 | ||
|
|
826be00fbc | ||
|
|
a88c9bfaac | ||
|
|
c8982fb2ab | ||
|
|
5e13865c5c | ||
|
|
e70169f591 |
@@ -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/*
|
||||
|
||||
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
@@ -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:
|
||||
|
||||
70
HISTORY.md
70
HISTORY.md
@@ -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:
|
||||
|
||||
@@ -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
2
Vagrantfile
vendored
@@ -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
|
||||
|
||||
|
||||
@@ -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
2
debian/control
vendored
@@ -1,5 +1,5 @@
|
||||
Package: dokku
|
||||
Version: 0.35.1
|
||||
Version: 0.35.4
|
||||
Section: web
|
||||
Priority: optional
|
||||
Architecture: amd64
|
||||
|
||||
4
docs/_build/requirements.txt
vendored
4
docs/_build/requirements.txt
vendored
@@ -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
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -32,6 +32,6 @@
|
||||
"0.32.4",
|
||||
"0.33.9",
|
||||
"0.34.9",
|
||||
"0.35.1"
|
||||
"0.35.4"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
```
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core standard plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core events logging plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core app-json plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core apps plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core builder-dockerfile plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
15
plugins/builder-herokuish/commands
Executable file
15
plugins/builder-herokuish/commands
Executable 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
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core builder-herokuish plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core builder-lambda plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core builder-nixpacks plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core builder-null plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core builder-pack plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core builder plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core buildpacks plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core caddy-vhosts plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core certificate management plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core checks plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core common plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core config plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core cron plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core docker-options plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core domains plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core enter plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core git plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core haproxy-vhosts plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core logs plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core network plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:])
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core nginx-vhosts plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
FROM dokku/openresty-docker-proxy:0.9.0
|
||||
FROM dokku/openresty-docker-proxy:0.9.1
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core openresty-vhosts plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core plugin plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core ports plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core proxy plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core ps plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core registry plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core repo plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core resource plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core run plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core scheduler-docker-local plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core scheduler-k3s plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core scheduler-null plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core scheduler plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core shell plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core ssh-keys plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core storage plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core trace plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1 +1 @@
|
||||
FROM traefik:3.1.2
|
||||
FROM traefik:3.1.4
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core traefik-vhosts plugin"
|
||||
version = "0.35.1"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -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
125
tests/unit/app-json-4.bats
Normal 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
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user