Compare commits
116 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5c1a6a68af | ||
|
|
aea8581b09 | ||
|
|
3511ae53f4 | ||
|
|
335143fca3 | ||
|
|
75b7ae94e1 | ||
|
|
c4270ca950 | ||
|
|
8a4b0e16e4 | ||
|
|
ebe7c82fb9 | ||
|
|
fbdf77ab38 | ||
|
|
9352e7a594 | ||
|
|
28de1b3fba | ||
|
|
64b1a54cad | ||
|
|
3c47971c61 | ||
|
|
6b90dc70b1 | ||
|
|
859ea13b0a | ||
|
|
51a3b0312a | ||
|
|
1d5699a67f | ||
|
|
eb7fde9c12 | ||
|
|
c8b86508eb | ||
|
|
61503b7b17 | ||
|
|
f918efa8f9 | ||
|
|
dba2246d7a | ||
|
|
d09cfb82f8 | ||
|
|
d02efdcc05 | ||
|
|
06bdee37ff | ||
|
|
e4c0c6b9d9 | ||
|
|
72c5172873 | ||
|
|
36e02c74fd | ||
|
|
3ae9feba8f | ||
|
|
757a829137 | ||
|
|
f7e218637e | ||
|
|
dbe80de925 | ||
|
|
4de1937e41 | ||
|
|
d4a634d24e | ||
|
|
2480b773a1 | ||
|
|
7f0b43c18f | ||
|
|
68efb73be6 | ||
|
|
2b76903bf3 | ||
|
|
6a4a94e236 | ||
|
|
9139c81db9 | ||
|
|
14249de8e5 | ||
|
|
b4db0c1a6c | ||
|
|
cd97ac3388 | ||
|
|
73f3ce7579 | ||
|
|
da67ebed5d | ||
|
|
36c2266196 | ||
|
|
6b357fdcb4 | ||
|
|
2ed3c6c356 | ||
|
|
528bd744e0 | ||
|
|
4ab42e846d | ||
|
|
d2cbb02342 | ||
|
|
e2e18cc0fc | ||
|
|
a31a7a231c | ||
|
|
669259eace | ||
|
|
45c543adde | ||
|
|
627a6bf8a5 | ||
|
|
f5e55540e9 | ||
|
|
d7f3a2b003 | ||
|
|
9ce309bed9 | ||
|
|
b62264c275 | ||
|
|
d4e832c27b | ||
|
|
59c45ea1d6 | ||
|
|
f64a754211 | ||
|
|
d8895bb64b | ||
|
|
882889a962 | ||
|
|
7338a77285 | ||
|
|
af014750aa | ||
|
|
02a8409114 | ||
|
|
3681c17aa2 | ||
|
|
f56023bb74 | ||
|
|
5ef41861d3 | ||
|
|
a679e80187 | ||
|
|
85c841da88 | ||
|
|
7cabb4dd9a | ||
|
|
286be7f3df | ||
|
|
1e915968b5 | ||
|
|
3dfb84048c | ||
|
|
78a3570bb2 | ||
|
|
9733bf9fa1 | ||
|
|
effaa8e81c | ||
|
|
7558a9898e | ||
|
|
eca6cde934 | ||
|
|
197f0c7c95 | ||
|
|
ef2682945c | ||
|
|
5e7ea4217f | ||
|
|
123fbea7c0 | ||
|
|
0673fdff2d | ||
|
|
e07befb93c | ||
|
|
8e1f890322 | ||
|
|
8ca713f6bb | ||
|
|
da1ddee0ba | ||
|
|
d48cf24c4d | ||
|
|
5614475521 | ||
|
|
b826770687 | ||
|
|
34807028db | ||
|
|
0405b36ab4 | ||
|
|
291f59999c | ||
|
|
1568fc7827 | ||
|
|
681fd6abf6 | ||
|
|
031159c1b9 | ||
|
|
812e34c6f5 | ||
|
|
5921692f83 | ||
|
|
33d5dd44d9 | ||
|
|
d7562d36e6 | ||
|
|
49a2f8ab82 | ||
|
|
82afae6447 | ||
|
|
25ab915883 | ||
|
|
0963c403ab | ||
|
|
9c1852fcdb | ||
|
|
a6aef82236 | ||
|
|
8b4e31bb22 | ||
|
|
7c923a0fa1 | ||
|
|
169f202994 | ||
|
|
4448e60a8b | ||
|
|
c744c25d35 | ||
|
|
f9ebdae66d |
@@ -1,3 +1,4 @@
|
|||||||
|
---
|
||||||
version: 2.1
|
version: 2.1
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
|
---
|
||||||
exclude_paths:
|
exclude_paths:
|
||||||
- vendor/**/*
|
- vendor/**/*
|
||||||
- tests/**/*
|
- tests/**/*
|
||||||
- "**_test.go"
|
- "**_test.go"
|
||||||
- contrib/*
|
- contrib/*
|
||||||
|
|||||||
51
.github/commands/bump-azure
vendored
Executable file
51
.github/commands/bump-azure
vendored
Executable file
@@ -0,0 +1,51 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
main() {
|
||||||
|
declare VERSION="$1" BOT_GITHUB_USERNAME="$2" BOT_GITHUB_API_TOKEN="$3"
|
||||||
|
local GH_VERSION=1.6.1
|
||||||
|
local DATE_UPDATED="$(date +"%Y-%m-%d")"
|
||||||
|
local GH_FOLDER="gh_${GH_VERSION}_linux_amd64"
|
||||||
|
|
||||||
|
echo "=====> Downloading gh"
|
||||||
|
wget -O gh.tar.gz "https://github.com/cli/cli/releases/download/v${GH_VERSION}/${GH_FOLDER}.tar.gz"
|
||||||
|
tar xzf gh.tar.gz -C tmp
|
||||||
|
mkdir -p tmp
|
||||||
|
if [[ ! -f tmp/$GH_FOLDER/bin/gh ]]; then
|
||||||
|
echo "Failed to extract gh"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd tmp
|
||||||
|
|
||||||
|
$GH_FOLDER/bin/gh auth login --with-token <<<"$BOT_GITHUB_API_TOKEN"
|
||||||
|
|
||||||
|
echo "=====> Cloning quickstart templates"
|
||||||
|
rm -rf azure-quickstart-templates >/dev/null
|
||||||
|
git clone https://github.com/Azure/azure-quickstart-templates.git azure-quickstart-templates
|
||||||
|
|
||||||
|
pushd azure-quickstart-templates >/dev/null
|
||||||
|
|
||||||
|
echo "=====> Updating values"
|
||||||
|
contents="$(jq '.githubUsername = "dokku"' dokku-vm/metadata.json)"
|
||||||
|
echo "${contents}" >dokku-vm/metadata.json
|
||||||
|
contents="$(jq --arg DATE_UPDATED "$DATE_UPDATED" '.dateUpdated = $DATE_UPDATED' dokku-vm/metadata.json)"
|
||||||
|
echo "${contents}" >dokku-vm/metadata.json
|
||||||
|
|
||||||
|
contents="$(jq --arg VERSION "$VERSION" '.parameters.dokkuVersion.defaultValue = $VERSION' dokku-vm/azuredeploy.json)"
|
||||||
|
echo "${contents}" >dokku-vm/azuredeploy.json
|
||||||
|
|
||||||
|
echo "=====> Updating remote repository"
|
||||||
|
git add dokku-vm
|
||||||
|
git checkout -b dokku-$VERSION
|
||||||
|
git commit -m "Update dokku-vm dokku version to $VERSION"
|
||||||
|
git remote set-url origin "https://$BOT_GITHUB_USERNAME:$BOT_GITHUB_API_TOKEN@github.com/dokku/azure-quickstart-templates.git"
|
||||||
|
git push -f origin dokku-$VERSION
|
||||||
|
|
||||||
|
echo "=====> Creating upstream pull request"
|
||||||
|
../$GH_FOLDER/bin/gh pr create --head dokku:dokku-$VERSION --repo Azure/azure-quickstart-templates --title 'Update dokku-vm dokku version to 0.23.7' --body ''
|
||||||
|
|
||||||
|
popd >/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
||||||
10
.github/linters/.markdown-lint.yml
vendored
Normal file
10
.github/linters/.markdown-lint.yml
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
default: true
|
||||||
|
|
||||||
|
# Line length
|
||||||
|
# https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md013
|
||||||
|
MD013: false
|
||||||
|
|
||||||
|
# Inline HTML
|
||||||
|
# https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md033
|
||||||
|
MD033: false
|
||||||
5
.github/linters/.yamllint.yml
vendored
Normal file
5
.github/linters/.yamllint.yml
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
extends: default
|
||||||
|
|
||||||
|
rules:
|
||||||
|
line-length: disable
|
||||||
23
.github/workflows/bump-formula.yml
vendored
23
.github/workflows/bump-formula.yml
vendored
@@ -1,23 +0,0 @@
|
|||||||
name: bump-formula
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags:
|
|
||||||
- '*'
|
|
||||||
jobs:
|
|
||||||
bump-formula:
|
|
||||||
runs-on: macos-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
- name: Get version
|
|
||||||
id: get_version
|
|
||||||
run: echo ::set-output name=version::${GITHUB_REF/refs\/tags\//}
|
|
||||||
- name: Bump Brew
|
|
||||||
env:
|
|
||||||
HOMEBREW_GITHUB_USERNAME: ${{ secrets.HOMEBREW_GITHUB_USERNAME }}
|
|
||||||
HOMEBREW_GITHUB_API_TOKEN: ${{ secrets.HOMEBREW_GITHUB_API_TOKEN }}
|
|
||||||
run: |
|
|
||||||
git config --global user.name 'Dokku Bot'
|
|
||||||
git config --global user.email no-reply@dokku.com
|
|
||||||
brew tap dokku/repo "https://$HOMEBREW_GITHUB_USERNAME:$HOMEBREW_GITHUB_API_TOKEN@github.com/dokku/homebrew-repo.git"
|
|
||||||
brew bump-formula-pr -f --no-browse --no-audit --no-fork --url "https://github.com/dokku/dokku/archive/${{ steps.get_version.outputs.version }}.tar.gz" dokku/repo/dokku
|
|
||||||
164
.github/workflows/ci.yml
vendored
164
.github/workflows/ci.yml
vendored
@@ -1,5 +1,7 @@
|
|||||||
|
---
|
||||||
name: CI
|
name: CI
|
||||||
|
|
||||||
|
# yamllint disable-line rule:truthy
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
@@ -18,23 +20,23 @@ jobs:
|
|||||||
fail-fast: true
|
fail-fast: true
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: build package
|
- name: build package
|
||||||
run: ./tests/ci/setup.sh build
|
run: ./tests/ci/setup.sh build
|
||||||
|
|
||||||
- name: set matrix for build
|
- name: set matrix for build
|
||||||
id: set-matrix
|
id: set-matrix
|
||||||
run: |
|
run: |
|
||||||
json=$(python .github/commands/matrix)
|
json=$(python .github/commands/matrix)
|
||||||
echo $json
|
echo $json
|
||||||
echo "::set-output name=matrix::$(echo "$json")"
|
echo "::set-output name=matrix::$(echo "$json")"
|
||||||
|
|
||||||
- name: upload packages
|
- name: upload packages
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: build
|
name: build
|
||||||
path: build
|
path: build
|
||||||
|
|
||||||
unit-tests:
|
unit-tests:
|
||||||
name: unit.${{ matrix.index }}
|
name: unit.${{ matrix.index }}
|
||||||
@@ -45,30 +47,30 @@ jobs:
|
|||||||
matrix: ${{fromJson(needs.build.outputs.matrix)}}
|
matrix: ${{fromJson(needs.build.outputs.matrix)}}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: download packages
|
- name: download packages
|
||||||
uses: actions/download-artifact@v1
|
uses: actions/download-artifact@v1
|
||||||
with:
|
with:
|
||||||
name: build
|
name: build
|
||||||
|
|
||||||
- name: ci-setup
|
- name: ci-setup
|
||||||
run: ./.github/commands/ci-setup
|
run: ./.github/commands/ci-setup
|
||||||
|
|
||||||
# - name: start ssh session
|
# - name: start ssh session
|
||||||
# uses: luchihoratiu/debug-via-ssh@main
|
# uses: luchihoratiu/debug-via-ssh@main
|
||||||
# with:
|
# with:
|
||||||
# NGROK_AUTH_TOKEN: ${{ secrets.NGROK_AUTH_TOKEN }}
|
# NGROK_AUTH_TOKEN: ${{ secrets.NGROK_AUTH_TOKEN }}
|
||||||
# SSH_PASS: ${{ secrets.SSH_PASS }}
|
# SSH_PASS: ${{ secrets.SSH_PASS }}
|
||||||
|
|
||||||
- name: run ci
|
- name: run ci
|
||||||
timeout-minutes: 30
|
timeout-minutes: 30
|
||||||
run: sudo -E ./.github/commands/ci-run ${{ matrix.index }}
|
run: sudo -E ./.github/commands/ci-run ${{ matrix.index }}
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: test-results-${{ matrix.index }}
|
name: test-results-${{ matrix.index }}
|
||||||
path: test-results
|
path: test-results
|
||||||
|
|
||||||
docker-deploy-tests:
|
docker-deploy-tests:
|
||||||
name: docker
|
name: docker
|
||||||
@@ -78,22 +80,22 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: download packages
|
- name: download packages
|
||||||
uses: actions/download-artifact@v1
|
uses: actions/download-artifact@v1
|
||||||
with:
|
with:
|
||||||
name: build
|
name: build
|
||||||
|
|
||||||
- name: ci-setup
|
- name: ci-setup
|
||||||
run: ./.github/commands/ci-setup
|
run: ./.github/commands/ci-setup
|
||||||
|
|
||||||
- name: test docker deploys
|
- name: test docker deploys
|
||||||
shell: bash
|
shell: bash
|
||||||
timeout-minutes: 20
|
timeout-minutes: 20
|
||||||
run: |
|
run: |
|
||||||
./tests/ci/setup.sh docker
|
./tests/ci/setup.sh docker
|
||||||
DOKKU_SSH_PORT=3022 sudo -E make -e test-ci-docker
|
DOKKU_SSH_PORT=3022 sudo -E make -e test-ci-docker
|
||||||
|
|
||||||
go-tests:
|
go-tests:
|
||||||
name: go.${{ matrix.index }}
|
name: go.${{ matrix.index }}
|
||||||
@@ -107,33 +109,33 @@ jobs:
|
|||||||
GITHUB_NODE_INDEX: ${{ matrix.index }}
|
GITHUB_NODE_INDEX: ${{ matrix.index }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: download packages
|
- name: download packages
|
||||||
uses: actions/download-artifact@v1
|
uses: actions/download-artifact@v1
|
||||||
with:
|
with:
|
||||||
name: build
|
name: build
|
||||||
|
|
||||||
- name: ci-setup
|
- name: ci-setup
|
||||||
run: ./.github/commands/ci-setup
|
run: ./.github/commands/ci-setup
|
||||||
|
|
||||||
- name: run go tests
|
- name: run go tests
|
||||||
run: |
|
run: |
|
||||||
export CIRCLE_SHA1=$GITHUB_SHA
|
export CIRCLE_SHA1=$GITHUB_SHA
|
||||||
echo "CODACY_TOKEN=$CODACY_TOKEN"
|
echo "CODACY_TOKEN=$CODACY_TOKEN"
|
||||||
if [ "$CODACY_TOKEN" != "" ]; then
|
if [ "$CODACY_TOKEN" != "" ]; then
|
||||||
echo "Detected value for CODACY_TOKEN"
|
echo "Detected value for CODACY_TOKEN"
|
||||||
fi
|
fi
|
||||||
case $GITHUB_NODE_INDEX in
|
case $GITHUB_NODE_INDEX in
|
||||||
0) sudo -E make -e lint-ci go-tests ci-go-coverage ;;
|
0) sudo -E make -e lint-ci go-tests ci-go-coverage ;;
|
||||||
1) sudo -E make -e deploy-test-checks-root deploy-test-config ;;
|
1) sudo -E make -e deploy-test-checks-root deploy-test-config ;;
|
||||||
2) sudo -E make -e deploy-test-multi ;;
|
2) sudo -E make -e deploy-test-multi ;;
|
||||||
3) sudo -E make -e deploy-test-go-fail-predeploy deploy-test-go-fail-postdeploy ;;
|
3) sudo -E make -e deploy-test-go-fail-predeploy deploy-test-go-fail-postdeploy ;;
|
||||||
esac
|
esac
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: coverage.${{ matrix.index }}
|
name: coverage.${{ matrix.index }}
|
||||||
path: test-results/coverage
|
path: test-results/coverage
|
||||||
|
|
||||||
publish-test-results:
|
publish-test-results:
|
||||||
name: publish-test-results
|
name: publish-test-results
|
||||||
@@ -143,15 +145,15 @@ jobs:
|
|||||||
if: success() || failure()
|
if: success() || failure()
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: download test-results
|
- name: download test-results
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v2
|
||||||
with:
|
with:
|
||||||
path: test-results
|
path: test-results
|
||||||
|
|
||||||
- name: Publish Unit Test Results
|
- name: Publish Unit Test Results
|
||||||
uses: docker://ghcr.io/enricomi/publish-unit-test-result-action:v1.6
|
uses: docker://ghcr.io/enricomi/publish-unit-test-result-action:v1.6
|
||||||
with:
|
with:
|
||||||
check_name: Unit Test Results
|
check_name: Unit Test Results
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
files: test-results/**/*.xml
|
files: test-results/**/*.xml
|
||||||
comment_on_pr: false
|
comment_on_pr: false
|
||||||
|
|||||||
58
.github/workflows/codeql-analysis.yml
vendored
58
.github/workflows/codeql-analysis.yml
vendored
@@ -1,3 +1,4 @@
|
|||||||
|
---
|
||||||
# For most projects, this workflow file will not need changing; you simply need
|
# For most projects, this workflow file will not need changing; you simply need
|
||||||
# to commit it to your repository.
|
# to commit it to your repository.
|
||||||
#
|
#
|
||||||
@@ -12,12 +13,13 @@
|
|||||||
|
|
||||||
name: "CodeQL"
|
name: "CodeQL"
|
||||||
|
|
||||||
|
# yamllint disable-line rule:truthy
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [ master ]
|
branches: [master]
|
||||||
pull_request:
|
pull_request:
|
||||||
# The branches below must be a subset of the branches above
|
# The branches below must be a subset of the branches above
|
||||||
branches: [ master ]
|
branches: [master]
|
||||||
schedule:
|
schedule:
|
||||||
- cron: '18 22 * * 2'
|
- cron: '18 22 * * 2'
|
||||||
|
|
||||||
@@ -29,40 +31,40 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
language: [ 'go' ]
|
language: ['go']
|
||||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
|
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
|
||||||
# Learn more:
|
# Learn more:
|
||||||
# https://docs.github.com/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
|
# https://docs.github.com/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v1
|
uses: github/codeql-action/init@v1
|
||||||
with:
|
with:
|
||||||
languages: ${{ matrix.language }}
|
languages: ${{ matrix.language }}
|
||||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||||
# By default, queries listed here will override any specified in a config file.
|
# By default, queries listed here will override any specified in a config file.
|
||||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
||||||
|
|
||||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||||
# If this step fails, then you should remove it and run the build manually (see below)
|
# If this step fails, then you should remove it and run the build manually (see below)
|
||||||
- name: Autobuild
|
- name: Autobuild
|
||||||
uses: github/codeql-action/autobuild@v1
|
uses: github/codeql-action/autobuild@v1
|
||||||
|
|
||||||
# ℹ️ Command-line programs to run using the OS shell.
|
# ℹ️ Command-line programs to run using the OS shell.
|
||||||
# 📚 https://git.io/JvXDl
|
# 📚 https://git.io/JvXDl
|
||||||
|
|
||||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
||||||
# and modify them (or add more) to build your code if your project
|
# and modify them (or add more) to build your code if your project
|
||||||
# uses a compiled language
|
# uses a compiled language
|
||||||
|
|
||||||
#- run: |
|
# - run: |
|
||||||
# make bootstrap
|
# make bootstrap
|
||||||
# make release
|
# make release
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@v1
|
uses: github/codeql-action/analyze@v1
|
||||||
|
|||||||
74
.github/workflows/lint.yml
vendored
Normal file
74
.github/workflows/lint.yml
vendored
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
---
|
||||||
|
name: 'lint'
|
||||||
|
|
||||||
|
# yamllint disable-line rule:truthy
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- '*'
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'master'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
hadolint:
|
||||||
|
name: hadolint
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
steps:
|
||||||
|
- name: Clone
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: Run hadolint
|
||||||
|
uses: brpaz/hadolint-action@1623ba61710b974b55ba455930e6f2c8ef919778
|
||||||
|
# v1.3.1 => 1623ba61710b974b55ba455930e6f2c8ef919778
|
||||||
|
|
||||||
|
markdown-lint:
|
||||||
|
name: markdown-lint
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
steps:
|
||||||
|
- name: Clone
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: Run markdown-lint
|
||||||
|
uses: avto-dev/markdown-lint@04d43ee9191307b50935a753da3b775ab695eceb
|
||||||
|
# v1.5.0 => 04d43ee9191307b50935a753da3b775ab695eceb
|
||||||
|
with:
|
||||||
|
config: '.github/linters/.markdown-lint.yml'
|
||||||
|
args: './README.md'
|
||||||
|
|
||||||
|
shellcheck:
|
||||||
|
name: shellcheck
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
steps:
|
||||||
|
- name: Clone
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: Run shellcheck
|
||||||
|
uses: ludeeus/action-shellcheck@d586102c117f97e63d7e3b56629d269efc9a7c60
|
||||||
|
# 1.0.0 => d586102c117f97e63d7e3b56629d269efc9a7c60
|
||||||
|
env:
|
||||||
|
# keep in sync with tests/shellcheck-exclude
|
||||||
|
SHELLCHECK_OPTS: -e SC1001 -e SC1003 -e SC1090 -e SC1091 -e SC1117 -e SC2029 -e SC2034 -e SC2046 -e SC2064 -e SC2068 -e SC2086 -e SC2119 -e SC2120 -e SC2128 -e SC2148 -e SC2153 -e SC2154 -e SC2155 -e SC2162 -e SC2174 -e SC2179 -e SC2191 -e SC2199 -e SC2207 -e SC2219 -e SC2220 -e SC2230 -e SC2231 -e SC2235
|
||||||
|
|
||||||
|
shfmt:
|
||||||
|
name: shfmt
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
steps:
|
||||||
|
- name: Clone
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: Run shfmt
|
||||||
|
uses: luizm/action-sh-checker@442951059cb22d260c6e69309ae59cb7bb2334b8
|
||||||
|
# v0.1.12 => 442951059cb22d260c6e69309ae59cb7bb2334b8
|
||||||
|
env:
|
||||||
|
SHFMT_OPTS: -l -bn -ci -i 2 -d
|
||||||
|
with:
|
||||||
|
sh_checker_shellcheck_disable: true
|
||||||
|
|
||||||
|
yamllint:
|
||||||
|
name: yamllint
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
steps:
|
||||||
|
- name: Clone
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: Run yamllint
|
||||||
|
uses: ibiqlik/action-yamllint@b2aeacc1b7eeb8c23e84bba320d04fb5d6a323ee
|
||||||
|
# v3.0.0 => b2aeacc1b7eeb8c23e84bba320d04fb5d6a323ee
|
||||||
|
with:
|
||||||
|
config_file: '.github/linters/.yamllint.yml'
|
||||||
85
.github/workflows/release.yml
vendored
Normal file
85
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
---
|
||||||
|
name: 'release'
|
||||||
|
|
||||||
|
# yamllint disable-line rule:truthy
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
release_type:
|
||||||
|
description: 'Release type [build, betafish, patch, minor, major]'
|
||||||
|
required: true
|
||||||
|
default: 'build'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
release:
|
||||||
|
name: release
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
env:
|
||||||
|
PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}
|
||||||
|
outputs:
|
||||||
|
version: ${{ steps.version.outputs.version }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- uses: ruby/setup-ruby@v1
|
||||||
|
with:
|
||||||
|
ruby-version: 2.6
|
||||||
|
|
||||||
|
- name: Login to Docker Hub
|
||||||
|
uses: docker/login-action@v1
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: install package_cloud
|
||||||
|
run: gem install package_cloud
|
||||||
|
|
||||||
|
- name: configure git
|
||||||
|
run: |
|
||||||
|
git config --global user.name 'Dokku Bot'
|
||||||
|
git config --global user.email no-reply@dokku.com
|
||||||
|
|
||||||
|
- name: build package
|
||||||
|
run: contrib/release-dokku ${{ github.event.inputs.release_type }}
|
||||||
|
|
||||||
|
- name: output version
|
||||||
|
id: version
|
||||||
|
run: echo "::set-output name=version::$(cat build/next-version)"
|
||||||
|
|
||||||
|
- name: upload packages
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: build
|
||||||
|
path: build
|
||||||
|
|
||||||
|
bump-azure:
|
||||||
|
name: bump-azure
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
needs: release
|
||||||
|
steps:
|
||||||
|
- name: Bump Azure Template
|
||||||
|
env:
|
||||||
|
BOT_GITHUB_USERNAME: ${{ secrets.HOMEBREW_GITHUB_USERNAME }}
|
||||||
|
BOT_GITHUB_API_TOKEN: ${{ secrets.HOMEBREW_GITHUB_API_TOKEN }}
|
||||||
|
run: |
|
||||||
|
VERSION=${{ needs.release.outputs.version }}
|
||||||
|
git config --global user.name 'Dokku Bot'
|
||||||
|
git config --global user.email no-reply@dokku.com
|
||||||
|
.github/commands/bump-azure "${VERSION:1}" "$BOT_GITHUB_USERNAME" "$BOT_GITHUB_API_TOKEN"
|
||||||
|
|
||||||
|
bump-formula:
|
||||||
|
name: bump-formula
|
||||||
|
runs-on: macos-latest
|
||||||
|
needs: release
|
||||||
|
steps:
|
||||||
|
- name: Bump Homebrew Formula
|
||||||
|
env:
|
||||||
|
HOMEBREW_GITHUB_USERNAME: ${{ secrets.HOMEBREW_GITHUB_USERNAME }}
|
||||||
|
HOMEBREW_GITHUB_API_TOKEN: ${{ secrets.HOMEBREW_GITHUB_API_TOKEN }}
|
||||||
|
run: |
|
||||||
|
git config --global user.name 'Dokku Bot'
|
||||||
|
git config --global user.email no-reply@dokku.com
|
||||||
|
brew tap dokku/repo "https://$HOMEBREW_GITHUB_USERNAME:$HOMEBREW_GITHUB_API_TOKEN@github.com/dokku/homebrew-repo.git"
|
||||||
|
brew bump-formula-pr -f --no-browse --no-audit --no-fork --url "https://github.com/dokku/dokku/archive/${{ needs.release.outputs.version }}.tar.gz" dokku/repo/dokku
|
||||||
@@ -5,10 +5,10 @@ several ways to help out:
|
|||||||
|
|
||||||
* Create an [issue](https://github.com/dokku/dokku/issues) on GitHub, if you
|
* Create an [issue](https://github.com/dokku/dokku/issues) on GitHub, if you
|
||||||
have found a bug
|
have found a bug
|
||||||
* Write [test cases](http://dokku.viewdocs.io/dokku/development/testing/) for open bug issues
|
* Write [test cases](https://dokku.com/docs/development/testing/) for open bug issues
|
||||||
* Write patches for open bug/feature issues, preferably with test cases
|
* Write patches for open bug/feature issues, preferably with test cases
|
||||||
included
|
included
|
||||||
* Contribute to the [documentation](http://dokku.viewdocs.io/dokku/)
|
* Contribute to the [documentation](https://dokku.com/docs/)
|
||||||
* Come up with new ways, non-commercial to show off our [lovely logo](https://avatars1.githubusercontent.com/u/13455795)
|
* Come up with new ways, non-commercial to show off our [lovely logo](https://avatars1.githubusercontent.com/u/13455795)
|
||||||
* Blog about different ways you are using dokku
|
* Blog about different ways you are using dokku
|
||||||
* Sponsor the Dokku project financially on [OpenCollective](https://opencollective.com/dokku#support) or [Patreon](https://www.patreon.com/dokku)
|
* Sponsor the Dokku project financially on [OpenCollective](https://opencollective.com/dokku#support) or [Patreon](https://www.patreon.com/dokku)
|
||||||
@@ -45,7 +45,7 @@ encounter an issue. We always appreciate a well-written, thorough bug report,
|
|||||||
and will thank you for it!
|
and will thank you for it!
|
||||||
|
|
||||||
Sometimes Dokku is missing a feature you need. In some cases, those features can
|
Sometimes Dokku is missing a feature you need. In some cases, those features can
|
||||||
be found in pre-existing [plugins](http://dokku.viewdocs.io/dokku/plugins/),
|
be found in pre-existing [plugins](https://dokku.com/docs/plugins/),
|
||||||
and we encourage our users to create and contribute such packages. From time to
|
and we encourage our users to create and contribute such packages. From time to
|
||||||
time, we will also pull plugins into the Dokku core when the task they solve is
|
time, we will also pull plugins into the Dokku core when the task they solve is
|
||||||
a common one for our users.
|
a common one for our users.
|
||||||
@@ -129,7 +129,7 @@ requests:
|
|||||||
|
|
||||||
### Running tests locally
|
### Running tests locally
|
||||||
|
|
||||||
Please read the [testing docs](http://dokku.viewdocs.io/dokku/development/testing/),
|
Please read the [testing docs](https://dokku.com/docs/development/testing/),
|
||||||
which contains test setup information as well as tips for running tests.
|
which contains test setup information as well as tips for running tests.
|
||||||
|
|
||||||
# Additional Resources
|
# Additional Resources
|
||||||
|
|||||||
@@ -15,6 +15,9 @@ RUN addgroup --gid $DOKKU_GID dokku \
|
|||||||
|
|
||||||
COPY ./tests/dhparam.pem /tmp/dhparam.pem
|
COPY ./tests/dhparam.pem /tmp/dhparam.pem
|
||||||
COPY ./build/dokku.deb /tmp/dokku.deb
|
COPY ./build/dokku.deb /tmp/dokku.deb
|
||||||
|
|
||||||
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||||
|
# hadolint ignore=DL3005,DL3008
|
||||||
RUN echo "dokku dokku/hostname string $DOKKU_HOSTNAME" | debconf-set-selections \
|
RUN echo "dokku dokku/hostname string $DOKKU_HOSTNAME" | debconf-set-selections \
|
||||||
&& echo "dokku dokku/skip_key_file boolean $DOKKU_SKIP_KEY_FILE" | debconf-set-selections \
|
&& echo "dokku dokku/skip_key_file boolean $DOKKU_SKIP_KEY_FILE" | debconf-set-selections \
|
||||||
&& echo "dokku dokku/vhost_enable boolean $DOKKU_VHOST_ENABLE" | debconf-set-selections \
|
&& echo "dokku dokku/vhost_enable boolean $DOKKU_VHOST_ENABLE" | debconf-set-selections \
|
||||||
|
|||||||
185
HISTORY.md
185
HISTORY.md
@@ -1,5 +1,170 @@
|
|||||||
# History
|
# History
|
||||||
|
|
||||||
|
## 0.23.9
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.23.9/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.23.9 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Refactors
|
||||||
|
|
||||||
|
- #4445: @josegonzalez Bump azure template and formula directly on release
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #4444: @josegonzalez Uuse updated links for documentation
|
||||||
|
- #4439: @RyukerLiu View Doc redirect not working. Change to use direct link
|
||||||
|
|
||||||
|
## 0.23.8
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.23.8/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.23.8 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #4437: @josegonzalez Switch to using GIT_DIR environment variable to fix Centos 7 support
|
||||||
|
- #4436: @josegonzalez Properly handle directory change when cleaning .git directory
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #4428: @josegonzalez Bump azure ARM quickstart template on release
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #4435: @josegonzalez Change page title based on current page
|
||||||
|
- #4427: @josegonzalez Change process management doc references to make more sense
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #4438: @josegonzalez Split out nginx tests further to decrease overall CI runtime
|
||||||
|
- #4430: @dependabot-preview[bot] chore(deps): bump jetty-servlet from 11.0.0 to 11.0.1 in /tests/apps/java
|
||||||
|
|
||||||
|
## 0.23.7
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.23.7/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.23.7 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #4421: @josegonzalez Keep the git directory for worktree-enabled installations
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #4420: @josegonzalez Add ability to specify X-Forwarded-Ssl header for proxied requests
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #4422: @josegonzalez Add warning regarding shallow clone pushes
|
||||||
|
- #4417: @andrewk17 Correct vector sink example command
|
||||||
|
- #4414: @josegonzalez Use correct html for offsite digitalocean link
|
||||||
|
- #4413: @josegonzalez Fix SSL documentation link in troubleshooting docs
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #4423: @josegonzalez Drop unused sigil packaging code
|
||||||
|
- #4418: @josegonzalez Drop unused skip-restart flag for proxy:disable
|
||||||
|
|
||||||
|
## 0.23.6
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.23.6/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.23.6 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #4412: @markuspoerschke Fix generation of crontab
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #4411: @ltalirz Replace nginx:build-config => proxy:build-config
|
||||||
|
|
||||||
|
## 0.23.5
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.23.5/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.23.5 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #4406: @znz Fix typo in error message
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #4404: @josegonzalez Add ability to trigger release via github actions
|
||||||
|
|
||||||
|
### Tests
|
||||||
|
|
||||||
|
- #4403: @josegonzalez Llint files during CI
|
||||||
|
|
||||||
|
## 0.23.4
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.23.4/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.23.4 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #4402: @josegonzalez fix: correctly handle is-deployed check
|
||||||
|
- #4399: @josegonzalez Drop extra log output in cron plugin
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #4400: @solvethex Add tail option
|
||||||
|
|
||||||
|
## 0.23.3
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.23.3/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.23.3 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #4397: @josegonzalez Correctly handle environment variables in deployment tasks for Cloud Native Buildpacks
|
||||||
|
- #4394: @josegonzalez Swap order of arguments on config-get call
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #4395: @josegonzalez Add environment variable support to CNB-based containers
|
||||||
|
|
||||||
|
### Refactors
|
||||||
|
|
||||||
|
- #4393: @josegonzalez Use docker-image-labeler in cnb builder-build trigger
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #4396: @nerg4l Invalid link to Herokuish Buildpack Deployment in Cloud Native Buildpacks
|
||||||
|
|
||||||
|
### Tests
|
||||||
|
|
||||||
|
- #4390: @josegonzalez Run tests faster by not cloning the buildpack each time
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #4389: @dependabot-preview[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 188 to 189 in /tests/apps/php
|
||||||
|
|
||||||
## 0.23.2
|
## 0.23.2
|
||||||
|
|
||||||
Install/update via the bootstrap script:
|
Install/update via the bootstrap script:
|
||||||
@@ -2758,8 +2923,8 @@ This release is a minor bugfix to fix an issue with ssl support for spdy-enabled
|
|||||||
|
|
||||||
The big-six-o. This release is largely comprised of new features that should allow for easier management of dokku. The highlights of this release are:
|
The big-six-o. This release is largely comprised of new features that should allow for easier management of dokku. The highlights of this release are:
|
||||||
|
|
||||||
- The proxy plugin has been enhanced to allow users to map container ports to host ports. In the 0.5.0 release, we changed the semantics of how Dockerfile `EXPOSE` calls work to better follow Docker's lead, which ended up breaking how some applications were deployed to dokku. Please read our documentation surrounding [port management](http://dokku.viewdocs.io/dokku/proxy/) for more details.
|
- The proxy plugin has been enhanced to allow users to map container ports to host ports. In the 0.5.0 release, we changed the semantics of how Dockerfile `EXPOSE` calls work to better follow Docker's lead, which ended up breaking how some applications were deployed to dokku. Please read our documentation surrounding [port management](https://dokku.com/docs/proxy/) for more details.
|
||||||
- Zero-downtime deploys can be disabled on a per-app and per-process basis. This can be used to speed up deploys when there are non-web processes being deployed, or when a user wishes to completely avoid any such waiting period. Please see the [checks documentation](http://dokku.viewdocs.io/dokku/checks-examples/) for further information.
|
- Zero-downtime deploys can be disabled on a per-app and per-process basis. This can be used to speed up deploys when there are non-web processes being deployed, or when a user wishes to completely avoid any such waiting period. Please see the [checks documentation](https://dokku.com/docs/deployment/zero-downtime-deploys/) for further information.
|
||||||
|
|
||||||
Thanks to all the contributors who helped with this release, and a special thanks to @michaelshobbs for ferrying the majority of our new functionality to it's current state!
|
Thanks to all the contributors who helped with this release, and a special thanks to @michaelshobbs for ferrying the majority of our new functionality to it's current state!
|
||||||
|
|
||||||
@@ -2879,7 +3044,7 @@ Thanks to all the contributors who helped with this release!
|
|||||||
|
|
||||||
Release 0.5.5 is mostly a documentation release, further clarifying how our default proxy implementation (nginx) interacts with Dockerfiles. Note that we also updated how ssl certificates interact with application domains, so please check out our domains and ssl documentation.
|
Release 0.5.5 is mostly a documentation release, further clarifying how our default proxy implementation (nginx) interacts with Dockerfiles. Note that we also updated how ssl certificates interact with application domains, so please check out our domains and ssl documentation.
|
||||||
|
|
||||||
We've also added a small section to the [dokku homepage](http://dokku.viewdocs.io/dokku/) that lists the current core team. Feel free to look at their beautiful faces and imagine yourself contributing to Dokku and joining our core team. There are [quite a few ways to contribute](https://github.com/dokku/dokku/blob/master/CONTRIBUTING.md) - even without code/documentation - so feel more than free to jump on the bandwagon!
|
We've also added a small section to the [dokku homepage](https://dokku.com/docs/) that lists the current core team. Feel free to look at their beautiful faces and imagine yourself contributing to Dokku and joining our core team. There are [quite a few ways to contribute](https://github.com/dokku/dokku/blob/master/CONTRIBUTING.md) - even without code/documentation - so feel more than free to jump on the bandwagon!
|
||||||
|
|
||||||
Finally, we've started an [Official Dokku Blog](https://dokku.github.io/), where we will post about dokku internals, roadmaps, potential use-cases, etc. An rss feed is available [here](https://dokku.github.io/feed.xml).
|
Finally, we've started an [Official Dokku Blog](https://dokku.github.io/), where we will post about dokku internals, roadmaps, potential use-cases, etc. An rss feed is available [here](https://dokku.github.io/feed.xml).
|
||||||
|
|
||||||
@@ -2978,9 +3143,9 @@ This is our largest, most feature-packed release in the history of the dokku pro
|
|||||||
|
|
||||||
- Support for docker 1.10/1.11. You *must* have docker 1.9.1+ to install dokku.
|
- Support for docker 1.10/1.11. You *must* have docker 1.9.1+ to install dokku.
|
||||||
- Revamped documentation website
|
- Revamped documentation website
|
||||||
- [Deployment Tasks](http://dokku.viewdocs.io/dokku/deployment/deployment-tasks/)
|
- [Deployment Tasks](https://dokku.com/docs/advanced-usage/deployment-tasks/)
|
||||||
- Heroku-style management of [dockerfile processes](http://dokku.viewdocs.io/dokku/deployment/dockerfiles/#procfiles-and-multiple-processes)
|
- Heroku-style management of [dockerfile processes](https://dokku.com/docs/deployment/methods/dockerfiles/#procfiles-and-multiple-processes)
|
||||||
- Official [persistent storage plugin](http://dokku.viewdocs.io/dokku/dokku-storage/)
|
- Official [persistent storage plugin](https://dokku.com/docs/advanced-usage/persistent-storage/)
|
||||||
|
|
||||||
We'd also love it if you welcomed a few new core developers:
|
We'd also love it if you welcomed a few new core developers:
|
||||||
|
|
||||||
@@ -3474,9 +3639,9 @@ One new feature is colorized logging output, which should make it easier to debu
|
|||||||
|
|
||||||
This is our first minor release in almost a year. Many new features and removals have occurred, so here is a neat summary:
|
This is our first minor release in almost a year. Many new features and removals have occurred, so here is a neat summary:
|
||||||
|
|
||||||
- Plugins are now triggered via `plugn`. Notably, you'll need add a `plugin.toml` to describe the plugin as well as use `plugn trigger` instead of `pluginhook` to trigger plugin callbacks. Please see the [plugin creation documentation](http://dokku.viewdocs.io/dokku/development/plugin-creation/) for more details.
|
- Plugins are now triggered via `plugn`. Notably, you'll need add a `plugin.toml` to describe the plugin as well as use `plugn trigger` instead of `pluginhook` to trigger plugin callbacks. Please see the [plugin creation documentation](https://dokku.com/docs/development/plugin-creation/) for more details.
|
||||||
- A few new official plugins have been added to the core, including [image tagging](http://dokku.viewdocs.io/dokku/application-deployment/), [certificate management](http://dokku.viewdocs.io/dokku/deployment/ssl-configuration/), a tar-based deploy solution, and much more. Check out the *New Features* section for more details.
|
- A few new official plugins have been added to the core, including [image tagging](https://dokku.com/docs/deployment/application-deployment/), [certificate management](https://dokku.com/docs/configuration/ssl/), a tar-based deploy solution, and much more. Check out the *New Features* section for more details.
|
||||||
- We've removed a few deprecated plugin callbacks. Please see the [plugin triggers documentation](http://dokku.viewdocs.io/dokku/development/plugin-triggers/) to see what is available.
|
- We've removed a few deprecated plugin callbacks. Please see the [plugin triggers documentation](https://dokku.com/docs/development/plugin-triggers/) to see what is available.
|
||||||
- [Official datastorage plugins](https://github.com/dokku) have been created for the most commonly used datastores. If you previously used/maintained a community contributed plugin, please check these out. We'll be adding more official plugins as time goes on.
|
- [Official datastorage plugins](https://github.com/dokku) have been created for the most commonly used datastores. If you previously used/maintained a community contributed plugin, please check these out. We'll be adding more official plugins as time goes on.
|
||||||
|
|
||||||
Thanks to the *many* contributors for making this release our best release so far, and special thanks to both @michaelshobbs and @Flink for pushing along the `0.4.0` release!
|
Thanks to the *many* contributors for making this release our best release so far, and special thanks to both @michaelshobbs and @Flink for pushing along the `0.4.0` release!
|
||||||
@@ -3585,7 +3750,7 @@ This release is a bugfix release covering dokku packaging.
|
|||||||
|
|
||||||
## 0.3.23
|
## 0.3.23
|
||||||
|
|
||||||
This release is a bugfix release mostly covering installation and nginx issues. As well, we launched a nicer documentation site [here](http://dokku.viewdocs.io/dokku/). Thanks to all of our contributors for making this a great release!
|
This release is a bugfix release mostly covering installation and nginx issues. As well, we launched a nicer documentation site [here](https://dokku.com/docs/). Thanks to all of our contributors for making this a great release!
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
>
|
>
|
||||||
> If you'd like to sponsor specific functionality, see the project's [Sponsoring](https://github.com/dokku/.github/blob/master/SPONSORING.md) document.
|
> If you'd like to sponsor specific functionality, see the project's [Sponsoring](https://github.com/dokku/.github/blob/master/SPONSORING.md) document.
|
||||||
>
|
>
|
||||||
> If you need help figuring out how to use a specific buildpack, are seeing an issue in during the buildpack process, or are having issues using multiple buildpacks, please see our [slack channels or github discussion board](http://dokku.viewdocs.io/dokku/getting-started/where-to-get-help/#monitored-locations). Issues pertaining to buildpacks may be closed and locked.
|
> If you need help figuring out how to use a specific buildpack, are seeing an issue in during the buildpack process, or are having issues using multiple buildpacks, please see our [slack channels or github discussion board](https://dokku.com/docs/getting-started/where-to-get-help/#monitored-locations). Issues pertaining to buildpacks may be closed and locked.
|
||||||
>
|
>
|
||||||
> If you need support for a version of Dokku that is more than a year old, your issue may be closed without an answer. Please upgrade to a recent version.
|
> If you need support for a version of Dokku that is more than a year old, your issue may be closed without an answer. Please upgrade to a recent version.
|
||||||
|
|
||||||
|
|||||||
2
Makefile
2
Makefile
@@ -1,7 +1,7 @@
|
|||||||
DOKKU_VERSION ?= master
|
DOKKU_VERSION ?= master
|
||||||
|
|
||||||
DOCKER_IMAGE_LABELER_VERSION ?= 0.2.2
|
DOCKER_IMAGE_LABELER_VERSION ?= 0.2.2
|
||||||
HEROKUISH_VERSION ?= 0.5.19
|
HEROKUISH_VERSION ?= 0.5.25
|
||||||
PLUGN_VERSION ?= 0.6.1
|
PLUGN_VERSION ?= 0.6.1
|
||||||
PROCFILE_VERSION ?= 0.11.0
|
PROCFILE_VERSION ?= 0.11.0
|
||||||
SIGIL_VERSION ?= 0.6.0
|
SIGIL_VERSION ?= 0.6.0
|
||||||
|
|||||||
18
README.md
18
README.md
@@ -1,10 +1,11 @@
|
|||||||
# Dokku
|
# Dokku
|
||||||
|
|
||||||
[](https://github.com/dokku/dokku/actions?query=workflow%3ACI)
|
[](https://github.com/dokku/dokku/actions?query=workflow%3ACI)
|
||||||
[](https://packagecloud.io/dokku/dokku)
|
[](https://packagecloud.io/dokku/dokku)
|
||||||
[](https://aur.archlinux.org/packages/dokku/)
|
[](https://aur.archlinux.org/packages/dokku/)
|
||||||
[](https://webchat.freenode.net/?channels=dokku)
|
[](https://webchat.freenode.net/?channels=dokku)
|
||||||
[](https://glider-slackin.herokuapp.com/)
|
[](https://glider-slackin.herokuapp.com/)
|
||||||
[](http://dokku.viewdocs.io/dokku/)
|
[](https://dokku.com/docs/)
|
||||||
[](#sponsors)
|
[](#sponsors)
|
||||||
[](#backers)
|
[](#backers)
|
||||||
[](https://www.patreon.com/dokku/)
|
[](https://www.patreon.com/dokku/)
|
||||||
@@ -46,7 +47,6 @@ Become a sponsor and get your logo on our README on Github with a link to your s
|
|||||||
<a href="https://opencollective.com/dokku/sponsor/28/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/28/avatar.svg"></a>
|
<a href="https://opencollective.com/dokku/sponsor/28/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/28/avatar.svg"></a>
|
||||||
<a href="https://opencollective.com/dokku/sponsor/29/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/29/avatar.svg"></a>
|
<a href="https://opencollective.com/dokku/sponsor/29/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/29/avatar.svg"></a>
|
||||||
|
|
||||||
|
|
||||||
## Backers
|
## Backers
|
||||||
|
|
||||||
Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/dokku#backer)]
|
Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/dokku#backer)]
|
||||||
@@ -99,29 +99,29 @@ 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`:
|
To install the latest stable release, run the following commands as a user who has access to `sudo`:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
wget https://raw.githubusercontent.com/dokku/dokku/v0.23.2/bootstrap.sh
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.23.9/bootstrap.sh
|
||||||
sudo DOKKU_TAG=v0.23.2 bash bootstrap.sh
|
sudo DOKKU_TAG=v0.23.9 bash bootstrap.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
You can then proceed to the ip address or domain name associated with your server to complete the web-based installation.
|
You can then proceed to the ip address or domain name associated with your server to complete the web-based installation.
|
||||||
|
|
||||||
If you wish for a more unattended installation method, see [these](http://dokku.viewdocs.io/dokku/getting-started/install/debian/#unattended-installation) docs.
|
If you wish for a more unattended installation method, see [these](https://dokku.com/docs/getting-started/install/debian/#unattended-installation) docs.
|
||||||
|
|
||||||
### Upgrade
|
### Upgrade
|
||||||
|
|
||||||
[View the docs](http://dokku.viewdocs.io/dokku/getting-started/upgrading/) for upgrading from an older version of Dokku.
|
[View the docs](https://dokku.com/docs/getting-started/upgrading/) for upgrading from an older version of Dokku.
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
Full documentation - including advanced installation docs - are available online at [http://dokku.viewdocs.io/dokku/](http://dokku.viewdocs.io/dokku/).
|
Full documentation - including advanced installation docs - are available online at [https://dokku.com/docs/](https://dokku.com/docs/).
|
||||||
|
|
||||||
## Support
|
## Support
|
||||||
|
|
||||||
You can use [Github Issues](https://github.com/dokku/dokku/issues), check [Troubleshooting](http://dokku.viewdocs.io/dokku/getting-started/troubleshooting/) in the documentation, or join us on [freenode in #dokku](https://webchat.freenode.net/?channels=%23dokku).
|
You can use [Github Issues](https://github.com/dokku/dokku/issues), check [Troubleshooting](https://dokku.com/docs/getting-started/troubleshooting/) in the documentation, or join us on [freenode in #dokku](https://webchat.freenode.net/?channels=%23dokku).
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
|
|
||||||
After checking [Github Issues](https://github.com/dokku/dokku/issues), the [Troubleshooting Guide](http://dokku.viewdocs.io/dokku/getting-started/troubleshooting/) or having a chat with us on [freenode in #dokku](https://webchat.freenode.net/?channels=%23dokku), feel free to fork and create a Pull Request.
|
After checking [Github Issues](https://github.com/dokku/dokku/issues), the [Troubleshooting Guide](https://dokku.com/docs/getting-started/troubleshooting/) or having a chat with us on [freenode in #dokku](https://webchat.freenode.net/?channels=%23dokku), feel free to fork and create a Pull Request.
|
||||||
|
|
||||||
While we may not merge your PR as is, they serve to start conversations and improve the general Dokku experience for all users.
|
While we may not merge your PR as is, they serve to start conversations and improve the general Dokku experience for all users.
|
||||||
|
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ ensure-environment() {
|
|||||||
FREE_MEMORY=$(grep MemTotal /proc/meminfo | awk '{print $2}')
|
FREE_MEMORY=$(grep MemTotal /proc/meminfo | awk '{print $2}')
|
||||||
if [[ "$FREE_MEMORY" -lt 1003600 ]]; then
|
if [[ "$FREE_MEMORY" -lt 1003600 ]]; then
|
||||||
echo "For dokku to build containers, it is strongly suggested that you have 1024 megabytes or more of free memory"
|
echo "For dokku to build containers, it is strongly suggested that you have 1024 megabytes or more of free memory"
|
||||||
echo "If necessary, please consult this document to setup swap: http://dokku.viewdocs.io/dokku/getting-started/advanced-installation/#vms-with-less-than-1-gb-of-memory"
|
echo "If necessary, please consult this document to setup swap: https://dokku.com/docs/getting-started/advanced-installation/#vms-with-less-than-1-gb-of-memory"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@ install-dokku-from-source() {
|
|||||||
local DOKKU_CHECKOUT="$1"
|
local DOKKU_CHECKOUT="$1"
|
||||||
|
|
||||||
if ! command -v apt-get &>/dev/null; then
|
if ! command -v apt-get &>/dev/null; then
|
||||||
log-fail "This installation script requires apt-get. For manual installation instructions, consult http://dokku.viewdocs.io/dokku/advanced-installation/"
|
log-fail "This installation script requires apt-get. For manual installation instructions, consult https://dokku.com/docs/getting-started/advanced-installation/"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
apt-get -qq -y --no-install-recommends install sudo git make software-properties-common
|
apt-get -qq -y --no-install-recommends install sudo git make software-properties-common
|
||||||
@@ -125,7 +125,7 @@ install-dokku-from-package() {
|
|||||||
install-dokku-from-rpm-package "$@"
|
install-dokku-from-rpm-package "$@"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
log-fail "Unsupported Linux distribution. For manual installation instructions, consult http://dokku.viewdocs.io/dokku/advanced-installation/"
|
log-fail "Unsupported Linux distribution. For manual installation instructions, consult https://dokku.com/docs/getting-started/advanced-installation/"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ RUN PLUGIN_MAKE_TARGET=${PLUGIN_MAKE_TARGET} \
|
|||||||
IS_RELEASE=${IS_RELEASE} \
|
IS_RELEASE=${IS_RELEASE} \
|
||||||
SKIP_GO_CLEAN=true \
|
SKIP_GO_CLEAN=true \
|
||||||
make version copyfiles \
|
make version copyfiles \
|
||||||
&& make deb-dokku deb-sigil \
|
&& make deb-dokku rpm-dokku
|
||||||
rpm-dokku rpm-sigil
|
|
||||||
|
|
||||||
RUN ls -lha /tmp/
|
RUN ls -lha /tmp/
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import subprocess
|
|||||||
import sys
|
import sys
|
||||||
import threading
|
import threading
|
||||||
|
|
||||||
VERSION = 'v0.23.2'
|
VERSION = 'v0.23.9'
|
||||||
|
|
||||||
def bytes_to_string(b):
|
def bytes_to_string(b):
|
||||||
if type(b) == bytes:
|
if type(b) == bytes:
|
||||||
@@ -341,7 +341,7 @@ PAGE = """
|
|||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="key">Public SSH Keys</label><br />
|
<label for="key">Public SSH Keys</label><br />
|
||||||
<textarea class="form-control" name="keys" rows="5" id="key" placeholder="Begins with 'ssh-rsa', 'ssh-dss', 'ssh-ed25519', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', or 'ecdsa-sha2-nistp521'">{ADMIN_KEYS}</textarea>
|
<textarea class="form-control" name="keys" rows="5" id="key" placeholder="Begins with 'ssh-rsa', 'ssh-dss', 'ssh-ed25519', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', or 'ecdsa-sha2-nistp521'">{ADMIN_KEYS}</textarea>
|
||||||
<small class="form-text text-muted">Public keys allow users to ssh onto the server as the <code>dokku</code> user, as well as remotely execute Dokku commands. They are currently auto-populated from: <code>{AUTHORIZED_KEYS_LOCATION}</code>, and can be changed later via the <a href="http://dokku.viewdocs.io/dokku/deployment/user-management/" target="_blank"><code>dokku ssh-keys</code></a> plugin.</small>
|
<small class="form-text text-muted">Public keys allow users to ssh onto the server as the <code>dokku</code> user, as well as remotely execute Dokku commands. They are currently auto-populated from: <code>{AUTHORIZED_KEYS_LOCATION}</code>, and can be changed later via the <a href="https://dokku.com/docs/deployment/user-management/" target="_blank"><code>dokku ssh-keys</code></a> plugin.</small>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -352,7 +352,7 @@ PAGE = """
|
|||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="hostname">Hostname</label>
|
<label for="hostname">Hostname</label>
|
||||||
<input class="form-control" type="text" id="hostname" name="hostname" value="{HOSTNAME}" placeholder="A hostname or ip address such as {HOSTNAME}" />
|
<input class="form-control" type="text" id="hostname" name="hostname" value="{HOSTNAME}" placeholder="A hostname or ip address such as {HOSTNAME}" />
|
||||||
<small class="form-text text-muted">This will be used as the default host for all applications, and can be changed later via the <a href="http://dokku.viewdocs.io/dokku/configuration/domains/" target="_blank"><code>dokku domains:set-global</code></a> command.</small>
|
<small class="form-text text-muted">This will be used as the default host for all applications, and can be changed later via the <a href="https://dokku.com/docs/configuration/domains/" target="_blank"><code>dokku domains:set-global</code></a> command.</small>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input class="form-check-input" type="checkbox" id="vhost" name="vhost" value="true">
|
<input class="form-check-input" type="checkbox" id="vhost" name="vhost" value="true">
|
||||||
@@ -406,7 +406,7 @@ PAGE = """
|
|||||||
result.classList.add("text-success");
|
result.classList.add("text-success");
|
||||||
result.textContent = "Success! Redirecting in 3 seconds. .."
|
result.textContent = "Success! Redirecting in 3 seconds. .."
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
window.location.href = "http://dokku.viewdocs.io/dokku~{VERSION}/deployment/application-deployment/";
|
window.location.href = "https://dokku.com/docs~{VERSION}/deployment/application-deployment/";
|
||||||
}, 3000);
|
}, 3000);
|
||||||
})
|
})
|
||||||
.catch(function (error) {
|
.catch(function (error) {
|
||||||
|
|||||||
@@ -376,6 +376,8 @@ main() {
|
|||||||
NEXT_VERSION="$(fn-version-next "$CURRENT_VERSION" "$RELEASE")"
|
NEXT_VERSION="$(fn-version-next "$CURRENT_VERSION" "$RELEASE")"
|
||||||
IS_RELEASE="$(fn-is-release "$RELEASE")"
|
IS_RELEASE="$(fn-is-release "$RELEASE")"
|
||||||
|
|
||||||
|
echo "v${NEXT_VERSION}" >build/next-version
|
||||||
|
|
||||||
fn-repo-update "$IS_RELEASE" "$CURRENT_VERSION" "$NEXT_VERSION"
|
fn-repo-update "$IS_RELEASE" "$CURRENT_VERSION" "$NEXT_VERSION"
|
||||||
fn-build-dokku "$IS_RELEASE" "$NEXT_VERSION" || log-fail "Error building package"
|
fn-build-dokku "$IS_RELEASE" "$NEXT_VERSION" || log-fail "Error building package"
|
||||||
fn-extract-package "$IS_RELEASE" "dokku_${NEXT_VERSION}_amd64.deb" || log-fail "Error extracting deb package"
|
fn-extract-package "$IS_RELEASE" "dokku_${NEXT_VERSION}_amd64.deb" || log-fail "Error extracting deb package"
|
||||||
|
|||||||
41
deb.mk
41
deb.mk
@@ -10,26 +10,12 @@ DOKKU_UPDATE_VERSION ?= 0.2.0
|
|||||||
DOKKU_UPDATE_ARCHITECTURE = amd64
|
DOKKU_UPDATE_ARCHITECTURE = amd64
|
||||||
DOKKU_UPDATE_PACKAGE_NAME = dokku-update_$(DOKKU_UPDATE_VERSION)_$(DOKKU_UPDATE_ARCHITECTURE).deb
|
DOKKU_UPDATE_PACKAGE_NAME = dokku-update_$(DOKKU_UPDATE_VERSION)_$(DOKKU_UPDATE_ARCHITECTURE).deb
|
||||||
|
|
||||||
define SIGIL_DESCRIPTION
|
|
||||||
Standalone string interpolator and template processor
|
|
||||||
Sigil is a command line tool for template processing
|
|
||||||
and POSIX-compliant variable expansion. It was created
|
|
||||||
for configuration templating, but can be used for any
|
|
||||||
text processing.
|
|
||||||
endef
|
|
||||||
SIGIL_REPO_NAME ?= gliderlabs/sigil
|
|
||||||
SIGIL_VERSION ?= 0.4.0
|
|
||||||
SIGIL_ARCHITECTURE = amd64
|
|
||||||
SIGIL_PACKAGE_NAME = gliderlabs_sigil_$(SIGIL_VERSION)_$(SIGIL_ARCHITECTURE).deb
|
|
||||||
SIGIL_URL = https://github.com/gliderlabs/sigil/releases/download/v$(SIGIL_VERSION)/sigil_$(SIGIL_VERSION)_Linux_x86_64.tgz
|
|
||||||
|
|
||||||
ifndef IS_RELEASE
|
ifndef IS_RELEASE
|
||||||
IS_RELEASE = true
|
IS_RELEASE = true
|
||||||
endif
|
endif
|
||||||
|
|
||||||
export SIGIL_DESCRIPTION
|
|
||||||
|
|
||||||
.PHONY: install-from-deb deb-all deb-dokku deb-dokku-update deb-setup deb-sigil
|
.PHONY: install-from-deb deb-all deb-dokku deb-dokku-update deb-setup
|
||||||
|
|
||||||
install-from-deb:
|
install-from-deb:
|
||||||
@echo "--> Initial apt-get update"
|
@echo "--> Initial apt-get update"
|
||||||
@@ -45,7 +31,7 @@ install-from-deb:
|
|||||||
sudo apt-get update -qq >/dev/null
|
sudo apt-get update -qq >/dev/null
|
||||||
sudo DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true apt-get -qq -y --no-install-recommends install dokku
|
sudo DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true apt-get -qq -y --no-install-recommends install dokku
|
||||||
|
|
||||||
deb-all: deb-setup deb-dokku deb-sigil deb-dokku-update
|
deb-all: deb-setup deb-dokku deb-dokku-update
|
||||||
mv $(BUILD_DIRECTORY)/*.deb .
|
mv $(BUILD_DIRECTORY)/*.deb .
|
||||||
@echo "Done"
|
@echo "Done"
|
||||||
|
|
||||||
@@ -84,26 +70,3 @@ deb-dokku-update:
|
|||||||
--license 'MIT License' \
|
--license 'MIT License' \
|
||||||
contrib/dokku-update=/usr/local/bin/dokku-update \
|
contrib/dokku-update=/usr/local/bin/dokku-update \
|
||||||
contrib/dokku-update-version=/var/lib/dokku-update/VERSION
|
contrib/dokku-update-version=/var/lib/dokku-update/VERSION
|
||||||
|
|
||||||
deb-sigil:
|
|
||||||
rm -rf /tmp/tmp /tmp/build $(SIGIL_PACKAGE_NAME)
|
|
||||||
mkdir -p /tmp/tmp /tmp/build /tmp/build/usr/bin
|
|
||||||
|
|
||||||
@echo "-> Downloading package"
|
|
||||||
wget -q -O /tmp/tmp/sigil-$(SIGIL_VERSION).tgz $(SIGIL_URL)
|
|
||||||
cd /tmp/tmp/ && tar zxf /tmp/tmp/sigil-$(SIGIL_VERSION).tgz
|
|
||||||
|
|
||||||
@echo "-> Copying files into place"
|
|
||||||
cp /tmp/tmp/sigil /tmp/build/usr/bin/sigil && chmod +x /tmp/build/usr/bin/sigil
|
|
||||||
|
|
||||||
@echo "-> Creating $(SIGIL_PACKAGE_NAME)"
|
|
||||||
sudo fpm -t deb -s dir -C /tmp/build -n gliderlabs-sigil \
|
|
||||||
--version $(SIGIL_VERSION) \
|
|
||||||
--architecture $(SIGIL_ARCHITECTURE) \
|
|
||||||
--package $(BUILD_DIRECTORY)/$(SIGIL_PACKAGE_NAME) \
|
|
||||||
--url "https://github.com/$(SIGIL_REPO_NAME)" \
|
|
||||||
--maintainer "Jose Diaz-Gonzalez <dokku@josediazgonzalez.com>" \
|
|
||||||
--category utils \
|
|
||||||
--description "$$SIGIL_DESCRIPTION" \
|
|
||||||
--license 'MIT License' \
|
|
||||||
.
|
|
||||||
|
|||||||
2
debian/control
vendored
2
debian/control
vendored
@@ -1,5 +1,5 @@
|
|||||||
Package: dokku
|
Package: dokku
|
||||||
Version: 0.23.2
|
Version: 0.23.9
|
||||||
Section: web
|
Section: web
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Architecture: amd64
|
Architecture: amd64
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ To extract the backup onto another server, copy the backup to the server and ext
|
|||||||
sudo tar -xzvf path/to/dokku/backup.tar.gz -C /
|
sudo tar -xzvf path/to/dokku/backup.tar.gz -C /
|
||||||
```
|
```
|
||||||
|
|
||||||
At this point, all datastores should be individually started and checked for data integrity. Once this is complete, individual applications can be rebuilt. Please consult the [process management documentation](/docs/deployment/process-management.md#rebuilding-apps) for more information on how to rebuild applications.
|
At this point, all datastores should be individually started and checked for data integrity. Once this is complete, individual applications can be rebuilt. Please consult the [process management documentation](/docs/processes/process-management.md#rebuilding-apps) for more information on how to rebuild applications.
|
||||||
|
|
||||||
## Caveats
|
## Caveats
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ More information on supported Docker options can be found here: https://docs.doc
|
|||||||
|
|
||||||
### Add Docker options
|
### Add Docker options
|
||||||
|
|
||||||
Add some options for the deployed/running app and when executing [`dokku run`](/docs/deployment/one-off-processes.md):
|
Add some options for the deployed/running app and when executing [`dokku run`](/docs/processes/one-off-tasks.md):
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
# Mount a host volume in a Docker container: "-v /host/path:/container/path"
|
# Mount a host volume in a Docker container: "-v /host/path:/container/path"
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ dokku storage:mount node-js-app /var/lib/dokku/data/storage/node-js-app:/storage
|
|||||||
Dokku will then mount the shared contents of `/var/lib/dokku/data/storage/node-js-app` to `/storage` inside the container.
|
Dokku will then mount the shared contents of `/var/lib/dokku/data/storage/node-js-app` to `/storage` inside the container.
|
||||||
|
|
||||||
Once you have mounted persistent storage, you will also need to restart the application. See the
|
Once you have mounted persistent storage, you will also need to restart the application. See the
|
||||||
[process scaling documentation](/docs/deployment/process-management.md) for more information.
|
[process scaling documentation](/docs/processes/process-management.md) for more information.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
dokku ps:restart app-name
|
dokku ps:restart app-name
|
||||||
|
|||||||
@@ -35,35 +35,35 @@ dokku plugin:list
|
|||||||
|
|
||||||
```
|
```
|
||||||
plugn: dev
|
plugn: dev
|
||||||
00_dokku-standard 0.23.2 enabled dokku core standard plugin
|
00_dokku-standard 0.23.9 enabled dokku core standard plugin
|
||||||
20_events 0.23.2 enabled dokku core events logging plugin
|
20_events 0.23.9 enabled dokku core events logging plugin
|
||||||
app-json 0.23.2 enabled dokku core app-json plugin
|
app-json 0.23.9 enabled dokku core app-json plugin
|
||||||
apps 0.23.2 enabled dokku core apps plugin
|
apps 0.23.9 enabled dokku core apps plugin
|
||||||
build-env 0.23.2 enabled dokku core build-env plugin
|
build-env 0.23.9 enabled dokku core build-env plugin
|
||||||
buildpacks 0.23.2 enabled dokku core buildpacks plugin
|
buildpacks 0.23.9 enabled dokku core buildpacks plugin
|
||||||
certs 0.23.2 enabled dokku core certificate management plugin
|
certs 0.23.9 enabled dokku core certificate management plugin
|
||||||
checks 0.23.2 enabled dokku core checks plugin
|
checks 0.23.9 enabled dokku core checks plugin
|
||||||
common 0.23.2 enabled dokku core common plugin
|
common 0.23.9 enabled dokku core common plugin
|
||||||
config 0.23.2 enabled dokku core config plugin
|
config 0.23.9 enabled dokku core config plugin
|
||||||
docker-options 0.23.2 enabled dokku core docker-options plugin
|
docker-options 0.23.9 enabled dokku core docker-options plugin
|
||||||
domains 0.23.2 enabled dokku core domains plugin
|
domains 0.23.9 enabled dokku core domains plugin
|
||||||
enter 0.23.2 enabled dokku core enter plugin
|
enter 0.23.9 enabled dokku core enter plugin
|
||||||
git 0.23.2 enabled dokku core git plugin
|
git 0.23.9 enabled dokku core git plugin
|
||||||
logs 0.23.2 enabled dokku core logs plugin
|
logs 0.23.9 enabled dokku core logs plugin
|
||||||
network 0.23.2 enabled dokku core network plugin
|
network 0.23.9 enabled dokku core network plugin
|
||||||
nginx-vhosts 0.23.2 enabled dokku core nginx-vhosts plugin
|
nginx-vhosts 0.23.9 enabled dokku core nginx-vhosts plugin
|
||||||
plugin 0.23.2 enabled dokku core plugin plugin
|
plugin 0.23.9 enabled dokku core plugin plugin
|
||||||
proxy 0.23.2 enabled dokku core proxy plugin
|
proxy 0.23.9 enabled dokku core proxy plugin
|
||||||
ps 0.23.2 enabled dokku core ps plugin
|
ps 0.23.9 enabled dokku core ps plugin
|
||||||
repo 0.23.2 enabled dokku core repo plugin
|
repo 0.23.9 enabled dokku core repo plugin
|
||||||
resource 0.23.2 enabled dokku core resource plugin
|
resource 0.23.9 enabled dokku core resource plugin
|
||||||
scheduler-docker-local 0.23.2 enabled dokku core scheduler-docker-local plugin
|
scheduler-docker-local 0.23.9 enabled dokku core scheduler-docker-local plugin
|
||||||
shell 0.23.2 enabled dokku core shell plugin
|
shell 0.23.9 enabled dokku core shell plugin
|
||||||
ssh-keys 0.23.2 enabled dokku core ssh-keys plugin
|
ssh-keys 0.23.9 enabled dokku core ssh-keys plugin
|
||||||
storage 0.23.2 enabled dokku core storage plugin
|
storage 0.23.9 enabled dokku core storage plugin
|
||||||
tags 0.23.2 enabled dokku core tags plugin
|
tags 0.23.9 enabled dokku core tags plugin
|
||||||
tar 0.23.2 enabled dokku core tar plugin
|
tar 0.23.9 enabled dokku core tar plugin
|
||||||
trace 0.23.2 enabled dokku core trace plugin
|
trace 0.23.9 enabled dokku core trace plugin
|
||||||
```
|
```
|
||||||
|
|
||||||
> Warning: All plugin commands other than `plugin:list` and `plugin:help` require sudo access and must be run directly from the Dokku server.
|
> Warning: All plugin commands other than `plugin:list` and `plugin:help` require sudo access and must be run directly from the Dokku server.
|
||||||
|
|||||||
@@ -22,4 +22,4 @@
|
|||||||
|
|
||||||
- Dockerfiles with `EXPOSE` clauses will get [all **tcp** ports proxied by default](/docs/deployment/methods/dockerfiles.md#exposed-ports)
|
- Dockerfiles with `EXPOSE` clauses will get [all **tcp** ports proxied by default](/docs/deployment/methods/dockerfiles.md#exposed-ports)
|
||||||
- Note that nginx will proxy the same port numbers to listen publicly
|
- Note that nginx will proxy the same port numbers to listen publicly
|
||||||
- UDP ports can be exposed by disabling the [nginx proxy](/docs/advanced-usage/proxy-management.md) with `dokku proxy:disable node-js-app`
|
- UDP ports can be exposed by disabling the [nginx proxy](/docs/networking/proxy-management.md) with `dokku proxy:disable node-js-app`
|
||||||
|
|||||||
@@ -12,11 +12,11 @@
|
|||||||
## Proxy port mapping
|
## Proxy port mapping
|
||||||
|
|
||||||
- You can now configure host -> container proxy port mappings
|
- You can now configure host -> container proxy port mappings
|
||||||
- The UI is handled by the [proxy](/docs/advanced-usage/proxy-management.md) interface plugin by setting the `DOKKU_PROXY_PORT_MAP` config variable in the format of `scheme:host-port:container-port`. The default `nginx-vhosts` proxy plugin supports both the `http` and `https` schemes.
|
- The UI is handled by the [proxy](/docs/networking/proxy-management.md) interface plugin by setting the `DOKKU_PROXY_PORT_MAP` config variable in the format of `scheme:host-port:container-port`. The default `nginx-vhosts` proxy plugin supports both the `http` and `https` schemes.
|
||||||
- Default port mappings
|
- Default port mappings
|
||||||
- buildpack apps will be set to `http:80:5000` and will also include `https:443:5000` if SSL is enabled.
|
- buildpack apps will be set to `http:80:5000` and will also include `https:443:5000` if SSL is enabled.
|
||||||
- dockerfile apps with explicitly exposed ports (i.e. using the `EXPOSE` directive) will be configured with a listener on each exposed port that proxies to the same port of the deployed application container.
|
- dockerfile apps with explicitly exposed ports (i.e. using the `EXPOSE` directive) will be configured with a listener on each exposed port that proxies to the same port of the deployed application container.
|
||||||
- You may override this behavior with the [`proxy:ports-*` commands](/docs/advanced-usage/proxy-management.md) or by directly setting `DOKKU_PROXY_PORT_MAP` with the `config:set` command
|
- You may override this behavior with the [`proxy:ports-*` commands](/docs/networking/proxy-management.md) or by directly setting `DOKKU_PROXY_PORT_MAP` with the `config:set` command
|
||||||
- dockerfile apps without explicitly exposed ports will behave the same as a buildpack app
|
- dockerfile apps without explicitly exposed ports will behave the same as a buildpack app
|
||||||
- NOTE: These defaults **are not** automatically changed on subsequent pushes and must be manipulated with the aforementioned commands
|
- NOTE: These defaults **are not** automatically changed on subsequent pushes and must be manipulated with the aforementioned commands
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ We should now properly handle file ownership for mounted directories. This was e
|
|||||||
|
|
||||||
## Restart Policies
|
## Restart Policies
|
||||||
|
|
||||||
If you previously managed container restart policies via docker-options, these can now be managed natively via the built-in `ps` plugin. There is no migration necessary. See the [restart policy documentation](/docs/deployment/process-management.md#restart-policies) for more details.
|
If you previously managed container restart policies via docker-options, these can now be managed natively via the built-in `ps` plugin. There is no migration necessary. See the [restart policy documentation](/docs/processes/process-management.md#restart-policies) for more details.
|
||||||
|
|
||||||
## SSH Keys
|
## SSH Keys
|
||||||
|
|
||||||
|
|||||||
@@ -2,10 +2,10 @@
|
|||||||
<browserconfig>
|
<browserconfig>
|
||||||
<msapplication>
|
<msapplication>
|
||||||
<tile>
|
<tile>
|
||||||
<square70x70logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/mstile-70x70.png"/>
|
<square70x70logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/mstile-70x70.png"/>
|
||||||
<square150x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/mstile-150x150.png"/>
|
<square150x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/mstile-150x150.png"/>
|
||||||
<square310x310logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/mstile-310x310.png"/>
|
<square310x310logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/mstile-310x310.png"/>
|
||||||
<wide310x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/mstile-310x150.png"/>
|
<wide310x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/mstile-310x150.png"/>
|
||||||
<TileColor>#da532c</TileColor>
|
<TileColor>#da532c</TileColor>
|
||||||
</tile>
|
</tile>
|
||||||
</msapplication>
|
</msapplication>
|
||||||
|
|||||||
@@ -2,37 +2,37 @@
|
|||||||
"name": "Dokku",
|
"name": "Dokku",
|
||||||
"icons": [
|
"icons": [
|
||||||
{
|
{
|
||||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.23.2\/docs\/assets\/favicons\/android-chrome-36x36.png",
|
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.23.9\/docs\/assets\/favicons\/android-chrome-36x36.png",
|
||||||
"sizes": "36x36",
|
"sizes": "36x36",
|
||||||
"type": "image\/png",
|
"type": "image\/png",
|
||||||
"density": "0.75"
|
"density": "0.75"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.23.2\/docs\/assets\/favicons\/android-chrome-48x48.png",
|
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.23.9\/docs\/assets\/favicons\/android-chrome-48x48.png",
|
||||||
"sizes": "48x48",
|
"sizes": "48x48",
|
||||||
"type": "image\/png",
|
"type": "image\/png",
|
||||||
"density": "1.0"
|
"density": "1.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.23.2\/docs\/assets\/favicons\/android-chrome-72x72.png",
|
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.23.9\/docs\/assets\/favicons\/android-chrome-72x72.png",
|
||||||
"sizes": "72x72",
|
"sizes": "72x72",
|
||||||
"type": "image\/png",
|
"type": "image\/png",
|
||||||
"density": "1.5"
|
"density": "1.5"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.23.2\/docs\/assets\/favicons\/android-chrome-96x96.png",
|
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.23.9\/docs\/assets\/favicons\/android-chrome-96x96.png",
|
||||||
"sizes": "96x96",
|
"sizes": "96x96",
|
||||||
"type": "image\/png",
|
"type": "image\/png",
|
||||||
"density": "2.0"
|
"density": "2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.23.2\/docs\/assets\/favicons\/android-chrome-144x144.png",
|
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.23.9\/docs\/assets\/favicons\/android-chrome-144x144.png",
|
||||||
"sizes": "144x144",
|
"sizes": "144x144",
|
||||||
"type": "image\/png",
|
"type": "image\/png",
|
||||||
"density": "3.0"
|
"density": "3.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.23.2\/docs\/assets\/favicons\/android-chrome-192x192.png",
|
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.23.9\/docs\/assets\/favicons\/android-chrome-192x192.png",
|
||||||
"sizes": "192x192",
|
"sizes": "192x192",
|
||||||
"type": "image\/png",
|
"type": "image\/png",
|
||||||
"density": "4.0"
|
"density": "4.0"
|
||||||
|
|||||||
@@ -39,13 +39,13 @@ h1 {
|
|||||||
font-size: 1.6em;
|
font-size: 1.6em;
|
||||||
}
|
}
|
||||||
.header .navbar-brand a {
|
.header .navbar-brand a {
|
||||||
background-image: url(https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/dokku.png);
|
background-image: url(https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/dokku.png);
|
||||||
text-indent: 40px;
|
text-indent: 40px;
|
||||||
}
|
}
|
||||||
.blurb {
|
.blurb {
|
||||||
color: #424242;
|
color: #424242;
|
||||||
background-color: #ededed;
|
background-color: #ededed;
|
||||||
background-image: url(https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/gplaypattern.png);
|
background-image: url(https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/gplaypattern.png);
|
||||||
padding: 45px 0;
|
padding: 45px 0;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,6 @@
|
|||||||
"0.20.4",
|
"0.20.4",
|
||||||
"0.21.4",
|
"0.21.4",
|
||||||
"0.22.9",
|
"0.22.9",
|
||||||
"0.23.2"
|
"0.23.9"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ The following config variables have special meanings and can be set in a variety
|
|||||||
| `DOKKU_EVENTS_LOGFILE` | `$DOKKU_LOGS_DIR/events.log` | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | Where the events log file is written to. |
|
| `DOKKU_EVENTS_LOGFILE` | `$DOKKU_LOGS_DIR/events.log` | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | Where the events log file is written to. |
|
||||||
| `DOKKU_APP_NAME` | none | `--app APP` flag | Name of application to work on. Respected by core plugins. |
|
| `DOKKU_APP_NAME` | none | `--app APP` flag | Name of application to work on. Respected by core plugins. |
|
||||||
| `DOKKU_APPS_FORCE_DELETE` | none | `--force` flag | Whether to force delete an application. Also used by other plugins for destructive actions. |
|
| `DOKKU_APPS_FORCE_DELETE` | none | `--force` flag | Whether to force delete an application. Also used by other plugins for destructive actions. |
|
||||||
| `DOKKU_CHECKS_URL` | `http://dokku.viewdocs.io/dokku/deployment/zero-downtime-deploys/` | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | Url displayed during deployment when no CHECKS file exists. |
|
| `DOKKU_CHECKS_URL` | `https://dokku.com/docs/deployment/zero-downtime-deploys/` | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | Url displayed during deployment when no CHECKS file exists. |
|
||||||
| `DOKKU_DETACH_CONTAINER` | none | `--detach` flag | Whether to detach a container started via `dokku run`. |
|
| `DOKKU_DETACH_CONTAINER` | none | `--detach` flag | Whether to detach a container started via `dokku run`. |
|
||||||
| `DOKKU_QUIET_OUTPUT` | none | `--quiet` flag | Silences certain header output for `dokku` commands. |
|
| `DOKKU_QUIET_OUTPUT` | none | `--quiet` flag | Silences certain header output for `dokku` commands. |
|
||||||
| `DOKKU_RM_CONTAINER` | none | `dokku config:set` <br /> `--rm-container` flag <br /> `--rm` flag | Whether to keep `dokku run` containers around or not. |
|
| `DOKKU_RM_CONTAINER` | none | `dokku config:set` <br /> `--rm-container` flag <br /> `--rm` flag | Whether to keep `dokku run` containers around or not. |
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ Beware that if you enable the header and a subsequent deploy of your application
|
|||||||
|
|
||||||
#### Globally disabling the HSTS Header
|
#### Globally disabling the HSTS Header
|
||||||
|
|
||||||
HSTS Header can be disabled for all apps by setting the `hsts` property to false after passing the `--global` flag to `nginx:set`. Changing this value globally or on a per-app basis will require rebuilding the nginx config via the `nginx:build-config` command.
|
HSTS Header can be disabled for all apps by setting the `hsts` property to false after passing the `--global` flag to `nginx:set`. Changing this value globally or on a per-app basis will require rebuilding the nginx config via the `proxy:build-config` command.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
dokku nginx:set --global hsts false
|
dokku nginx:set --global hsts false
|
||||||
@@ -372,12 +372,12 @@ See the [ssl documentation](/docs/configuration/ssl.md) for more information on
|
|||||||
|
|
||||||
### Disabling Nginx
|
### Disabling Nginx
|
||||||
|
|
||||||
See the [proxy documentation](/docs/advanced-usage/proxy-management.md) for more information on how to disable nginx as the proxy implementation for your app.
|
See the [proxy documentation](/docs/networking/proxy-management.md) for more information on how to disable nginx as the proxy implementation for your app.
|
||||||
|
|
||||||
### Managing Proxy Port mappings
|
### Managing Proxy Port mappings
|
||||||
|
|
||||||
See the [proxy documentation](/docs/advanced-usage/proxy-management.md#proxy-port-mapping) for more information on how to manage ports proxied for your app.
|
See the [proxy documentation](/docs/networking/proxy-management.md#proxy-port-mapping) for more information on how to manage ports proxied for your app.
|
||||||
|
|
||||||
### Regenerating nginx config
|
### Regenerating nginx config
|
||||||
|
|
||||||
See the [proxy documentation](/docs/advanced-usage/proxy-management.md#regenerating-proxy-config) for more information on how to rebuild the nginx proxy configuration for your app.
|
See the [proxy documentation](/docs/networking/proxy-management.md#regenerating-proxy-config) for more information on how to rebuild the nginx proxy configuration for your app.
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ certs:update <app> CRT KEY # Update an SSL Endpoint on an app. Can
|
|||||||
dokku nginx:import-ssl <app> < certs.tar
|
dokku nginx:import-ssl <app> < certs.tar
|
||||||
```
|
```
|
||||||
|
|
||||||
> Adding an ssl certificate before deploying an application will result in port mappings being updated. This may cause issues for applications that use non-standard ports, as those may not be automatically detected. Please refer to the [proxy documentation](/docs/advanced-usage/proxy-management.md) for information as to how to reconfigure the mappings.
|
> Adding an ssl certificate before deploying an application will result in port mappings being updated. This may cause issues for applications that use non-standard ports, as those may not be automatically detected. Please refer to the [proxy documentation](/docs/networking/proxy-management.md) for information as to how to reconfigure the mappings.
|
||||||
|
|
||||||
## Per-application certificate management
|
## Per-application certificate management
|
||||||
|
|
||||||
@@ -150,6 +150,19 @@ Only use this option if:
|
|||||||
|
|
||||||
If it's possible to make HTTP(S) requests directly to Nginx, bypassing the load balancer, or if the load balancer is not configured to set these headers, then it becomes possible for a client to set these headers to arbitrary values.
|
If it's possible to make HTTP(S) requests directly to Nginx, bypassing the load balancer, or if the load balancer is not configured to set these headers, then it becomes possible for a client to set these headers to arbitrary values.
|
||||||
|
|
||||||
|
The `x-forwarded-ssl` property may also be set for application frameworks that require this value. Note that this is a non-standard version of setting `x-forwarded-proto` to `https`, and should only be done as a last resort.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# force-setting value to `on`
|
||||||
|
dokku nginx:set node-js-app x-forwarded-ssl on
|
||||||
|
|
||||||
|
# force-setting value to `off`
|
||||||
|
dokku nginx:set node-js-app x-forwarded-ssl on
|
||||||
|
|
||||||
|
# removing the value from nginx.conf (default)
|
||||||
|
dokku nginx:set node-js-app x-forwarded-ssl
|
||||||
|
```
|
||||||
|
|
||||||
### SSL Port Exposure
|
### SSL Port Exposure
|
||||||
|
|
||||||
When your app is served from port `80` then the `/home/dokku/APP/nginx.conf` file will automatically be updated to instruct nginx to respond to ssl on port 443 as a new cert is added. If your app uses a non-standard port (perhaps you have a dockerfile deploy exposing port `99999`) you may need to manually expose an ssl port via `dokku proxy:ports-add <APP> https:443:99999`.
|
When your app is served from port `80` then the `/home/dokku/APP/nginx.conf` file will automatically be updated to instruct nginx to respond to ssl on port 443 as a new cert is added. If your app uses a non-standard port (perhaps you have a dockerfile deploy exposing port `99999`) you may need to manually expose an ssl port via `dokku proxy:ports-add <APP> https:443:99999`.
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ If you need to redeploy or restart your app:
|
|||||||
dokku ps:rebuild ruby-getting-started
|
dokku ps:rebuild ruby-getting-started
|
||||||
```
|
```
|
||||||
|
|
||||||
See the [process scaling documentation](/docs/deployment/process-management.md) for more information on how to manage your app processes.
|
See the [process scaling documentation](/docs/processes/process-management.md) for more information on how to manage your app processes.
|
||||||
|
|
||||||
### Deploying with private Git submodules
|
### Deploying with private Git submodules
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
# Log Management
|
# Log Management
|
||||||
|
|
||||||
```
|
```
|
||||||
logs <app> [-h] [-t] [-n num] [-q] [-p process] # Display recent log output
|
logs <app> [-h] [-t|--tail] [-n|--num num] [-q|--quiet] [-p|--ps process] # Display recent log output
|
||||||
logs:failed [--all|<app>] # Shows the last failed deploy logs
|
logs:failed [--all|<app>] # Shows the last failed deploy logs
|
||||||
logs:report [<app>] [<flag>] # Displays a logs report for one or more apps
|
logs:report [<app>] [<flag>] # Displays a logs report for one or more apps
|
||||||
logs:set [--global|<app>] <key> <value> # Set or clear a logs property for an app
|
logs:set [--global|<app>] <key> <value> # Set or clear a logs property for an app
|
||||||
logs:vector-logs [--num num] [--tail] # Display vector log output
|
logs:vector-logs [--num num] [--tail] # Display vector log output
|
||||||
logs:vector-start # Start the vector logging container
|
logs:vector-start # Start the vector logging container
|
||||||
logs:vector-stop # Stop the vector logging container
|
logs:vector-stop # Stop the vector logging container
|
||||||
```
|
```
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
@@ -134,7 +134,7 @@ Vector uses the concept of log "sinks" to send logs to a given endpoint. Log sin
|
|||||||
```shell
|
```shell
|
||||||
# setting the sink value in quotes is encouraged to avoid
|
# setting the sink value in quotes is encouraged to avoid
|
||||||
# issues with ampersand encoding in shell commands
|
# issues with ampersand encoding in shell commands
|
||||||
dokku logs:set node-js-app sink "console://?encoding[codec]=json"
|
dokku logs:set node-js-app vector-sink "console://?encoding[codec]=json"
|
||||||
```
|
```
|
||||||
|
|
||||||
A sink may be removed by setting an empty value, which will also reload the running vector container.
|
A sink may be removed by setting an empty value, which will also reload the running vector container.
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
```
|
```
|
||||||
buildpacks:set-property [--global|<app>] <key> <value> # Set or clear a buildpacks property for an app
|
buildpacks:set-property [--global|<app>] <key> <value> # Set or clear a buildpacks property for an app
|
||||||
```
|
```
|
||||||
Cloud Native Buildpacks are an evolution over the Buildpacks technology provided by the Herokuish builder. See the [herokuish buildpacks documentation](/docs/deployment/methods/herokuish.md) for more information on how to clear buildpack build cache for an application.
|
Cloud Native Buildpacks are an evolution over the Buildpacks technology provided by the Herokuish builder. See the [herokuish buildpacks documentation](/docs/deployment/methods/herokuish-buildpacks.md) for more information on how to clear buildpack build cache for an application.
|
||||||
|
|
||||||
> Warning: This functionality uses the `pack` cli from the [Cloud Native Buildpacks](https://buildpacks.io) project to build apps. As the integration is experimental in Dokku, it is likely to change over time.
|
> Warning: This functionality uses the `pack` cli from the [Cloud Native Buildpacks](https://buildpacks.io) project to build apps. As the integration is experimental in Dokku, it is likely to change over time.
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
```
|
```
|
||||||
git:allow-host <host> # Adds a host to known_hosts
|
git:allow-host <host> # Adds a host to known_hosts
|
||||||
git:sync [--build] <app> <repository> [<git-ref>] # Clone or fetch an app from remote git repo
|
git:sync [--build] <app> <repository> [<git-ref>] # Clone or fetch an app from remote git repo
|
||||||
git:initialize <app> # Initialize a git repository for an app
|
git:initialize <app> # Initialize a git repository for an app
|
||||||
git:public-key # Outputs the dokku public deploy key
|
git:public-key # Outputs the dokku public deploy key
|
||||||
git:report [<app>] [<flag>] # Displays a git report for one or more apps
|
git:report [<app>] [<flag>] # Displays a git report for one or more apps
|
||||||
@@ -19,6 +19,8 @@ Git-based deployment has been the traditional method of deploying applications i
|
|||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
|
> Warning: Pushing from a shallow clone is not currently supported and may have undefined behavior. Please unshallow your local repository before pushing to a Dokku app to avoid potential errors in the deployment process.
|
||||||
|
|
||||||
### Initializing an application
|
### Initializing an application
|
||||||
|
|
||||||
When an application is created via `git push`, Dokku will create the proper `pre-receive` hook in order to execute the build pipeline. In certain cases - such as when fronting deploys with the [`git-http-backend`](https://git-scm.com/docs/git-http-backend) - this may not be correctly created. As an alternative, the `git:initialize` command can be used to trigger this creation:
|
When an application is created via `git push`, Dokku will create the proper `pre-receive` hook in order to execute the build pipeline. In certain cases - such as when fronting deploys with the [`git-http-backend`](https://git-scm.com/docs/git-http-backend) - this may not be correctly created. As an alternative, the `git:initialize` command can be used to trigger this creation:
|
||||||
@@ -109,6 +111,8 @@ dokku git:set node-js-app keep-git-dir false
|
|||||||
dokku git:set node-js-app keep-git-dir ""
|
dokku git:set node-js-app keep-git-dir ""
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Please keep in mind that setting `keep-git-dir` to `true` may result in unstaged changes shown within the built container due to the build process generating application changes within the built app directory.
|
||||||
|
|
||||||
### Initializing an app repository from a remote repository
|
### Initializing an app repository from a remote repository
|
||||||
|
|
||||||
> The application must exist before the repository can be initialized
|
> The application must exist before the repository can be initialized
|
||||||
|
|||||||
@@ -225,7 +225,7 @@ dokku buildpacks:set node-js-app https://github.com/heroku/heroku-buildpack-node
|
|||||||
|
|
||||||
### Specifying commands via Procfile
|
### Specifying commands via Procfile
|
||||||
|
|
||||||
While many buildpacks have a default command that is run when a detected repository is pushed, it is possible to override this command via a Procfile. A Procfile can also be used to specify multiple commands, each of which is subject to process scaling. See the [process scaling documentation](/docs/deployment/process-management.md) for more details around scaling individual processes.
|
While many buildpacks have a default command that is run when a detected repository is pushed, it is possible to override this command via a Procfile. A Procfile can also be used to specify multiple commands, each of which is subject to process scaling. See the [process scaling documentation](/docs/processes/process-management.md) for more details around scaling individual processes.
|
||||||
|
|
||||||
A Procfile is a file named `Procfile`. It should be named `Procfile` exactly, and not anything else. For example, `Procfile.txt` is not valid. The file should be a simple text file.
|
A Procfile is a file named `Procfile`. It should be named `Procfile` exactly, and not anything else. For example, `Procfile.txt` is not valid. The file should be a simple text file.
|
||||||
|
|
||||||
@@ -246,7 +246,7 @@ worker: env QUEUE=* bundle exec rake resque:work
|
|||||||
importantworker: env QUEUE=important bundle exec rake resque:work
|
importantworker: env QUEUE=important bundle exec rake resque:work
|
||||||
```
|
```
|
||||||
|
|
||||||
The `web` process type holds some significance in that it is the only process type that is automatically scaled to `1` on the initial application deploy. See the [process scaling documentation](/docs/deployment/process-management.md) for more details around scaling individual processes.
|
The `web` process type holds some significance in that it is the only process type that is automatically scaled to `1` on the initial application deploy. See the [process scaling documentation](/docs/processes/process-management.md) for more details around scaling individual processes.
|
||||||
|
|
||||||
|
|
||||||
### `curl` build timeouts
|
### `curl` build timeouts
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ dokku tags:deploy node-js-app v1
|
|||||||
-----> Deploying node-js-app (dokku/node-js-app:v1)...
|
-----> Deploying node-js-app (dokku/node-js-app:v1)...
|
||||||
-----> Running pre-flight checks
|
-----> Running pre-flight checks
|
||||||
For more efficient zero downtime deployments, create a file CHECKS.
|
For more efficient zero downtime deployments, create a file CHECKS.
|
||||||
See http://dokku.viewdocs.io/dokku/deployment/zero-downtime-deploys/ for examples
|
See https://dokku.com/docs/deployment/zero-downtime-deploys/ for examples
|
||||||
CHECKS file not found in container: Running simple container check...
|
CHECKS file not found in container: Running simple container check...
|
||||||
-----> Waiting for 10 seconds ...
|
-----> Waiting for 10 seconds ...
|
||||||
-----> Default container check successful!
|
-----> Default container check successful!
|
||||||
@@ -168,4 +168,4 @@ ssh my.dokku.host "dokku tags:create test-app previous; dokku tags:deploy test-a
|
|||||||
## Related articles
|
## Related articles
|
||||||
- [Setting up persistent storage](/docs/advanced-usage/persistent-storage.md)
|
- [Setting up persistent storage](/docs/advanced-usage/persistent-storage.md)
|
||||||
- [Defining environment variables](/docs/configuration/environment-variables.md)
|
- [Defining environment variables](/docs/configuration/environment-variables.md)
|
||||||
- [Setting up the ports](/docs/advanced-usage/proxy-management.md)
|
- [Setting up the ports](/docs/networking/proxy-management.md)
|
||||||
|
|||||||
@@ -217,19 +217,19 @@ dokku checks:run APP
|
|||||||
-----> Running pre-flight checks
|
-----> Running pre-flight checks
|
||||||
-----> Running checks for app (APP.web.1)
|
-----> Running checks for app (APP.web.1)
|
||||||
For more efficient zero downtime deployments, create a file CHECKS.
|
For more efficient zero downtime deployments, create a file CHECKS.
|
||||||
See http://dokku.viewdocs.io/dokku/checks-examples.md for examples
|
See https://dokku.com/docs/deployment/zero-downtime-deploys/ for examples
|
||||||
CHECKS file not found in container: Running simple container check...
|
CHECKS file not found in container: Running simple container check...
|
||||||
-----> Waiting for 10 seconds ...
|
-----> Waiting for 10 seconds ...
|
||||||
-----> Default container check successful!
|
-----> Default container check successful!
|
||||||
-----> Running checks for app (APP.web.2)
|
-----> Running checks for app (APP.web.2)
|
||||||
For more efficient zero downtime deployments, create a file CHECKS.
|
For more efficient zero downtime deployments, create a file CHECKS.
|
||||||
See http://dokku.viewdocs.io/dokku/checks-examples.md for examples
|
See https://dokku.com/docs/deployment/zero-downtime-deploys/ for examples
|
||||||
CHECKS file not found in container: Running simple container check...
|
CHECKS file not found in container: Running simple container check...
|
||||||
-----> Waiting for 10 seconds ...
|
-----> Waiting for 10 seconds ...
|
||||||
-----> Default container check successful!
|
-----> Default container check successful!
|
||||||
-----> Running checks for app (APP.worker.1)
|
-----> Running checks for app (APP.worker.1)
|
||||||
For more efficient zero downtime deployments, create a file CHECKS.
|
For more efficient zero downtime deployments, create a file CHECKS.
|
||||||
See http://dokku.viewdocs.io/dokku/checks-examples.md for examples
|
See https://dokku.com/docs/deployment/zero-downtime-deploys/ for examples
|
||||||
CHECKS file not found in container: Running simple container check...
|
CHECKS file not found in container: Running simple container check...
|
||||||
-----> Waiting for 10 seconds ...
|
-----> Waiting for 10 seconds ...
|
||||||
-----> Default container check successful!
|
-----> Default container check successful!
|
||||||
@@ -245,7 +245,7 @@ dokku checks:run node-js-app worker
|
|||||||
-----> Running pre-flight checks
|
-----> Running pre-flight checks
|
||||||
-----> Running checks for app (APP.worker.1)
|
-----> Running checks for app (APP.worker.1)
|
||||||
For more efficient zero downtime deployments, create a file CHECKS.
|
For more efficient zero downtime deployments, create a file CHECKS.
|
||||||
See http://dokku.viewdocs.io/dokku/checks-examples.md for examples
|
See https://dokku.com/docs/deployment/zero-downtime-deploys/ for examples
|
||||||
CHECKS file not found in container: Running simple container check...
|
CHECKS file not found in container: Running simple container check...
|
||||||
-----> Waiting for 10 seconds ...
|
-----> Waiting for 10 seconds ...
|
||||||
-----> Default container check successful!
|
-----> Default container check successful!
|
||||||
@@ -261,7 +261,7 @@ dokku checks:run node-js-app web.2
|
|||||||
-----> Running pre-flight checks
|
-----> Running pre-flight checks
|
||||||
-----> Running checks for app (APP.web.2)
|
-----> Running checks for app (APP.web.2)
|
||||||
For more efficient zero downtime deployments, create a file CHECKS.
|
For more efficient zero downtime deployments, create a file CHECKS.
|
||||||
See http://dokku.viewdocs.io/dokku/checks-examples.md for examples
|
See https://dokku.com/docs/deployment/zero-downtime-deploys/ for examples
|
||||||
CHECKS file not found in container: Running simple container check...
|
CHECKS file not found in container: Running simple container check...
|
||||||
-----> Waiting for 10 seconds ...
|
-----> Waiting for 10 seconds ...
|
||||||
-----> Default container check successful!
|
-----> Default container check successful!
|
||||||
|
|||||||
@@ -261,6 +261,21 @@ help_content
|
|||||||
esac
|
esac
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### `config-export`
|
||||||
|
|
||||||
|
- Description: Returns the environment variables in a specified format
|
||||||
|
- Invoked by: app-json plugin
|
||||||
|
- Arguments: `$APP $GLOBAL $MERGED $FORMAT`
|
||||||
|
- Example:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||||
|
|
||||||
|
# TODO
|
||||||
|
```
|
||||||
|
|
||||||
### `config-get`
|
### `config-get`
|
||||||
|
|
||||||
- Description: Fetches the app config value for a key
|
- Description: Fetches the app config value for a key
|
||||||
@@ -1932,25 +1947,6 @@ DOKKU_SCHEDULER="$1"; APP="$2";
|
|||||||
# TODO
|
# TODO
|
||||||
```
|
```
|
||||||
|
|
||||||
### `scheduler-is-deployed`
|
|
||||||
|
|
||||||
> Warning: The scheduler plugin trigger apis are under development and may change
|
|
||||||
> between minor releases until the 1.0 release.
|
|
||||||
|
|
||||||
- Description: Allows you to check if an app has been deployed
|
|
||||||
- Invoked by: `dokku ps:rebuild`
|
|
||||||
- Arguments: `$DOKKU_SCHEDULER $APP`
|
|
||||||
- Example:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
|
||||||
DOKKU_SCHEDULER="$1"; APP="$2";
|
|
||||||
|
|
||||||
# TODO
|
|
||||||
```
|
|
||||||
|
|
||||||
### `scheduler-logs`
|
### `scheduler-logs`
|
||||||
|
|
||||||
> Warning: The scheduler plugin trigger apis are under development and may change
|
> Warning: The scheduler plugin trigger apis are under development and may change
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ The workflow looks like this:
|
|||||||
```shell
|
```shell
|
||||||
# having dokku-arch in ../dokku-arch
|
# having dokku-arch in ../dokku-arch
|
||||||
vagrant up build-arch
|
vagrant up build-arch
|
||||||
# wait for "==> build-arch: ==> Finished making: dokku 0.23.2-2 (Mon Feb 22 23:20:37 CET 2016)"
|
# wait for "==> build-arch: ==> Finished making: dokku 0.23.9-2 (Mon Feb 22 23:20:37 CET 2016)"
|
||||||
cd ../dokku-arch
|
cd ../dokku-arch
|
||||||
git add PKGBUILD .SRCINFO
|
git add PKGBUILD .SRCINFO
|
||||||
git commit -m 'Update to dokku 0.9.9'
|
git commit -m 'Update to dokku 0.9.9'
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
Pull the dokku/dokku image:
|
Pull the dokku/dokku image:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
docker pull dokku/dokku:0.23.2
|
docker pull dokku/dokku:0.23.9
|
||||||
```
|
```
|
||||||
|
|
||||||
Next, run the image.
|
Next, run the image.
|
||||||
@@ -17,7 +17,7 @@ docker run \
|
|||||||
--publish 8443:443 \
|
--publish 8443:443 \
|
||||||
--volume /var/lib/dokku:/mnt/dokku \
|
--volume /var/lib/dokku:/mnt/dokku \
|
||||||
--volume /var/run/docker.sock:/var/run/docker.sock \
|
--volume /var/run/docker.sock:/var/run/docker.sock \
|
||||||
dokku/dokku:0.23.2
|
dokku/dokku:0.23.9
|
||||||
```
|
```
|
||||||
|
|
||||||
Dokku is run in the following configuration:
|
Dokku is run in the following configuration:
|
||||||
|
|||||||
@@ -21,8 +21,8 @@ To install the latest stable version of Dokku, you can run the following shell c
|
|||||||
|
|
||||||
```shell
|
```shell
|
||||||
# for debian systems, installs Dokku via apt-get
|
# for debian systems, installs Dokku via apt-get
|
||||||
wget https://raw.githubusercontent.com/dokku/dokku/v0.23.2/bootstrap.sh;
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.23.9/bootstrap.sh;
|
||||||
sudo DOKKU_TAG=v0.23.2 bash bootstrap.sh
|
sudo DOKKU_TAG=v0.23.9 bash bootstrap.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
The installation process takes about 5-10 minutes, depending upon internet connection speed.
|
The installation process takes about 5-10 minutes, depending upon internet connection speed.
|
||||||
|
|||||||
@@ -235,4 +235,4 @@ This isn't usually an issue with Dokku, but rather an app config problem. This c
|
|||||||
|
|
||||||
In Rails at least, if your `application.rb` or `environmnents/production.rb` include the line `configure.force_ssl = true` which includes HSTS, try commenting that out and redeploying.
|
In Rails at least, if your `application.rb` or `environmnents/production.rb` include the line `configure.force_ssl = true` which includes HSTS, try commenting that out and redeploying.
|
||||||
|
|
||||||
If this solves the issue temporarily, longer term you should consider [configuring SSL](http://dokku.viewdocs.io/dokku/configuration/ssl/).
|
If this solves the issue temporarily, longer term you should consider [configuring SSL](/docs/configuration/ssl.md).
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ If you’re stuck, there are a number of places you can get help:
|
|||||||
|
|
||||||
## The Official Dokku Website
|
## The Official Dokku Website
|
||||||
|
|
||||||
- [http://dokku.viewdocs.io/dokku/](/docs/)
|
- [https://dokku.com/docs/](/docs/)
|
||||||
|
|
||||||
The Official Dokku website is always a great place to visit. It features links to oft-used developer tools, community plugins, and guides on using Dokku.
|
The Official Dokku website is always a great place to visit. It features links to oft-used developer tools, community plugins, and guides on using Dokku.
|
||||||
|
|
||||||
|
|||||||
@@ -10,30 +10,30 @@
|
|||||||
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700" rel="stylesheet" type="text/css">
|
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700" rel="stylesheet" type="text/css">
|
||||||
<title>Dokku - The smallest PaaS implementation you've ever seen</title>
|
<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.23.2/docs/assets/favicons/apple-touch-icon-57x57.png">
|
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/apple-touch-icon-57x57.png">
|
||||||
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/apple-touch-icon-60x60.png">
|
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/apple-touch-icon-60x60.png">
|
||||||
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/apple-touch-icon-72x72.png">
|
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/apple-touch-icon-72x72.png">
|
||||||
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/apple-touch-icon-76x76.png">
|
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/apple-touch-icon-76x76.png">
|
||||||
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/apple-touch-icon-114x114.png">
|
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/apple-touch-icon-114x114.png">
|
||||||
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/apple-touch-icon-120x120.png">
|
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/apple-touch-icon-120x120.png">
|
||||||
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/apple-touch-icon-144x144.png">
|
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/apple-touch-icon-144x144.png">
|
||||||
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/apple-touch-icon-152x152.png">
|
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/apple-touch-icon-152x152.png">
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/apple-touch-icon-180x180.png">
|
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/apple-touch-icon-180x180.png">
|
||||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
|
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
|
||||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
|
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
|
||||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
|
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
|
||||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
|
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
|
||||||
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/manifest.json">
|
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/manifest.json">
|
||||||
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/favicon.ico">
|
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/favicon.ico">
|
||||||
<meta name="apple-mobile-web-app-title" content="Dokku">
|
<meta name="apple-mobile-web-app-title" content="Dokku">
|
||||||
<meta name="application-name" content="Dokku">
|
<meta name="application-name" content="Dokku">
|
||||||
<meta name="msapplication-TileColor" content="#da532c">
|
<meta name="msapplication-TileColor" content="#da532c">
|
||||||
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/mstile-144x144.png">
|
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/mstile-144x144.png">
|
||||||
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/browserconfig.xml">
|
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/browserconfig.xml">
|
||||||
<meta name="theme-color" content="#ffffff">
|
<meta name="theme-color" content="#ffffff">
|
||||||
|
|
||||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.2/css/bootstrap.min.css" rel="stylesheet">
|
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.2/css/bootstrap.min.css" rel="stylesheet">
|
||||||
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/style.css" rel="stylesheet">
|
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/style.css" rel="stylesheet">
|
||||||
<!-- <link href="/dokku/docs/assets/style.css" rel="stylesheet"> -->
|
<!-- <link href="/dokku/docs/assets/style.css" rel="stylesheet"> -->
|
||||||
<style>
|
<style>
|
||||||
.sponsors {
|
.sponsors {
|
||||||
@@ -130,12 +130,12 @@
|
|||||||
<p class="line">
|
<p class="line">
|
||||||
<span class="path"></span>
|
<span class="path"></span>
|
||||||
<span class="prompt">$</span>
|
<span class="prompt">$</span>
|
||||||
<span class="command">wget https://raw.githubusercontent.com/dokku/dokku/v0.23.2/bootstrap.sh</span>
|
<span class="command">wget https://raw.githubusercontent.com/dokku/dokku/v0.23.9/bootstrap.sh</span>
|
||||||
</p>
|
</p>
|
||||||
<p class="line">
|
<p class="line">
|
||||||
<span class="path"></span>
|
<span class="path"></span>
|
||||||
<span class="prompt">$</span>
|
<span class="prompt">$</span>
|
||||||
<span class="command">sudo DOKKU_TAG=v0.23.2 bash bootstrap.sh</span>
|
<span class="command">sudo DOKKU_TAG=v0.23.9 bash bootstrap.sh</span>
|
||||||
</p>
|
</p>
|
||||||
<p class="line">
|
<p class="line">
|
||||||
<span class="output"> # go to your server's IP and follow the web installer</span>
|
<span class="output"> # go to your server's IP and follow the web installer</span>
|
||||||
@@ -215,7 +215,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="alternate-instructions">
|
<div class="alternate-instructions">
|
||||||
<p>Hate <code>curl | bash</code>? See our official <a href="https://github.com/Azure/azure-quickstart-templates/tree/master/dokku-vm" target="_blank">Azure</a>, <a href="https://marketplace.digitalocean.com/apps/dokku?refcode=fe06b043a083 target="_blank">DigitalOcean</a>, and <a href="/{{NAME}}~{{REF}}/getting-started/install/dreamhost/">DreamHost Cloud</a> instructions.</p>
|
<p>Hate <code>curl | bash</code>? See our official <a href="https://github.com/Azure/azure-quickstart-templates/tree/master/dokku-vm" target="_blank">Azure</a>, <a href="https://marketplace.digitalocean.com/apps/dokku?refcode=fe06b043a083" target="_blank">DigitalOcean</a>, and <a href="/{{NAME}}~{{REF}}/getting-started/install/dreamhost/">DreamHost Cloud</a> instructions.</p>
|
||||||
<p>Still no love? <a href="https://github.com/dokku/dokku/blob/master/CONTRIBUTING.md" target="_blank">Contributions welcome</a>!</a></p>
|
<p>Still no love? <a href="https://github.com/dokku/dokku/blob/master/CONTRIBUTING.md" target="_blank">Contributions welcome</a>!</a></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -136,7 +136,7 @@ For buildpack deployments, your application *must* respect the `PORT` environmen
|
|||||||
|
|
||||||
> Changed as of 0.5.0
|
> Changed as of 0.5.0
|
||||||
|
|
||||||
Dokku's default proxy implementation - nginx - supports HTTP and GRPC request proxying. At this time, we do not support proxying plain TCP or UDP ports. UDP ports can be exposed by disabling the nginx proxy with `dokku proxy:disable myapp`. If you would like to investigate alternative proxy methods, please refer to our [proxy management documentation](/docs/advanced-usage/proxy-management.md).
|
Dokku's default proxy implementation - nginx - supports HTTP and GRPC request proxying. At this time, we do not support proxying plain TCP or UDP ports. UDP ports can be exposed by disabling the nginx proxy with `dokku proxy:disable myapp`. If you would like to investigate alternative proxy methods, please refer to our [proxy management documentation](/docs/networking/proxy-management.md).
|
||||||
|
|
||||||
#### Applications using EXPOSE
|
#### Applications using EXPOSE
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Process and Container Management
|
# Process Management
|
||||||
|
|
||||||
> New as of 0.3.14, Enhanced in 0.7.0
|
> New as of 0.3.14, Enhanced in 0.7.0
|
||||||
|
|
||||||
|
|||||||
@@ -7,28 +7,28 @@
|
|||||||
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
|
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
|
||||||
<meta name="description" content="">
|
<meta name="description" content="">
|
||||||
<meta name="author" content="">
|
<meta name="author" content="">
|
||||||
<title>Dokku - The smallest PaaS implementation you've ever seen</title>
|
<title>Dokku - {{DOC_TITLE}}</title>
|
||||||
|
|
||||||
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/apple-touch-icon-57x57.png">
|
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/apple-touch-icon-57x57.png">
|
||||||
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/apple-touch-icon-60x60.png">
|
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/apple-touch-icon-60x60.png">
|
||||||
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/apple-touch-icon-72x72.png">
|
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/apple-touch-icon-72x72.png">
|
||||||
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/apple-touch-icon-76x76.png">
|
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/apple-touch-icon-76x76.png">
|
||||||
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/apple-touch-icon-114x114.png">
|
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/apple-touch-icon-114x114.png">
|
||||||
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/apple-touch-icon-120x120.png">
|
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/apple-touch-icon-120x120.png">
|
||||||
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/apple-touch-icon-144x144.png">
|
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/apple-touch-icon-144x144.png">
|
||||||
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/apple-touch-icon-152x152.png">
|
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/apple-touch-icon-152x152.png">
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/apple-touch-icon-180x180.png">
|
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/apple-touch-icon-180x180.png">
|
||||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
|
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
|
||||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
|
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
|
||||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
|
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
|
||||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
|
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
|
||||||
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/manifest.json">
|
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/manifest.json">
|
||||||
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/favicon.ico">
|
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/favicon.ico">
|
||||||
<meta name="apple-mobile-web-app-title" content="Dokku">
|
<meta name="apple-mobile-web-app-title" content="Dokku">
|
||||||
<meta name="application-name" content="Dokku">
|
<meta name="application-name" content="Dokku">
|
||||||
<meta name="msapplication-TileColor" content="#da532c">
|
<meta name="msapplication-TileColor" content="#da532c">
|
||||||
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/mstile-144x144.png">
|
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/mstile-144x144.png">
|
||||||
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/favicons/browserconfig.xml">
|
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/favicons/browserconfig.xml">
|
||||||
<meta name="theme-color" content="#ffffff">
|
<meta name="theme-color" content="#ffffff">
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.2/css/bootstrap.min.css" rel="stylesheet">
|
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.2/css/bootstrap.min.css" rel="stylesheet">
|
||||||
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.2/docs/assets/style.css" rel="stylesheet">
|
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.23.9/docs/assets/style.css" rel="stylesheet">
|
||||||
<!-- <link href="/dokku/docs/assets/style.css" rel="stylesheet"> -->
|
<!-- <link href="/dokku/docs/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">
|
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet">
|
||||||
<style>
|
<style>
|
||||||
@@ -143,11 +143,11 @@
|
|||||||
<a href="/{{NAME}}/configuration/nginx/" class="list-group-item">Nginx Configuration</a>
|
<a href="/{{NAME}}/configuration/nginx/" class="list-group-item">Nginx Configuration</a>
|
||||||
<a href="/{{NAME}}/configuration/ssl/" class="list-group-item">SSL Configuration</a>
|
<a href="/{{NAME}}/configuration/ssl/" class="list-group-item">SSL Configuration</a>
|
||||||
|
|
||||||
<a href="#" class="list-group-item disabled">Process Management</a>
|
<a href="#" class="list-group-item disabled">Interacting with Processes</a>
|
||||||
|
|
||||||
<a href="/{{NAME}}/processes/entering-containers/" class="list-group-item">Entering Containers</a>
|
<a href="/{{NAME}}/processes/entering-containers/" class="list-group-item">Entering Containers</a>
|
||||||
<a href="/{{NAME}}/processes/one-off-tasks/" class="list-group-item">One-Off Tasks</a>
|
<a href="/{{NAME}}/processes/one-off-tasks/" class="list-group-item">One-Off Tasks</a>
|
||||||
<a href="/{{NAME}}/processes/process-management/" class="list-group-item">Process Scaling</a>
|
<a href="/{{NAME}}/processes/process-management/" class="list-group-item">Process Management</a>
|
||||||
<a href="/{{NAME}}/processes/scheduled-cron-tasks/" class="list-group-item">Scheduled Cron Tasks</a>
|
<a href="/{{NAME}}/processes/scheduled-cron-tasks/" class="list-group-item">Scheduled Cron Tasks</a>
|
||||||
|
|
||||||
<a href="#" class="list-group-item disabled">Network Management</a>
|
<a href="#" class="list-group-item disabled">Network Management</a>
|
||||||
@@ -217,8 +217,6 @@
|
|||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
Free document hosting provided by <a href="http://progrium.viewdocs.io/viewdocs/">Viewdocs</a>.
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
"process-management": "processes/process-management/",
|
"process-management": "processes/process-management/",
|
||||||
"deployment/process-management": "processes/process-management/",
|
"deployment/process-management": "processes/process-management/",
|
||||||
"deployment/one-off-processes": "processes/deployment/one-off-tasks/",
|
"deployment/one-off-processes": "processes/one-off-tasks/",
|
||||||
|
|
||||||
"deployment/buildpacks": "deployment/methods/herokuish-buildpacks/",
|
"deployment/buildpacks": "deployment/methods/herokuish-buildpacks/",
|
||||||
"deployment/methods/buildpacks": "deployment/methods/herokuish-buildpacks/",
|
"deployment/methods/buildpacks": "deployment/methods/herokuish-buildpacks/",
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[plugin]
|
[plugin]
|
||||||
description = "dokku core standard plugin"
|
description = "dokku core standard plugin"
|
||||||
version = "0.23.2"
|
version = "0.23.9"
|
||||||
[plugin.config]
|
[plugin.config]
|
||||||
|
|||||||
1
plugins/20_events/config-export
Symbolic link
1
plugins/20_events/config-export
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
hook
|
||||||
@@ -8,8 +8,8 @@ cmd-events-help() {
|
|||||||
local plugin_name="events"
|
local plugin_name="events"
|
||||||
local plugin_description="Manage event logging"
|
local plugin_description="Manage event logging"
|
||||||
|
|
||||||
if [[ "$CMD" == "$plugin_name:help" ]]; then
|
if [[ "$CMD" == "${plugin_name}:help" ]]; then
|
||||||
echo -e "Usage: dokku $plugin_name[:COMMAND]"
|
echo -e "Usage: dokku ${plugin_name}[:COMMAND]"
|
||||||
echo ''
|
echo ''
|
||||||
echo "$plugin_description"
|
echo "$plugin_description"
|
||||||
echo ''
|
echo ''
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[plugin]
|
[plugin]
|
||||||
description = "dokku core events logging plugin"
|
description = "dokku core events logging plugin"
|
||||||
version = "0.23.2"
|
version = "0.23.9"
|
||||||
[plugin.config]
|
[plugin.config]
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import (
|
|||||||
"golang.org/x/sync/errgroup"
|
"golang.org/x/sync/errgroup"
|
||||||
)
|
)
|
||||||
|
|
||||||
func constructScript(command string, shell string, isHerokuishImage bool, hasEntrypoint bool) []string {
|
func constructScript(command string, shell string, isHerokuishImage bool, isCnbImage bool, hasEntrypoint bool) []string {
|
||||||
if hasEntrypoint {
|
if hasEntrypoint {
|
||||||
words, err := shellquote.Split(strings.TrimSpace(command))
|
words, err := shellquote.Split(strings.TrimSpace(command))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -31,7 +31,7 @@ func constructScript(command string, shell string, isHerokuishImage bool, hasEnt
|
|||||||
script = append(script, "set -x;")
|
script = append(script, "set -x;")
|
||||||
}
|
}
|
||||||
|
|
||||||
if isHerokuishImage {
|
if isHerokuishImage && !isCnbImage {
|
||||||
script = append(script, []string{
|
script = append(script, []string{
|
||||||
"if [[ -d '/app' ]]; then",
|
"if [[ -d '/app' ]]; then",
|
||||||
" export HOME=/app;",
|
" export HOME=/app;",
|
||||||
@@ -60,7 +60,7 @@ func constructScript(command string, shell string, isHerokuishImage bool, hasEnt
|
|||||||
|
|
||||||
script = append(script, fmt.Sprintf("%s || exit 1;", command))
|
script = append(script, fmt.Sprintf("%s || exit 1;", command))
|
||||||
|
|
||||||
if isHerokuishImage {
|
if isHerokuishImage && !isCnbImage {
|
||||||
script = append(script, []string{
|
script = append(script, []string{
|
||||||
"if [[ -d '/cache' ]]; then",
|
"if [[ -d '/cache' ]]; then",
|
||||||
" rm -f /tmp/cache;",
|
" rm -f /tmp/cache;",
|
||||||
@@ -127,7 +127,7 @@ func getDokkuAppShell(appName string) string {
|
|||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
errs.Go(func() error {
|
errs.Go(func() error {
|
||||||
b, _ := common.PlugnTriggerOutput("config-get", []string{"DOKKU_APP_SHELL", appName}...)
|
b, _ := common.PlugnTriggerOutput("config-get", []string{appName, "DOKKU_APP_SHELL"}...)
|
||||||
appShell = strings.TrimSpace(string(b[:]))
|
appShell = strings.TrimSpace(string(b[:]))
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
@@ -164,6 +164,7 @@ func executeScript(appName string, image string, imageTag string, phase string)
|
|||||||
|
|
||||||
common.LogInfo1(fmt.Sprintf("Executing %s task from %s: %s", phase, phaseSource, command))
|
common.LogInfo1(fmt.Sprintf("Executing %s task from %s: %s", phase, phaseSource, command))
|
||||||
isHerokuishImage := common.IsImageHerokuishBased(image, appName)
|
isHerokuishImage := common.IsImageHerokuishBased(image, appName)
|
||||||
|
isCnbImage := common.IsImageCnbBased(image)
|
||||||
dockerfileEntrypoint := ""
|
dockerfileEntrypoint := ""
|
||||||
dockerfileCommand := ""
|
dockerfileCommand := ""
|
||||||
if !isHerokuishImage {
|
if !isHerokuishImage {
|
||||||
@@ -173,11 +174,13 @@ func executeScript(appName string, image string, imageTag string, phase string)
|
|||||||
|
|
||||||
hasEntrypoint := dockerfileEntrypoint != ""
|
hasEntrypoint := dockerfileEntrypoint != ""
|
||||||
dokkuAppShell := getDokkuAppShell(appName)
|
dokkuAppShell := getDokkuAppShell(appName)
|
||||||
script := constructScript(command, dokkuAppShell, isHerokuishImage, hasEntrypoint)
|
script := constructScript(command, dokkuAppShell, isHerokuishImage, isCnbImage, hasEntrypoint)
|
||||||
|
|
||||||
imageSourceType := "dockerfile"
|
imageSourceType := "dockerfile"
|
||||||
if isHerokuishImage {
|
if isHerokuishImage {
|
||||||
imageSourceType = "herokuish"
|
imageSourceType = "herokuish"
|
||||||
|
} else if isCnbImage {
|
||||||
|
imageSourceType = "cnb"
|
||||||
}
|
}
|
||||||
|
|
||||||
cacheDir := fmt.Sprintf("%s/cache", common.AppRoot(appName))
|
cacheDir := fmt.Sprintf("%s/cache", common.AppRoot(appName))
|
||||||
@@ -224,6 +227,13 @@ func executeScript(appName string, image string, imageTag string, phase string)
|
|||||||
if os.Getenv("DOKKU_TRACE") != "" {
|
if os.Getenv("DOKKU_TRACE") != "" {
|
||||||
dockerArgs = append(dockerArgs, "--env", "DOKKU_TRACE="+os.Getenv("DOKKU_TRACE"))
|
dockerArgs = append(dockerArgs, "--env", "DOKKU_TRACE="+os.Getenv("DOKKU_TRACE"))
|
||||||
}
|
}
|
||||||
|
if isCnbImage {
|
||||||
|
// TODO: handle non-linux lifecycles
|
||||||
|
// Ideally we don't have to override this but `pack` injects the web process
|
||||||
|
// as the default entrypoint, so we need to specify the launcher so the script
|
||||||
|
// runs as expected
|
||||||
|
dockerArgs = append(dockerArgs, "--entrypoint=/cnb/lifecycle/launcher")
|
||||||
|
}
|
||||||
|
|
||||||
containerID, err := createdContainerID(appName, dockerArgs, image, script, phase)
|
containerID, err := createdContainerID(appName, dockerArgs, image, script, phase)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -246,7 +256,7 @@ func executeScript(appName string, image string, imageTag string, phase string)
|
|||||||
}
|
}
|
||||||
|
|
||||||
commitArgs := []string{"container", "commit"}
|
commitArgs := []string{"container", "commit"}
|
||||||
if !isHerokuishImage {
|
if !isHerokuishImage || isCnbImage {
|
||||||
if dockerfileEntrypoint != "" {
|
if dockerfileEntrypoint != "" {
|
||||||
commitArgs = append(commitArgs, "--change", dockerfileEntrypoint)
|
commitArgs = append(commitArgs, "--change", dockerfileEntrypoint)
|
||||||
}
|
}
|
||||||
@@ -366,15 +376,25 @@ func createdContainerID(appName string, dockerArgs []string, image string, comma
|
|||||||
arguments = append(arguments, image)
|
arguments = append(arguments, image)
|
||||||
arguments = append(arguments, command...)
|
arguments = append(arguments, command...)
|
||||||
|
|
||||||
|
b, err := common.PlugnTriggerOutput("config-export", []string{appName, "false", "true", "json"}...)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
var env map[string]string
|
||||||
|
if err := json.Unmarshal(b, &env); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
containerCreateCmd := common.NewShellCmdWithArgs(
|
containerCreateCmd := common.NewShellCmdWithArgs(
|
||||||
common.DockerBin(),
|
common.DockerBin(),
|
||||||
arguments...,
|
arguments...,
|
||||||
)
|
)
|
||||||
var stderr bytes.Buffer
|
var stderr bytes.Buffer
|
||||||
|
containerCreateCmd.Env = env
|
||||||
containerCreateCmd.ShowOutput = false
|
containerCreateCmd.ShowOutput = false
|
||||||
containerCreateCmd.Command.Stderr = &stderr
|
containerCreateCmd.Command.Stderr = &stderr
|
||||||
|
|
||||||
b, err := containerCreateCmd.Output()
|
b, err = containerCreateCmd.Output()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", errors.New(stderr.String())
|
return "", errors.New(stderr.String())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,5 +6,6 @@ github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNU
|
|||||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
|
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
|
||||||
github.com/ryanuber/columnize v1.1.2-0.20190319233515-9e6335e58db3 h1:utdYOikI1XjNtTFGCwSM6OmFJblU4ld4gACoJsbadJg=
|
github.com/ryanuber/columnize v1.1.2-0.20190319233515-9e6335e58db3 h1:utdYOikI1XjNtTFGCwSM6OmFJblU4ld4gACoJsbadJg=
|
||||||
github.com/ryanuber/columnize v1.1.2-0.20190319233515-9e6335e58db3/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
github.com/ryanuber/columnize v1.1.2-0.20190319233515-9e6335e58db3/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
||||||
|
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||||
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a h1:DcqTD9SDLc+1P/r1EmRBwnVsrOwW+kk2vWf9n+1sGhs=
|
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a h1:DcqTD9SDLc+1P/r1EmRBwnVsrOwW+kk2vWf9n+1sGhs=
|
||||||
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[plugin]
|
[plugin]
|
||||||
description = "dokku core app-json plugin"
|
description = "dokku core app-json plugin"
|
||||||
version = "0.23.2"
|
version = "0.23.9"
|
||||||
[plugin.config]
|
[plugin.config]
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[plugin]
|
[plugin]
|
||||||
description = "dokku core apps plugin"
|
description = "dokku core apps plugin"
|
||||||
version = "0.23.2"
|
version = "0.23.9"
|
||||||
[plugin.config]
|
[plugin.config]
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ trigger-builder-cnb-builder-build() {
|
|||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
local stack="$(plugn trigger buildpack-stack-name "$APP")"
|
local stack="$(plugn trigger buildpack-stack-name "$APP")"
|
||||||
if [[ -z "$stack" ]]; then
|
if [[ -z "$stack" ]]; then
|
||||||
DOKKU_CNB_STACK="$stack"
|
DOKKU_CNB_STACK="$stack"
|
||||||
@@ -32,13 +31,13 @@ trigger-builder-cnb-builder-build() {
|
|||||||
local TMP_FILE=$(mktemp "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXXXX")
|
local TMP_FILE=$(mktemp "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXXXX")
|
||||||
trap "rm -rf '$TMP_FILE' >/dev/null" RETURN INT TERM
|
trap "rm -rf '$TMP_FILE' >/dev/null" RETURN INT TERM
|
||||||
|
|
||||||
config_export app "$APP" --format envfile --merged > "$TMP_FILE"
|
config_export app "$APP" --format envfile --merged >"$TMP_FILE"
|
||||||
|
|
||||||
plugn trigger pre-build-cnb "$APP" "$SOURCECODE_WORK_DIR"
|
plugn trigger pre-build-cnb "$APP" "$SOURCECODE_WORK_DIR"
|
||||||
|
|
||||||
pack build "$IMAGE" --builder "$DOKKU_CNB_BUILDER" --path "$SOURCECODE_WORK_DIR" --default-process web
|
pack build "$IMAGE" --builder "$DOKKU_CNB_BUILDER" --path "$SOURCECODE_WORK_DIR" --default-process web
|
||||||
|
|
||||||
echo "FROM $IMAGE" | suppress_output "$DOCKER_BIN" image build --label=com.dokku.image-stage=build --label=org.label-schema.schema-version=1.0 --label=org.label-schema.vendor=dokku --label=com.dokku.app-name=$APP --label=dokku -t "$IMAGE" -
|
docker-image-labeler --label=com.dokku.image-stage=build --label=com.dokku.app-name=$APP --label=org.label-schema.schema-version=1.0 --label=org.label-schema.vendor=dokku --label=dokku "$IMAGE"
|
||||||
|
|
||||||
plugn trigger post-build-cnb "$APP" "$SOURCECODE_WORK_DIR"
|
plugn trigger post-build-cnb "$APP" "$SOURCECODE_WORK_DIR"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[plugin]
|
[plugin]
|
||||||
description = "dokku core builder-cnb plugin"
|
description = "dokku core builder-cnb plugin"
|
||||||
version = "0.23.2"
|
version = "0.23.9"
|
||||||
[plugin.config]
|
[plugin.config]
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[plugin]
|
[plugin]
|
||||||
description = "dokku core builder-dockerfile plugin"
|
description = "dokku core builder-dockerfile plugin"
|
||||||
version = "0.23.2"
|
version = "0.23.9"
|
||||||
[plugin.config]
|
[plugin.config]
|
||||||
|
|||||||
@@ -47,14 +47,14 @@ trigger-builder-herokuish-builder-build() {
|
|||||||
plugn trigger pre-build-buildpack "$APP" "$SOURCECODE_WORK_DIR"
|
plugn trigger pre-build-buildpack "$APP" "$SOURCECODE_WORK_DIR"
|
||||||
|
|
||||||
local DOCKER_ARGS=$(: | plugn trigger docker-args-build "$APP" "$BUILDER_TYPE")
|
local DOCKER_ARGS=$(: | plugn trigger docker-args-build "$APP" "$BUILDER_TYPE")
|
||||||
[[ "$DOKKU_TRACE" ]] && DOCKER_ARGS+=" -e TRACE=true "
|
[[ "$DOKKU_TRACE" ]] && DOCKER_ARGS+=" --env=TRACE=true "
|
||||||
DOCKER_ARGS+=$(: | plugn trigger docker-args-process-build "$APP" "$BUILDER_TYPE")
|
DOCKER_ARGS+=$(: | plugn trigger docker-args-process-build "$APP" "$BUILDER_TYPE")
|
||||||
|
|
||||||
declare -a ARG_ARRAY
|
declare -a ARG_ARRAY
|
||||||
eval "ARG_ARRAY=($DOCKER_ARGS)"
|
eval "ARG_ARRAY=($DOCKER_ARGS)"
|
||||||
|
|
||||||
local DOKKU_CONTAINER_EXIT_CODE=0
|
local DOKKU_CONTAINER_EXIT_CODE=0
|
||||||
local CID=$("$DOCKER_BIN" container create "${DOCKER_RUN_LABEL_ARGS[@]}" $DOKKU_GLOBAL_RUN_ARGS -v $DOKKU_APP_HOST_CACHE_DIR:/cache -e CACHE_PATH=/cache "${ARG_ARRAY[@]}" $IMAGE /build)
|
local CID=$("$DOCKER_BIN" container create "${DOCKER_RUN_LABEL_ARGS[@]}" $DOKKU_GLOBAL_RUN_ARGS -v $DOKKU_APP_HOST_CACHE_DIR:/cache --env=CACHE_PATH=/cache "${ARG_ARRAY[@]}" $IMAGE /build)
|
||||||
plugn trigger post-container-create "app" "$CID" "$APP" "build"
|
plugn trigger post-container-create "app" "$CID" "$APP" "build"
|
||||||
"$DOCKER_BIN" container start "$CID" >/dev/null || DOKKU_CONTAINER_EXIT_CODE=$?
|
"$DOCKER_BIN" container start "$CID" >/dev/null || DOKKU_CONTAINER_EXIT_CODE=$?
|
||||||
"$DOCKER_BIN" container attach "$CID"
|
"$DOCKER_BIN" container attach "$CID"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[plugin]
|
[plugin]
|
||||||
description = "dokku core builder-herokuish plugin"
|
description = "dokku core builder-herokuish plugin"
|
||||||
version = "0.23.2"
|
version = "0.23.9"
|
||||||
[plugin.config]
|
[plugin.config]
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[plugin]
|
[plugin]
|
||||||
description = "dokku core buildpacks plugin"
|
description = "dokku core buildpacks plugin"
|
||||||
version = "0.23.2"
|
version = "0.23.9"
|
||||||
[plugin.config]
|
[plugin.config]
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ cmd-certs-help() {
|
|||||||
local plugin_name="certs"
|
local plugin_name="certs"
|
||||||
local plugin_description="Manage SSL (TLS) certs"
|
local plugin_description="Manage SSL (TLS) certs"
|
||||||
|
|
||||||
if [[ "$CMD" == "$plugin_name:help" ]]; then
|
if [[ "$CMD" == "${plugin_name}:help" ]]; then
|
||||||
echo -e "Usage: dokku $plugin_name[:COMMAND]"
|
echo -e "Usage: dokku ${plugin_name}[:COMMAND]"
|
||||||
echo ''
|
echo ''
|
||||||
echo "$plugin_description"
|
echo "$plugin_description"
|
||||||
echo ''
|
echo ''
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[plugin]
|
[plugin]
|
||||||
description = "dokku core certificate management plugin"
|
description = "dokku core certificate management plugin"
|
||||||
version = "0.23.2"
|
version = "0.23.9"
|
||||||
[plugin.config]
|
[plugin.config]
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ trigger-certs-post-app-clone-setup() {
|
|||||||
declare desc="removes cert file when setting up a clone"
|
declare desc="removes cert file when setting up a clone"
|
||||||
declare trigger="post-app-clone-setup"
|
declare trigger="post-app-clone-setup"
|
||||||
declare OLD_APP="$1" NEW_APP="$2"
|
declare OLD_APP="$1" NEW_APP="$2"
|
||||||
local APP_DIR="$DOKKU_ROOT/$NEW_APP"
|
local APP_ROOT="$DOKKU_ROOT/$NEW_APP"
|
||||||
|
|
||||||
rm -rf "$APP_DIR/tls"
|
rm -rf "$APP_ROOT/tls"
|
||||||
plugn trigger post-certs-remove "$NEW_APP"
|
plugn trigger post-certs-remove "$NEW_APP"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ cmd-checks-help() {
|
|||||||
local plugin_name="checks"
|
local plugin_name="checks"
|
||||||
local plugin_description="Manage zero-downtime settings"
|
local plugin_description="Manage zero-downtime settings"
|
||||||
|
|
||||||
if [[ "$CMD" == "$plugin_name:help" ]]; then
|
if [[ "$CMD" == "${plugin_name}:help" ]]; then
|
||||||
echo -e "Usage: dokku $plugin_name[:COMMAND]"
|
echo -e "Usage: dokku ${plugin_name}[:COMMAND]"
|
||||||
echo ''
|
echo ''
|
||||||
echo "$plugin_description"
|
echo "$plugin_description"
|
||||||
echo ''
|
echo ''
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[plugin]
|
[plugin]
|
||||||
description = "dokku core checks plugin"
|
description = "dokku core checks plugin"
|
||||||
version = "0.23.2"
|
version = "0.23.9"
|
||||||
[plugin.config]
|
[plugin.config]
|
||||||
|
|||||||
@@ -1,10 +1,17 @@
|
|||||||
BUILD = prop
|
TRIGGERS = triggers/core-post-deploy triggers/install triggers/post-delete
|
||||||
|
BUILD = prop common triggers
|
||||||
PLUGIN_NAME = common
|
PLUGIN_NAME = common
|
||||||
|
|
||||||
clean-prop:
|
clean-prop:
|
||||||
rm -rf prop
|
rm -rf prop
|
||||||
|
|
||||||
|
clean-common:
|
||||||
|
rm -rf common
|
||||||
|
|
||||||
prop: clean-prop **/**/prop.go
|
prop: clean-prop **/**/prop.go
|
||||||
go build -ldflags="-s -w" $(GO_ARGS) -o prop src/prop/prop.go
|
go build -ldflags="-s -w" $(GO_ARGS) -o prop src/prop/prop.go
|
||||||
|
|
||||||
|
common: clean-common **/**/common.go
|
||||||
|
go build -ldflags="-s -w" $(GO_ARGS) -o common src/common/common.go
|
||||||
|
|
||||||
include ../../common.mk
|
include ../../common.mk
|
||||||
|
|||||||
@@ -20,6 +20,16 @@ import (
|
|||||||
|
|
||||||
type errfunc func() error
|
type errfunc func() error
|
||||||
|
|
||||||
|
var (
|
||||||
|
// DefaultProperties is a map of all valid common properties with corresponding default property values
|
||||||
|
DefaultProperties = map[string]string{
|
||||||
|
"deployed": "false",
|
||||||
|
}
|
||||||
|
|
||||||
|
// GlobalProperties is a map of all valid global common properties
|
||||||
|
GlobalProperties = map[string]bool{}
|
||||||
|
)
|
||||||
|
|
||||||
// AppRoot returns the app root path
|
// AppRoot returns the app root path
|
||||||
func AppRoot(appName string) string {
|
func AppRoot(appName string) string {
|
||||||
dokkuRoot := MustGetEnv("DOKKU_ROOT")
|
dokkuRoot := MustGetEnv("DOKKU_ROOT")
|
||||||
@@ -279,9 +289,19 @@ func GetAppImageName(appName, imageTag, imageRepo string) (imageName string) {
|
|||||||
|
|
||||||
// IsDeployed returns true if given app has a running container
|
// IsDeployed returns true if given app has a running container
|
||||||
func IsDeployed(appName string) bool {
|
func IsDeployed(appName string) bool {
|
||||||
scheduler := GetAppScheduler(appName)
|
deployed := PropertyGetDefault("common", appName, "deployed", "")
|
||||||
_, err := PlugnTriggerOutput("scheduler-is-deployed", []string{scheduler, appName}...)
|
if deployed == "" {
|
||||||
return err == nil
|
deployed = "false"
|
||||||
|
scheduler := GetAppScheduler(appName)
|
||||||
|
_, err := PlugnTriggerOutput("scheduler-is-deployed", []string{scheduler, appName}...)
|
||||||
|
if err == nil {
|
||||||
|
deployed = "true"
|
||||||
|
}
|
||||||
|
|
||||||
|
CommandPropertySet("common", appName, "deployed", deployed, DefaultProperties, GlobalProperties)
|
||||||
|
}
|
||||||
|
|
||||||
|
return deployed == "true"
|
||||||
}
|
}
|
||||||
|
|
||||||
// MustGetEnv returns env variable or fails if it's not set
|
// MustGetEnv returns env variable or fails if it's not set
|
||||||
|
|||||||
@@ -66,7 +66,9 @@ func CopyFromImage(appName string, image string, source string, destination stri
|
|||||||
|
|
||||||
workDir := ""
|
workDir := ""
|
||||||
if !IsAbsPath(source) {
|
if !IsAbsPath(source) {
|
||||||
if IsImageHerokuishBased(image, appName) {
|
if IsImageCnbBased(image) {
|
||||||
|
workDir = "/workspace"
|
||||||
|
} else if IsImageHerokuishBased(image, appName) {
|
||||||
workDir = "/app"
|
workDir = "/app"
|
||||||
} else {
|
} else {
|
||||||
workDir, _ = DockerInspect(image, "{{.Config.WorkingDir}}")
|
workDir, _ = DockerInspect(image, "{{.Config.WorkingDir}}")
|
||||||
@@ -257,9 +259,42 @@ func DockerInspect(containerOrImageID, format string) (output string, err error)
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsImageCnbBased returns true if app image is based on cnb
|
||||||
|
func IsImageCnbBased(image string) bool {
|
||||||
|
if len(image) == 0 {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
output, err := DockerInspect(image, "{{index .Config.Labels \"io.buildpacks.stack.id\" }}")
|
||||||
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return output != ""
|
||||||
|
}
|
||||||
|
|
||||||
// IsImageHerokuishBased returns true if app image is based on herokuish
|
// IsImageHerokuishBased returns true if app image is based on herokuish
|
||||||
func IsImageHerokuishBased(image string, appName string) bool {
|
func IsImageHerokuishBased(image string, appName string) bool {
|
||||||
output, err := DockerInspect(image, "{{range .Config.Env}}{{if eq . \"USER=herokuishuser\" }}{{println .}}{{end}}{{end}}")
|
if len(image) == 0 {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if IsImageCnbBased(image) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
dokkuAppUser := ""
|
||||||
|
if len(appName) != 0 {
|
||||||
|
b, err := PlugnTriggerOutput("config-get", []string{appName, "DOKKU_APP_USER"}...)
|
||||||
|
if err == nil {
|
||||||
|
dokkuAppUser = strings.TrimSpace(string(b))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(dokkuAppUser) == 0 {
|
||||||
|
dokkuAppUser = "herokuishuser"
|
||||||
|
}
|
||||||
|
|
||||||
|
output, err := DockerInspect(image, fmt.Sprintf("{{range .Config.Env}}{{if eq . \"USER=%s\" }}{{println .}}{{end}}{{end}}", dokkuAppUser))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -148,14 +148,14 @@ dokku_log_exit() {
|
|||||||
dokku_log_fail_quiet() {
|
dokku_log_fail_quiet() {
|
||||||
declare desc="log fail formatter"
|
declare desc="log fail formatter"
|
||||||
if [[ -z "$DOKKU_QUIET_OUTPUT" ]]; then
|
if [[ -z "$DOKKU_QUIET_OUTPUT" ]]; then
|
||||||
echo " ! $@" 1>&2
|
echo " ! $*" 1>&2
|
||||||
fi
|
fi
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
dokku_log_fail() {
|
dokku_log_fail() {
|
||||||
declare desc="log fail formatter"
|
declare desc="log fail formatter"
|
||||||
echo " ! $@" 1>&2
|
echo " ! $*" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -477,10 +477,10 @@ copy_from_image() {
|
|||||||
|
|
||||||
if verify_image "$IMAGE"; then
|
if verify_image "$IMAGE"; then
|
||||||
if ! is_abs_path "$SRC_FILE"; then
|
if ! is_abs_path "$SRC_FILE"; then
|
||||||
if is_image_herokuish_based "$IMAGE" "$APP"; then
|
if is_image_cnb_based "$IMAGE"; then
|
||||||
WORKDIR="/app"
|
|
||||||
elif is_image_cnb_based "$IMAGE"; then
|
|
||||||
WORKDIR="/workspace"
|
WORKDIR="/workspace"
|
||||||
|
elif is_image_herokuish_based "$IMAGE" "$APP"; then
|
||||||
|
WORKDIR="/app"
|
||||||
else
|
else
|
||||||
WORKDIR="$("$DOCKER_BIN" image inspect --format '{{.Config.WorkingDir}}' "$IMAGE")"
|
WORKDIR="$("$DOCKER_BIN" image inspect --format '{{.Config.WorkingDir}}' "$IMAGE")"
|
||||||
fi
|
fi
|
||||||
@@ -577,10 +577,8 @@ get_app_running_container_types() {
|
|||||||
is_deployed() {
|
is_deployed() {
|
||||||
declare desc="return 0 if given app has a running container"
|
declare desc="return 0 if given app has a running container"
|
||||||
local APP="$1"
|
local APP="$1"
|
||||||
source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
|
||||||
|
|
||||||
local DOKKU_SCHEDULER=$(get_app_scheduler "$APP")
|
"$PLUGIN_CORE_AVAILABLE_PATH/common/common" --quiet is-deployed "$APP"
|
||||||
plugn trigger scheduler-is-deployed "$DOKKU_SCHEDULER" "$APP"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
is_container_running() {
|
is_container_running() {
|
||||||
@@ -919,7 +917,7 @@ get_app_urls() {
|
|||||||
if [[ -n "$urls" ]]; then
|
if [[ -n "$urls" ]]; then
|
||||||
echo "$urls" | sort
|
echo "$urls" | sort
|
||||||
else
|
else
|
||||||
internal_get_app_urls "$URL_TYPE" "$APP"
|
internal_get_app_urls "$URL_TYPE" "$APP" | sort
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,5 +6,6 @@ require (
|
|||||||
github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0 // indirect
|
github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0 // indirect
|
||||||
github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27
|
github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27
|
||||||
github.com/ryanuber/columnize v1.1.2-0.20190319233515-9e6335e58db3
|
github.com/ryanuber/columnize v1.1.2-0.20190319233515-9e6335e58db3
|
||||||
|
github.com/spf13/pflag v1.0.5 // indirect
|
||||||
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a
|
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -4,5 +4,7 @@ github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 h1:HHUr4P/aKh4qu
|
|||||||
github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE=
|
github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE=
|
||||||
github.com/ryanuber/columnize v1.1.2-0.20190319233515-9e6335e58db3 h1:utdYOikI1XjNtTFGCwSM6OmFJblU4ld4gACoJsbadJg=
|
github.com/ryanuber/columnize v1.1.2-0.20190319233515-9e6335e58db3 h1:utdYOikI1XjNtTFGCwSM6OmFJblU4ld4gACoJsbadJg=
|
||||||
github.com/ryanuber/columnize v1.1.2-0.20190319233515-9e6335e58db3/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
github.com/ryanuber/columnize v1.1.2-0.20190319233515-9e6335e58db3/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
||||||
|
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
||||||
|
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||||
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a h1:DcqTD9SDLc+1P/r1EmRBwnVsrOwW+kk2vWf9n+1sGhs=
|
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a h1:DcqTD9SDLc+1P/r1EmRBwnVsrOwW+kk2vWf9n+1sGhs=
|
||||||
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[plugin]
|
[plugin]
|
||||||
description = "dokku core common plugin"
|
description = "dokku core common plugin"
|
||||||
version = "0.23.2"
|
version = "0.23.9"
|
||||||
[plugin.config]
|
[plugin.config]
|
||||||
|
|||||||
34
plugins/common/src/common/common.go
Normal file
34
plugins/common/src/common/common.go
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/dokku/dokku/plugins/common"
|
||||||
|
flag "github.com/spf13/pflag"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
quiet := flag.Bool("quiet", false, "--quiet: set DOKKU_QUIET_OUTPUT=1")
|
||||||
|
flag.Parse()
|
||||||
|
cmd := flag.Arg(0)
|
||||||
|
|
||||||
|
if *quiet {
|
||||||
|
os.Setenv("DOKKU_QUIET_OUTPUT", "1")
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
switch cmd {
|
||||||
|
case "is-deployed":
|
||||||
|
appName := flag.Arg(1)
|
||||||
|
if !common.IsDeployed(appName) {
|
||||||
|
err = fmt.Errorf("App %v not deployed", appName)
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
err = fmt.Errorf("Invalid common command call: %v", cmd)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
common.LogFailQuiet(err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
35
plugins/common/src/triggers/triggers.go
Normal file
35
plugins/common/src/triggers/triggers.go
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/dokku/dokku/plugins/common"
|
||||||
|
)
|
||||||
|
|
||||||
|
// main entrypoint to all triggers
|
||||||
|
func main() {
|
||||||
|
parts := strings.Split(os.Args[0], "/")
|
||||||
|
trigger := parts[len(parts)-1]
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
|
var err error
|
||||||
|
switch trigger {
|
||||||
|
case "core-post-deploy":
|
||||||
|
appName := flag.Arg(0)
|
||||||
|
err = common.TriggerCorePostDeploy(appName)
|
||||||
|
case "install":
|
||||||
|
err = common.TriggerInstall()
|
||||||
|
case "post-delete":
|
||||||
|
appName := flag.Arg(0)
|
||||||
|
err = common.TriggerPostDelete(appName)
|
||||||
|
default:
|
||||||
|
common.LogFail(fmt.Sprintf("Invalid plugin trigger call: %s", trigger))
|
||||||
|
}
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
common.LogFail(err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
39
plugins/common/triggers.go
Normal file
39
plugins/common/triggers.go
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
package common
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
// TriggerCorePostDeploy associates the container with a specified network
|
||||||
|
func TriggerCorePostDeploy(appName string) error {
|
||||||
|
quiet := os.Getenv("DOKKU_QUIET_OUTPUT")
|
||||||
|
os.Setenv("DOKKU_QUIET_OUTPUT", "1")
|
||||||
|
CommandPropertySet("common", appName, "deployed", "true", DefaultProperties, GlobalProperties)
|
||||||
|
os.Setenv("DOKKU_QUIET_OUTPUT", quiet)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// TriggerInstall runs the install step for the common plugin
|
||||||
|
func TriggerInstall() error {
|
||||||
|
if err := PropertySetup("common"); err != nil {
|
||||||
|
return fmt.Errorf("Unable to install the common plugin: %s", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
apps, err := DokkuApps()
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// migrate all is-deployed values from trigger to property
|
||||||
|
for _, appName := range apps {
|
||||||
|
IsDeployed(appName)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// TriggerPostDelete destroys the common property for a given app container
|
||||||
|
func TriggerPostDelete(appName string) error {
|
||||||
|
return PropertyDestroy("common", appName)
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
SUBCOMMANDS = subcommands/bundle subcommands/clear subcommands/export subcommands/get subcommands/keys subcommands/show subcommands/set subcommands/unset
|
SUBCOMMANDS = subcommands/bundle subcommands/clear subcommands/export subcommands/get subcommands/keys subcommands/show subcommands/set subcommands/unset
|
||||||
TRIGGERS = triggers/config-get triggers/config-get-global
|
TRIGGERS = triggers/config-export triggers/config-get triggers/config-get-global
|
||||||
BUILD = commands subcommands triggers
|
BUILD = commands subcommands triggers
|
||||||
PLUGIN_NAME = config
|
PLUGIN_NAME = config
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,12 @@ trigger-config-docker-args() {
|
|||||||
STDIN=$(cat)
|
STDIN=$(cat)
|
||||||
trigger="$0 config_docker_args"
|
trigger="$0 config_docker_args"
|
||||||
|
|
||||||
|
if is_image_cnb_based "$IMAGE"; then
|
||||||
|
ENV_ARGS="$(config_export app "$APP" --format docker-args-keys --merged)"
|
||||||
|
echo -n "$STDIN $ENV_ARGS"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
if ! is_image_herokuish_based "$IMAGE" "$APP"; then
|
if ! is_image_herokuish_based "$IMAGE" "$APP"; then
|
||||||
ENV_ARGS="$(config_export app "$APP" --format docker-args --merged)"
|
ENV_ARGS="$(config_export app "$APP" --format docker-args --merged)"
|
||||||
echo -n "$STDIN $ENV_ARGS"
|
echo -n "$STDIN $ENV_ARGS"
|
||||||
|
|||||||
@@ -24,8 +24,10 @@ const (
|
|||||||
ExportFormatExports ExportFormat = iota
|
ExportFormatExports ExportFormat = iota
|
||||||
//ExportFormatEnvfile format: dotenv file
|
//ExportFormatEnvfile format: dotenv file
|
||||||
ExportFormatEnvfile
|
ExportFormatEnvfile
|
||||||
//ExportFormatDockerArgs format: --env args for docker
|
//ExportFormatDockerArgs format: --env KEY=VALUE args for docker
|
||||||
ExportFormatDockerArgs
|
ExportFormatDockerArgs
|
||||||
|
//ExportFormatDockerArgsKeys format: --env KEY args for docker
|
||||||
|
ExportFormatDockerArgsKeys
|
||||||
//ExportFormatShell format: env arguments for shell
|
//ExportFormatShell format: env arguments for shell
|
||||||
ExportFormatShell
|
ExportFormatShell
|
||||||
//ExportFormatPretty format: pretty-printed in columns
|
//ExportFormatPretty format: pretty-printed in columns
|
||||||
@@ -171,6 +173,8 @@ func (e *Env) Export(format ExportFormat) string {
|
|||||||
return e.EnvfileString()
|
return e.EnvfileString()
|
||||||
case ExportFormatDockerArgs:
|
case ExportFormatDockerArgs:
|
||||||
return e.DockerArgsString()
|
return e.DockerArgsString()
|
||||||
|
case ExportFormatDockerArgsKeys:
|
||||||
|
return e.DockerArgsKeysString()
|
||||||
case ExportFormatShell:
|
case ExportFormatShell:
|
||||||
return e.ShellString()
|
return e.ShellString()
|
||||||
case ExportFormatPretty:
|
case ExportFormatPretty:
|
||||||
@@ -201,6 +205,16 @@ func (e *Env) DockerArgsString() string {
|
|||||||
return e.stringWithPrefixAndSeparator("--env=", " ")
|
return e.stringWithPrefixAndSeparator("--env=", " ")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//DockerArgsKeysString gets the contents of this Env in the form -env=KEY --env...
|
||||||
|
func (e *Env) DockerArgsKeysString() string {
|
||||||
|
keys := e.Keys()
|
||||||
|
entries := make([]string, len(keys))
|
||||||
|
for i, k := range keys {
|
||||||
|
entries[i] = fmt.Sprintf("%s%s", "--env=", k)
|
||||||
|
}
|
||||||
|
return strings.Join(entries, " ")
|
||||||
|
}
|
||||||
|
|
||||||
//JSONString returns the contents of this Env as a key/value json object
|
//JSONString returns the contents of this Env as a key/value json object
|
||||||
func (e *Env) JSONString() string {
|
func (e *Env) JSONString() string {
|
||||||
data, err := json.Marshal(e.Map())
|
data, err := json.Marshal(e.Map())
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ func TestExport(t *testing.T) {
|
|||||||
e, _ := newEnvFromString("BAR='BAZ'\nFOO='b'ar '\nBAZ='a\\nb'")
|
e, _ := newEnvFromString("BAR='BAZ'\nFOO='b'ar '\nBAZ='a\\nb'")
|
||||||
Expect(e.Export(ExportFormatEnvfile)).To(Equal("BAR=\"BAZ\"\nBAZ=\"a\\nb\"\nFOO=\"b'ar \""))
|
Expect(e.Export(ExportFormatEnvfile)).To(Equal("BAR=\"BAZ\"\nBAZ=\"a\\nb\"\nFOO=\"b'ar \""))
|
||||||
Expect(e.Export(ExportFormatDockerArgs)).To(Equal("--env=BAR='BAZ' --env=BAZ='a\nb' --env=FOO='b'\\''ar '"))
|
Expect(e.Export(ExportFormatDockerArgs)).To(Equal("--env=BAR='BAZ' --env=BAZ='a\nb' --env=FOO='b'\\''ar '"))
|
||||||
|
Expect(e.Export(ExportFormatDockerArgsKeys)).To(Equal("--env=BAR --env=BAZ --env=FOO"))
|
||||||
Expect(e.Export(ExportFormatShell)).To(Equal("BAR='BAZ' BAZ='a\nb' FOO='b'\\''ar '"))
|
Expect(e.Export(ExportFormatShell)).To(Equal("BAR='BAZ' BAZ='a\nb' FOO='b'\\''ar '"))
|
||||||
Expect(e.Export(ExportFormatExports)).To(Equal("export BAR='BAZ'\nexport BAZ='a\nb'\nexport FOO='b'\\''ar '"))
|
Expect(e.Export(ExportFormatExports)).To(Equal("export BAR='BAZ'\nexport BAZ='a\nb'\nexport FOO='b'\\''ar '"))
|
||||||
Expect(e.Export(ExportFormatPretty)).To(Equal("BAR: BAZ\nBAZ: a\nb\nFOO: b'ar"))
|
Expect(e.Export(ExportFormatPretty)).To(Equal("BAR: BAZ\nBAZ: a\nb\nFOO: b'ar"))
|
||||||
|
|||||||
38
plugins/config/functions.go
Normal file
38
plugins/config/functions.go
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
package config
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
func export(appName string, global bool, merged bool, format string) error {
|
||||||
|
appName, err := getAppNameOrGlobal(appName, global)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
env := getEnvironment(appName, merged)
|
||||||
|
exportType := ExportFormatExports
|
||||||
|
suffix := "\n"
|
||||||
|
|
||||||
|
exportTypes := map[string]ExportFormat{
|
||||||
|
"exports": ExportFormatExports,
|
||||||
|
"envfile": ExportFormatEnvfile,
|
||||||
|
"docker-args": ExportFormatDockerArgs,
|
||||||
|
"docker-args-keys": ExportFormatDockerArgsKeys,
|
||||||
|
"shell": ExportFormatShell,
|
||||||
|
"pretty": ExportFormatPretty,
|
||||||
|
"json": ExportFormatJSON,
|
||||||
|
"json-list": ExportFormatJSONList,
|
||||||
|
}
|
||||||
|
|
||||||
|
exportType, ok := exportTypes[format]
|
||||||
|
if !ok {
|
||||||
|
return fmt.Errorf("Unknown export format: %v", format)
|
||||||
|
}
|
||||||
|
|
||||||
|
if exportType == ExportFormatShell {
|
||||||
|
suffix = " "
|
||||||
|
}
|
||||||
|
|
||||||
|
exported := env.Export(exportType)
|
||||||
|
fmt.Print(exported + suffix)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
[plugin]
|
[plugin]
|
||||||
description = "dokku core config plugin"
|
description = "dokku core config plugin"
|
||||||
version = "0.23.2"
|
version = "0.23.9"
|
||||||
[plugin.config]
|
[plugin.config]
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ func main() {
|
|||||||
args := flag.NewFlagSet("config:export", flag.ExitOnError)
|
args := flag.NewFlagSet("config:export", flag.ExitOnError)
|
||||||
global := args.Bool("global", false, "--global: use the global environment")
|
global := args.Bool("global", false, "--global: use the global environment")
|
||||||
merged := args.Bool("merged", false, "--merged: merge app environment and global environment")
|
merged := args.Bool("merged", false, "--merged: merge app environment and global environment")
|
||||||
format := args.String("format", "exports", "--format: [ exports | envfile | docker-args | shell | pretty | json | json-list ] which format to export as)")
|
format := args.String("format", "exports", "--format: [ exports | envfile | docker-args | docker-args-keys | shell | pretty | json | json-list ] which format to export as)")
|
||||||
args.Parse(os.Args[2:])
|
args.Parse(os.Args[2:])
|
||||||
if !*global {
|
if !*global {
|
||||||
appName = args.Arg(0)
|
appName = args.Arg(0)
|
||||||
|
|||||||
@@ -18,6 +18,12 @@ func main() {
|
|||||||
|
|
||||||
var err error
|
var err error
|
||||||
switch trigger {
|
switch trigger {
|
||||||
|
case "config-export":
|
||||||
|
appName := flag.Arg(0)
|
||||||
|
global := flag.Arg(1)
|
||||||
|
merged := flag.Arg(2)
|
||||||
|
format := flag.Arg(3)
|
||||||
|
config.TriggerConfigExport(appName, global, merged, format)
|
||||||
case "config-get":
|
case "config-get":
|
||||||
appName := flag.Arg(0)
|
appName := flag.Arg(0)
|
||||||
key := flag.Arg(1)
|
key := flag.Arg(1)
|
||||||
|
|||||||
@@ -33,37 +33,7 @@ func CommandClear(appName string, global bool, noRestart bool) error {
|
|||||||
|
|
||||||
// CommandExport implements config:export
|
// CommandExport implements config:export
|
||||||
func CommandExport(appName string, global bool, merged bool, format string) error {
|
func CommandExport(appName string, global bool, merged bool, format string) error {
|
||||||
appName, err := getAppNameOrGlobal(appName, global)
|
return export(appName, global, merged, format)
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
env := getEnvironment(appName, merged)
|
|
||||||
exportType := ExportFormatExports
|
|
||||||
suffix := "\n"
|
|
||||||
|
|
||||||
exportTypes := map[string]ExportFormat{
|
|
||||||
"exports": ExportFormatExports,
|
|
||||||
"envfile": ExportFormatEnvfile,
|
|
||||||
"docker-args": ExportFormatDockerArgs,
|
|
||||||
"shell": ExportFormatShell,
|
|
||||||
"pretty": ExportFormatPretty,
|
|
||||||
"json": ExportFormatJSON,
|
|
||||||
"json-list": ExportFormatJSONList,
|
|
||||||
}
|
|
||||||
|
|
||||||
exportType, ok := exportTypes[format]
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("Unknown export format: %v", format)
|
|
||||||
}
|
|
||||||
|
|
||||||
if exportType == ExportFormatShell {
|
|
||||||
suffix = " "
|
|
||||||
}
|
|
||||||
|
|
||||||
exported := env.Export(exportType)
|
|
||||||
fmt.Print(exported + suffix)
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// CommandGet implements config:get
|
// CommandGet implements config:get
|
||||||
|
|||||||
@@ -1,6 +1,23 @@
|
|||||||
package config
|
package config
|
||||||
|
|
||||||
import "fmt"
|
import (
|
||||||
|
"fmt"
|
||||||
|
"strconv"
|
||||||
|
)
|
||||||
|
|
||||||
|
// TriggerConfigExport returns a global config value by key
|
||||||
|
func TriggerConfigExport(appName string, global string, merged string, format string) error {
|
||||||
|
g, err := strconv.ParseBool(global)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
m, err := strconv.ParseBool(merged)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return export(appName, g, m, format)
|
||||||
|
}
|
||||||
|
|
||||||
// TriggerConfigGet returns an app config value by key
|
// TriggerConfigGet returns an app config value by key
|
||||||
func TriggerConfigGet(appName string, key string) error {
|
func TriggerConfigGet(appName string, key string) error {
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ func (t templateCommand) CronCommand() string {
|
|||||||
return t.AltCommand
|
return t.AltCommand
|
||||||
}
|
}
|
||||||
|
|
||||||
return fmt.Sprintf("dokku --rm run --cron-id %s %s", t.ID, t.App, t.Command)
|
return fmt.Sprintf("dokku --rm run --cron-id %s %s %s", t.ID, t.App, t.Command)
|
||||||
}
|
}
|
||||||
|
|
||||||
func fetchCronEntries(appName string) ([]templateCommand, error) {
|
func fetchCronEntries(appName string) ([]templateCommand, error) {
|
||||||
@@ -116,7 +116,6 @@ func writeCronEntries() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
b, _ := common.PlugnTriggerOutput("cron-entries", "docker-local")
|
b, _ := common.PlugnTriggerOutput("cron-entries", "docker-local")
|
||||||
common.Log(fmt.Sprintf("output: %s", string(b)))
|
|
||||||
for _, line := range strings.Split(strings.TrimSpace(string(b[:])), "\n") {
|
for _, line := range strings.Split(strings.TrimSpace(string(b[:])), "\n") {
|
||||||
if strings.TrimSpace(line) == "" {
|
if strings.TrimSpace(line) == "" {
|
||||||
continue
|
continue
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[plugin]
|
[plugin]
|
||||||
description = "dokku core cron plugin"
|
description = "dokku core cron plugin"
|
||||||
version = "0.23.2"
|
version = "0.23.9"
|
||||||
[plugin.config]
|
[plugin.config]
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ get_phase_file_path() {
|
|||||||
get_phases() {
|
get_phases() {
|
||||||
declare desc="returns array of passed passes if all are in allowed array"
|
declare desc="returns array of passed passes if all are in allowed array"
|
||||||
local passed_phases_list="$1"
|
local passed_phases_list="$1"
|
||||||
|
# shellcheck disable=SC2001
|
||||||
local -r phases_allowed=$(sed -e 's/ /\|/g' <<<"${AVAILABLE_PHASES[@]}")
|
local -r phases_allowed=$(sed -e 's/ /\|/g' <<<"${AVAILABLE_PHASES[@]}")
|
||||||
local phase
|
local phase
|
||||||
local passed_phases
|
local passed_phases
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ cmd-docker-options-help() {
|
|||||||
local plugin_name="docker-options"
|
local plugin_name="docker-options"
|
||||||
local plugin_description="Manage docker options for an app"
|
local plugin_description="Manage docker options for an app"
|
||||||
|
|
||||||
if [[ "$CMD" == "$plugin_name:help" ]]; then
|
if [[ "$CMD" == "${plugin_name}:help" ]]; then
|
||||||
echo -e "Usage: dokku $plugin_name[:COMMAND]"
|
echo -e "Usage: dokku ${plugin_name}[:COMMAND]"
|
||||||
echo ''
|
echo ''
|
||||||
echo "$plugin_description"
|
echo "$plugin_description"
|
||||||
echo ''
|
echo ''
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[plugin]
|
[plugin]
|
||||||
description = "dokku core docker-options plugin"
|
description = "dokku core docker-options plugin"
|
||||||
version = "0.23.2"
|
version = "0.23.9"
|
||||||
[plugin.config]
|
[plugin.config]
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ domains_add() {
|
|||||||
done
|
done
|
||||||
|
|
||||||
for DOMAIN in "$@"; do
|
for DOMAIN in "$@"; do
|
||||||
if grep -x --line-regexp --fixed-strings "$DOMAIN" "$APP_VHOST_PATH" 2> /dev/null; then
|
if grep -x --line-regexp --fixed-strings "$DOMAIN" "$APP_VHOST_PATH" 2>/dev/null; then
|
||||||
dokku_log_info1 "Skipping: $DOMAIN already added to $APP"
|
dokku_log_info1 "Skipping: $DOMAIN already added to $APP"
|
||||||
else
|
else
|
||||||
echo "$DOMAIN" >>"$APP_VHOST_PATH"
|
echo "$DOMAIN" >>"$APP_VHOST_PATH"
|
||||||
@@ -149,7 +149,7 @@ domains_add_global() {
|
|||||||
done
|
done
|
||||||
|
|
||||||
for DOMAIN in "$@"; do
|
for DOMAIN in "$@"; do
|
||||||
if grep -q --line-regexp --fixed-strings "$DOMAIN" "$GLOBAL_VHOST_PATH" 2> /dev/null; then
|
if grep -q --line-regexp --fixed-strings "$DOMAIN" "$GLOBAL_VHOST_PATH" 2>/dev/null; then
|
||||||
dokku_log_info1 "Skipping $DOMAIN: already added"
|
dokku_log_info1 "Skipping $DOMAIN: already added"
|
||||||
else
|
else
|
||||||
echo "$DOMAIN" >>"$GLOBAL_VHOST_PATH"
|
echo "$DOMAIN" >>"$GLOBAL_VHOST_PATH"
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ cmd-domains-help() {
|
|||||||
local plugin_name="domains"
|
local plugin_name="domains"
|
||||||
local plugin_description="Manage domains used by the proxy"
|
local plugin_description="Manage domains used by the proxy"
|
||||||
|
|
||||||
if [[ "$CMD" == "$plugin_name:help" ]]; then
|
if [[ "$CMD" == "${plugin_name}:help" ]]; then
|
||||||
echo -e "Usage: dokku $plugin_name[:COMMAND]"
|
echo -e "Usage: dokku ${plugin_name}[:COMMAND]"
|
||||||
echo ''
|
echo ''
|
||||||
echo "$plugin_description"
|
echo "$plugin_description"
|
||||||
echo ''
|
echo ''
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user