Compare commits

...

63 Commits

Author SHA1 Message Date
Jose Diaz-Gonzalez
fd57944bd3 Release 1.38.0
Some checks failed
tagged-release / tagged-release (push) Has been cancelled
2024-11-24 22:18:59 -05:00
Jose Diaz-Gonzalez
86156712f6 Merge pull request #216 from dokku/use-gpg-public-key-encryption
feat: implement GPG Public Key encryption support
2024-11-24 20:59:13 -05:00
Jose Diaz-Gonzalez
a668a12049 feat: implement GPG Public Key encryption support 2024-11-24 20:21:59 -05:00
Jose Diaz-Gonzalez
0aa0c7e242 Merge pull request #215 from dokku/enable-image-overrides
feat: enable env overrides for support images and update all to latest
2024-11-24 19:58:35 -05:00
Jose Diaz-Gonzalez
da11b65a68 feat: enable env overrides for support images and update all to latest 2024-11-24 19:15:23 -05:00
Jose Diaz-Gonzalez
fc965d7890 Release 1.37.2
Some checks failed
tagged-release / tagged-release (push) Has been cancelled
2024-11-02 23:25:56 -04:00
Jose Diaz-Gonzalez
eb22ab9123 Merge pull request #214 from dokku/dependabot/docker/mongo-8.0.3
chore(deps): bump mongo from 8.0.1 to 8.0.3
2024-11-02 23:25:42 -04:00
dependabot[bot]
5e56529fd7 chore(deps): bump mongo from 8.0.1 to 8.0.3
Bumps mongo from 8.0.1 to 8.0.3.

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-28 13:53:47 +00:00
Jose Diaz-Gonzalez
c1f22f6b6f Release 1.37.1
Some checks failed
tagged-release / tagged-release (push) Has been cancelled
2024-10-10 10:37:40 -04:00
Jose Diaz-Gonzalez
bee327076a Merge pull request #213 from dokku/dependabot/docker/mongo-8.0.1
chore(deps): bump mongo from 8.0.0 to 8.0.1
2024-10-10 10:37:29 -04:00
dependabot[bot]
b62896a90d chore(deps): bump mongo from 8.0.0 to 8.0.1
Bumps mongo from 8.0.0 to 8.0.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-10 13:24:59 +00:00
Jose Diaz-Gonzalez
86a968774a Release 1.37.0
Some checks failed
tagged-release / tagged-release (push) Has been cancelled
2024-09-21 23:12:40 -04:00
Jose Diaz-Gonzalez
d844492956 Merge pull request #211 from dokku/dependabot/docker/mongo-8.0.0
chore(deps): bump mongo from 7.0.14 to 8.0.0
2024-09-21 23:12:26 -04:00
dependabot[bot]
def796e990 chore(deps): bump mongo from 7.0.14 to 8.0.0
Bumps mongo from 7.0.14 to 8.0.0.

---
updated-dependencies:
- dependency-name: mongo
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-20 13:07:43 +00:00
Jose Diaz-Gonzalez
b5e2f57e62 Release 1.36.12
Some checks failed
tagged-release / tagged-release (push) Has been cancelled
2024-09-13 21:15:52 -04:00
Jose Diaz-Gonzalez
c0a6297913 Merge pull request #210 from dokku/dependabot/docker/mongo-7.0.14
chore(deps): bump mongo from 7.0.12 to 7.0.14
2024-09-13 21:15:33 -04:00
dependabot[bot]
81a317b234 chore(deps): bump mongo from 7.0.12 to 7.0.14
Bumps mongo from 7.0.12 to 7.0.14.

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-27 13:11:35 +00:00
Jose Diaz-Gonzalez
02d965dc49 Release 1.36.11
Some checks failed
tagged-release / tagged-release (push) Has been cancelled
2024-06-30 13:48:20 -04:00
Jose Diaz-Gonzalez
1f0eb0a20f Merge pull request #209 from dokku/dependabot/docker/mongo-7.0.12
chore(deps): bump mongo from 7.0.9 to 7.0.12
2024-06-30 13:48:11 -04:00
dependabot[bot]
8ece099353 chore(deps): bump mongo from 7.0.9 to 7.0.12
Bumps mongo from 7.0.9 to 7.0.12.

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-29 07:50:45 +00:00
Jose Diaz-Gonzalez
ced339c017 Merge pull request #208 from dokku/exclude-SC1091
tests: exclude SC1091 from shellcheck rules
2024-06-29 03:48:42 -04:00
Jose Diaz-Gonzalez
0e9ffbbc0c tests: exclude SC1091 from shellcheck rules 2024-06-29 03:44:55 -04:00
Jose Diaz-Gonzalez
37329161ad Merge pull request #207 from dokku/fix-tests
fix: use .DNSNames instead of .Aliases in tests
2024-06-29 03:40:59 -04:00
Jose Diaz-Gonzalez
39cc395cdf fix: use .DNSNames instead of .Aliases in tests
Docker has changed their output in an unclear manner, but this is the correct way to check for what dns records are available for usage by apps.
2024-06-29 03:25:41 -04:00
Jose Diaz-Gonzalez
02b44673f3 Release 1.36.10
Some checks failed
tagged-release / tagged-release (push) Has been cancelled
2024-04-30 19:07:02 -04:00
Jose Diaz-Gonzalez
5c08db82e3 Merge pull request #205 from dokku/dependabot/docker/mongo-7.0.9
chore(deps): bump mongo from 7.0.8 to 7.0.9
2024-04-30 19:06:46 -04:00
dependabot[bot]
5478a9d261 chore(deps): bump mongo from 7.0.8 to 7.0.9
Bumps mongo from 7.0.8 to 7.0.9.

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-30 13:33:05 +00:00
Jose Diaz-Gonzalez
02faf41d0e Release 1.36.9
Some checks failed
tagged-release / tagged-release (push) Has been cancelled
2024-04-04 20:25:35 -04:00
Jose Diaz-Gonzalez
a98d498f2b Merge pull request #204 from dokku/dependabot/docker/mongo-7.0.8
chore(deps): bump mongo from 7.0.7 to 7.0.8
2024-04-04 20:25:24 -04:00
dependabot[bot]
a93f31763a chore(deps): bump mongo from 7.0.7 to 7.0.8
Bumps mongo from 7.0.7 to 7.0.8.

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-04 13:12:39 +00:00
Jose Diaz-Gonzalez
19b766960e Release 1.36.8
Some checks failed
tagged-release / tagged-release (push) Has been cancelled
2024-03-24 20:03:03 -04:00
Jose Diaz-Gonzalez
a2f568ee9f Merge pull request #202 from dokku/dependabot/docker/mongo-7.0.7
chore(deps): bump mongo from 7.0.6 to 7.0.7
2024-03-24 20:02:56 -04:00
dependabot[bot]
21280c5b1a chore(deps): bump mongo from 7.0.6 to 7.0.7
Bumps mongo from 7.0.6 to 7.0.7.

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-19 13:55:21 +00:00
Jose Diaz-Gonzalez
ee12f5064d Release 1.36.7
Some checks failed
tagged-release / tagged-release (push) Has been cancelled
2024-03-06 02:15:38 -05:00
Jose Diaz-Gonzalez
b6da231937 Merge pull request #201 from dokku/dependabot/docker/mongo-7.0.6
chore(deps): bump mongo from 7.0.5 to 7.0.6
2024-03-06 02:13:39 -05:00
dependabot[bot]
3f9cd66dde chore(deps): bump mongo from 7.0.5 to 7.0.6
Bumps mongo from 7.0.5 to 7.0.6.

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-01 13:39:43 +00:00
Jose Diaz-Gonzalez
bc04b423b8 Release 1.36.6
Some checks failed
tagged-release / tagged-release (push) Has been cancelled
2024-01-29 10:10:00 -05:00
Jose Diaz-Gonzalez
d2faf876c6 fix: use correct repository on arm64 ubuntu image 2024-01-29 10:09:17 -05:00
Jose Diaz-Gonzalez
ba5153e16c Release 1.36.5
Some checks failed
tagged-release / tagged-release (push) Has been cancelled
2024-01-29 08:35:48 -05:00
Jose Diaz-Gonzalez
4335963a43 Merge pull request #198 from dokku/dependabot/docker/mongo-7.0.5
chore(deps): bump mongo from 7.0.4 to 7.0.5
2024-01-29 08:35:40 -05:00
dependabot[bot]
dd10b8704e chore(deps): bump mongo from 7.0.4 to 7.0.5
Bumps mongo from 7.0.4 to 7.0.5.

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-09 13:31:56 +00:00
Jose Diaz-Gonzalez
ead449eb1f Merge pull request #197 from dokku/dependabot/github_actions/actions/upload-artifact-4
chore(deps): bump actions/upload-artifact from 3 to 4
2023-12-19 00:23:58 -05:00
dependabot[bot]
f83d6f1010 chore(deps): bump actions/upload-artifact from 3 to 4
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-15 13:15:17 +00:00
Jose Diaz-Gonzalez
93b5e4e061 Release 1.36.4
Some checks failed
tagged-release / tagged-release (push) Has been cancelled
2023-12-09 23:56:05 -05:00
Jose Diaz-Gonzalez
bfe7afdf99 docs: update docs and generation script 2023-12-09 23:55:46 -05:00
Jose Diaz-Gonzalez
7663ca66de chore: fix typo 2023-12-09 13:51:12 -05:00
Jose Diaz-Gonzalez
7d5ff6d1e1 chore: fix typo 2023-12-09 13:48:37 -05:00
Jose Diaz-Gonzalez
61140a5283 Release 1.36.3
Some checks failed
tagged-release / tagged-release (push) Has been cancelled
2023-12-09 13:45:32 -05:00
Jose Diaz-Gonzalez
40339d4cee Merge pull request #195 from dokku/dependabot/docker/mongo-7.0.4
chore(deps): bump mongo from 7.0.2 to 7.0.4
2023-12-09 13:45:02 -05:00
Jose Diaz-Gonzalez
5f11adaddf Merge pull request #196 from dokku/dependabot/github_actions/actions/setup-python-5
chore(deps): bump actions/setup-python from 4 to 5
2023-12-09 13:44:48 -05:00
dependabot[bot]
5c4cafe2a1 chore(deps): bump actions/setup-python from 4 to 5
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 5.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-06 13:26:25 +00:00
dependabot[bot]
fe834e5a01 chore(deps): bump mongo from 7.0.2 to 7.0.4
Bumps mongo from 7.0.2 to 7.0.4.

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-29 13:48:55 +00:00
Jose Diaz-Gonzalez
51ee0d0e03 Release 1.36.2
Some checks failed
tagged-release / tagged-release (push) Has been cancelled
2023-10-07 00:48:42 -04:00
Jose Diaz-Gonzalez
4c7d0b37f8 Merge pull request #193 from dokku/dependabot/docker/mongo-7.0.2
chore(deps): bump mongo from 7.0.1 to 7.0.2
2023-10-07 00:48:28 -04:00
dependabot[bot]
b12dc746c2 chore(deps): bump mongo from 7.0.1 to 7.0.2
Bumps mongo from 7.0.1 to 7.0.2.

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-03 13:39:21 +00:00
Jose Diaz-Gonzalez
1a55dc698e Release 1.36.1
Some checks failed
tagged-release / tagged-release (push) Has been cancelled
2023-09-09 22:41:44 -04:00
Jose Diaz-Gonzalez
45131b4e14 Release 1.36.0
Some checks failed
tagged-release / tagged-release (push) Has been cancelled
2023-09-09 22:39:48 -04:00
Jose Diaz-Gonzalez
bff0b6aded Merge pull request #191 from dokku/dependabot/docker/mongo-7.0.1
chore(deps): bump mongo from 7.0.0 to 7.0.1
2023-09-07 00:58:05 -04:00
dependabot[bot]
944e1ac433 chore(deps): bump mongo from 7.0.0 to 7.0.1
Bumps mongo from 7.0.0 to 7.0.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-07 04:27:44 +00:00
Jose Diaz-Gonzalez
35a5add342 Merge pull request #189 from dokku/dependabot/github_actions/actions/checkout-4
chore(deps): bump actions/checkout from 3 to 4
2023-09-07 00:27:00 -04:00
dependabot[bot]
f6a9a0cea6 chore(deps): bump actions/checkout from 3 to 4
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-07 03:24:54 +00:00
Jose Diaz-Gonzalez
3f795fab02 Merge pull request #192 from dokku/newer-ubuntu
feat: upgrade test suite from ubuntu 20.04 to 22.04
2023-09-06 23:24:12 -04:00
Jose Diaz-Gonzalez
eaaa3cb28f feat: upgrade test suite from ubuntu 20.04 to 22.04 2023-09-06 22:37:21 -04:00
17 changed files with 323 additions and 80 deletions

View File

@@ -17,16 +17,16 @@ concurrency:
jobs:
unit-tests-master:
name: unit-tests
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
env:
DOKKU_VERSION: master
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v4
- uses: actions/setup-python@v5
with:
python-version: '3.7.x'
@@ -51,7 +51,7 @@ jobs:
- run: make test
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
if: failure()
with:
name: tmp/test-results
@@ -59,16 +59,16 @@ jobs:
unit-tests-0_19_0:
name: unit-tests-0.19.0
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
env:
DOKKU_TAG: v0.19.0
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v4
- uses: actions/setup-python@v5
with:
python-version: '3.7.x'
@@ -93,7 +93,7 @@ jobs:
- run: make test
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
if: failure()
with:
name: tmp/test-results

View File

@@ -10,7 +10,7 @@ on:
jobs:
tagged-release:
name: tagged-release
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- uses: "marvinpinto/action-automatic-releases@v1.2.1"

View File

@@ -1 +1 @@
FROM mongo:7.0.0
FROM mongo:8.0.3

View File

@@ -1,5 +1,6 @@
HARDWARE = $(shell uname -m)
SYSTEM_NAME = $(shell uname -s | tr '[:upper:]' '[:lower:]')
ARCH = $(shell dpkg --print-architecture)
SHFMT_VERSION = 3.0.2
XUNIT_TO_GITHUB_VERSION = 0.3.0
XUNIT_READER_VERSION = 0.1.0
@@ -21,7 +22,11 @@ ifneq ($(shell shellcheck --version >/dev/null 2>&1 ; echo $$?),0)
ifeq ($(SYSTEM_NAME),darwin)
brew install shellcheck
else
sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse'
ifeq ($(ARCH),arm64)
sudo add-apt-repository 'deb http://ports.ubuntu.com/ubuntu-ports jammy-backports main restricted universe multiverse'
else
sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse'
endif
sudo rm -rf /var/lib/apt/lists/* && sudo apt-get clean
sudo apt-get update -qq && sudo apt-get install -qq -y shellcheck
endif

View File

@@ -1,6 +1,6 @@
# dokku mongo [![Build Status](https://img.shields.io/github/actions/workflow/status/dokku/dokku-mongo/ci.yml?branch=master&style=flat-square "Build Status")](https://github.com/dokku/dokku-mongo/actions/workflows/ci.yml?query=branch%3Amaster) [![IRC Network](https://img.shields.io/badge/irc-libera-blue.svg?style=flat-square "IRC Libera")](https://webchat.libera.chat/?channels=dokku)
Official mongo plugin for dokku. Currently defaults to installing [mongo 7.0.0](https://hub.docker.com/_/mongo/).
Official mongo plugin for dokku. Currently defaults to installing [mongo 8.0.3](https://hub.docker.com/_/mongo/).
## Requirements
@@ -24,8 +24,10 @@ mongo:backup-deauth <service> # remove backup authenticatio
mongo:backup-schedule <service> <schedule> <bucket-name> [--use-iam] # schedule a backup of the mongo service
mongo:backup-schedule-cat <service> # cat the contents of the configured backup cronfile for the service
mongo:backup-set-encryption <service> <passphrase> # set encryption for all future backups of mongo service
mongo:backup-set-public-key-encryption <service> <public-key-id> # set GPG Public Key encryption for all future backups of mongo service
mongo:backup-unschedule <service> # unschedule the backup of the mongo service
mongo:backup-unset-encryption <service> # unset encryption for future backups of the mongo service
mongo:backup-unset-public-key-encryption <service> # unset GPG Public Key encryption for future backups of the mongo service
mongo:clone <service> <new-service> [--clone-flags...] # create container <new-name> then copy data from <name> into <new-name>
mongo:connect <service> # connect to the service via the mongo connection tool
mongo:connect-admin <service> # connect via mongo to a mongo service as admin user
@@ -75,9 +77,9 @@ flags:
- `-m|--memory MEMORY`: container memory limit in megabytes (default: unlimited)
- `-N|--initial-network INITIAL_NETWORK`: the initial network to attach the service to
- `-p|--password PASSWORD`: override the user-level service password
- `-P|--post-create-network NETWORKS`: a comman-separated list of networks to attach the service container to after service creation
- `-P|--post-create-network NETWORKS`: a comma-separated list of networks to attach the service container to after service creation
- `-r|--root-password PASSWORD`: override the root-level service password
- `-S|--post-start-network NETWORKS`: a comman-separated list of networks to attach the service container to after service start
- `-S|--post-start-network NETWORKS`: a comma-separated list of networks to attach the service container to after service start
- `-s|--shm-size SHM_SIZE`: override shared memory size for mongo docker container
Create a mongo service named lollipop:
@@ -94,7 +96,7 @@ export MONGO_IMAGE_VERSION="${PLUGIN_IMAGE_VERSION}"
dokku mongo:create lollipop
```
You can also specify custom environment variables to start the mongo service in semi-colon separated form.
You can also specify custom environment variables to start the mongo service in semicolon-separated form.
```shell
export MONGO_CUSTOM_ENV="USER=alpha;HOST=beta"
@@ -152,7 +154,7 @@ dokku mongo:info lollipop --version
```shell
# usage
dokku mongo:list
dokku mongo:list
```
List all services:
@@ -458,9 +460,9 @@ flags:
- `-i|--image IMAGE`: the image name to start the service with
- `-I|--image-version IMAGE_VERSION`: the image version to start the service with
- `-N|--initial-network INITIAL_NETWORK`: the initial network to attach the service to
- `-P|--post-create-network NETWORKS`: a comman-separated list of networks to attach the service container to after service creation
- `-P|--post-create-network NETWORKS`: a comma-separated list of networks to attach the service container to after service creation
- `-R|--restart-apps "true"`: whether or not to force an app restart (default: false)
- `-S|--post-start-network NETWORKS`: a comman-separated list of networks to attach the service container to after service start
- `-S|--post-start-network NETWORKS`: a comma-separated list of networks to attach the service container to after service start
- `-s|--shm-size SHM_SIZE`: override shared memory size for mongo docker container
You can upgrade an existing service to a new image or image-version:
@@ -502,9 +504,9 @@ flags:
- `-m|--memory MEMORY`: container memory limit in megabytes (default: unlimited)
- `-N|--initial-network INITIAL_NETWORK`: the initial network to attach the service to
- `-p|--password PASSWORD`: override the user-level service password
- `-P|--post-create-network NETWORKS`: a comman-separated list of networks to attach the service container to after service creation
- `-P|--post-create-network NETWORKS`: a comma-separated list of networks to attach the service container to after service creation
- `-r|--root-password PASSWORD`: override the root-level service password
- `-S|--post-start-network NETWORKS`: a comman-separated list of networks to attach the service container to after service start
- `-S|--post-start-network NETWORKS`: a comma-separated list of networks to attach the service container to after service start
- `-s|--shm-size SHM_SIZE`: override shared memory size for mongo docker container
You can clone an existing service to a new one:
@@ -676,6 +678,19 @@ Set the GPG-compatible passphrase for encrypting backups for backups:
dokku mongo:backup-set-encryption lollipop
```
### set GPG Public Key encryption for all future backups of mongo service
```shell
# usage
dokku mongo:backup-set-public-key-encryption <service> <public-key-id>
```
Set the `GPG` Public Key for encrypting backups:
```shell
dokku mongo:backup-set-public-key-encryption lollipop
```
### unset encryption for future backups of the mongo service
```shell
@@ -689,6 +704,19 @@ Unset the `GPG` encryption passphrase for backups:
dokku mongo:backup-unset-encryption lollipop
```
### unset GPG Public Key encryption for future backups of the mongo service
```shell
# usage
dokku mongo:backup-unset-public-key-encryption <service>
```
Unset the `GPG` Public Key encryption for backups:
```shell
dokku mongo:backup-unset-public-key-encryption lollipop
```
### schedule a backup of the mongo service
```shell

2
Vagrantfile vendored
View File

@@ -1,7 +1,7 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
BOX_NAME = ENV["BOX_NAME"] || "bento/ubuntu-20.04"
BOX_NAME = ENV["BOX_NAME"] || "bento/ubuntu-22.04"
BOX_MEMORY = ENV["BOX_MEMORY"] || "2048"
DOKKU_VERSION = "master"

View File

@@ -1,15 +1,30 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from __future__ import print_function
import os
import re
def compile(service, version, variable, alias, image, scheme, ports, sponsors, options, unimplemented, dokku_version):
prefix = "\n\n".join([
header(service),
description(service, image, version),
])
def compile(
service,
version,
variable,
alias,
image,
scheme,
ports,
sponsors,
options,
unimplemented,
dokku_version,
):
prefix = "\n\n".join(
[
header(service),
description(service, image, version),
]
)
if len(sponsors) > 0:
prefix += "\n\n"
@@ -21,8 +36,19 @@ def compile(service, version, variable, alias, image, scheme, ports, sponsors, o
prefix,
requirements_section(dokku_version),
installation_section(service, dokku_version),
commands_section(service, variable, alias, image, scheme, ports, unimplemented),
usage_section(service, variable, alias, image, scheme, ports, options, unimplemented),
commands_section(
service, variable, alias, image, scheme, ports, unimplemented
),
usage_section(
service,
variable,
alias,
image,
scheme,
ports,
options,
unimplemented,
),
]
)
.replace("\n\n\n\n\n", "\n")
@@ -55,17 +81,25 @@ def sponsors_section(service, sponsors):
if len(sponsors) == 0:
return ""
sponsor_data = ["## Sponsors", "", f"The {service} plugin was generously sponsored by the following:", ""]
sponsor_data = [
"## Sponsors",
"",
f"The {service} plugin was generously sponsored by the following:",
"",
]
sponsor_data.extend([f"- [{s}](https://github.com/{s})" for s in sponsors])
return "\n".join(
sponsor_data
)
return "\n".join(sponsor_data)
def requirements_section(dokku_version):
return "\n".join(
["## Requirements", "", f"- dokku {dokku_version}", "- docker 1.8.x",]
[
"## Requirements",
"",
f"- dokku {dokku_version}",
"- docker 1.8.x",
]
)
@@ -115,17 +149,31 @@ def commands_section(service, variable, alias, image, scheme, ports, unimplement
return "\n".join(content)
def usage_section(service, variable, alias, image, scheme, ports, options, unimplemented):
def usage_section(
service, variable, alias, image, scheme, ports, options, unimplemented
):
return "\n\n".join(
[
"## Usage",
f"Help for any commands can be displayed by specifying the command as an argument to {service}:help. Plugin help output in conjunction with any files in the `docs/` folder is used to generate the plugin documentation. Please consult the `{service}:help` command for any undocumented commands.",
usage_intro(service, variable, alias, image, scheme, ports, options, unimplemented),
usage_lifecycle(service, variable, alias, image, scheme, ports, options, unimplemented),
usage_automation(service, variable, alias, image, scheme, ports, options, unimplemented),
usage_data_management(service, variable, alias, image, scheme, ports, options, unimplemented),
usage_backup(service, variable, alias, image, scheme, ports, options, unimplemented),
usage_docker_pull(service, variable, alias, image, scheme, ports, options, unimplemented),
usage_intro(
service, variable, alias, image, scheme, ports, options, unimplemented
),
usage_lifecycle(
service, variable, alias, image, scheme, ports, options, unimplemented
),
usage_automation(
service, variable, alias, image, scheme, ports, options, unimplemented
),
usage_data_management(
service, variable, alias, image, scheme, ports, options, unimplemented
),
usage_backup(
service, variable, alias, image, scheme, ports, options, unimplemented
),
usage_docker_pull(
service, variable, alias, image, scheme, ports, options, unimplemented
),
]
)
@@ -135,11 +183,22 @@ def usage_intro(service, variable, alias, image, scheme, ports, options, unimple
content = ["### Basic Usage"]
return fetch_commands_content(
service, variable, alias, image, scheme, ports, options, unimplemented, commands, content
service,
variable,
alias,
image,
scheme,
ports,
options,
unimplemented,
commands,
content,
)
def usage_lifecycle(service, variable, alias, image, scheme, ports, options, unimplemented):
def usage_lifecycle(
service, variable, alias, image, scheme, ports, options, unimplemented
):
commands = [
"connect",
"enter",
@@ -160,11 +219,22 @@ def usage_lifecycle(service, variable, alias, image, scheme, ports, options, uni
]
return fetch_commands_content(
service, variable, alias, image, scheme, ports, options, unimplemented, commands, content
service,
variable,
alias,
image,
scheme,
ports,
options,
unimplemented,
commands,
content,
)
def usage_automation(service, variable, alias, image, scheme, ports, options, unimplemented):
def usage_automation(
service, variable, alias, image, scheme, ports, options, unimplemented
):
commands = ["app-links", "clone", "exists", "linked", "links"]
content = [
"### Service Automation",
@@ -174,11 +244,22 @@ def usage_automation(service, variable, alias, image, scheme, ports, options, un
]
return fetch_commands_content(
service, variable, alias, image, scheme, ports, options, unimplemented, commands, content
service,
variable,
alias,
image,
scheme,
ports,
options,
unimplemented,
commands,
content,
)
def usage_data_management(service, variable, alias, image, scheme, ports, options, unimplemented):
def usage_data_management(
service, variable, alias, image, scheme, ports, options, unimplemented
):
commands = ["import", "export"]
content = [
"### Data Management",
@@ -188,17 +269,30 @@ def usage_data_management(service, variable, alias, image, scheme, ports, option
]
return fetch_commands_content(
service, variable, alias, image, scheme, ports, options, unimplemented, commands, content
service,
variable,
alias,
image,
scheme,
ports,
options,
unimplemented,
commands,
content,
)
def usage_backup(service, variable, alias, image, scheme, ports, options, unimplemented):
def usage_backup(
service, variable, alias, image, scheme, ports, options, unimplemented
):
commands = [
"backup-auth",
"backup-deauth",
"backup",
"backup-set-encryption",
"backup-set-public-key-encryption",
"backup-unset-encryption",
"backup-unset-public-key-encryption",
"backup-schedule",
"backup-schedule-cat",
"backup-unschedule",
@@ -215,11 +309,22 @@ def usage_backup(service, variable, alias, image, scheme, ports, options, unimpl
]
return fetch_commands_content(
service, variable, alias, image, scheme, ports, options, unimplemented, commands, content
service,
variable,
alias,
image,
scheme,
ports,
options,
unimplemented,
commands,
content,
)
def usage_docker_pull(service, variable, alias, image, scheme, ports, options, unimplemented):
def usage_docker_pull(
service, variable, alias, image, scheme, ports, options, unimplemented
):
service_prefix = service.upper()
return "\n".join(
[
@@ -233,11 +338,30 @@ def usage_docker_pull(service, variable, alias, image, scheme, ports, options, u
def fetch_commands_content(
service, variable, alias, image, scheme, ports, options, unimplemented, commands, content
service,
variable,
alias,
image,
scheme,
ports,
options,
unimplemented,
commands,
content,
):
i = 0
for command in commands:
output = command_help(command, service, variable, alias, image, scheme, ports, options, unimplemented)
output = command_help(
command,
service,
variable,
alias,
image,
scheme,
ports,
options,
unimplemented,
)
if output == "":
continue
content.append(output)
@@ -275,7 +399,9 @@ def parse_args(line):
return " ".join(arguments)
def command_help(command, service, variable, alias, image, scheme, ports, options, unimplemented):
def command_help(
command, service, variable, alias, image, scheme, ports, options, unimplemented
):
if command in unimplemented:
return ""
@@ -285,7 +411,7 @@ def command_help(command, service, variable, alias, image, scheme, ports, option
"",
"```shell",
"# usage",
f"dokku {service}:{command} {data['arguments_string']}",
f"dokku {service}:{command} {data['arguments_string']}".strip(),
"```",
]
@@ -442,11 +568,11 @@ def process_sentence(sentence_lines):
parts = []
for word in sentence.strip().split(" "):
if word.isupper() and len(word) > 1:
for ending in [':', '.']:
for ending in [":", "."]:
if word.endswith(ending):
word = '`{0}`{1}'.format(word[:-1], ending)
word = "`{0}`{1}".format(word[:-1], ending)
else:
word = '`{0}`'.format(word)
word = "`{0}`".format(word)
parts.append(word)
text.append(" ".join(parts))
@@ -491,10 +617,10 @@ def main():
with open("Dockerfile") as f:
for line in f.readlines():
if "FROM " in line:
image, version = line.split(" ")[1].split(":")
image = image.strip()
version = version.strip()
if "FROM " in line:
image, version = line.split(" ")[1].split(":")
image = image.strip()
version = version.strip()
with open("config") as f:
for line in f.readlines():
@@ -524,10 +650,22 @@ def main():
with open("plugin.toml") as f:
for line in f.readlines():
if line.startswith("sponsors"):
sponsors = re.search("\[([\"\w\s,_-]+)\]", line).group(1)
sponsors = [s.strip("\"") for s in sponsors.split(",")]
sponsors = re.search('\[(["\w\s,_-]+)\]', line).group(1)
sponsors = [s.strip('"') for s in sponsors.split(",")]
text = compile(service, version, variable, alias, image, scheme, ports, sponsors, options, unimplemented, "0.19.x+")
text = compile(
service,
version,
variable,
alias,
image,
scheme,
ports,
sponsors,
options,
unimplemented,
"0.19.x+",
)
base_path = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
readme_file = os.path.join(base_path, "README.md")

View File

@@ -308,6 +308,10 @@ service_backup() {
BACKUP_PARAMETERS="$BACKUP_PARAMETERS -e ENCRYPTION_KEY=$(cat "$BACKUP_ENCRYPTION_CONFIG_ROOT/ENCRYPTION_KEY")"
fi
if [[ -f "$BACKUP_ENCRYPTION_CONFIG_ROOT/ENCRYPT_WITH_PUBLIC_KEY_ID" ]]; then
BACKUP_PARAMETERS="$BACKUP_PARAMETERS -e ENCRYPT_WITH_PUBLIC_KEY_ID=$(cat "$BACKUP_ENCRYPTION_CONFIG_ROOT/ENCRYPT_WITH_PUBLIC_KEY_ID")"
fi
# shellcheck disable=SC2086
"$DOCKER_BIN" container run --rm $BACKUP_PARAMETERS "$PLUGIN_S3BACKUP_IMAGE"
}
@@ -433,6 +437,16 @@ service_backup_set_encryption() {
echo "$ENCRYPTION_KEY" >"${SERVICE_BACKUP_ENCRYPTION_ROOT}/ENCRYPTION_KEY"
}
service_backup_set_public_key_encryption() {
declare desc="set up backup GPG Public Key encryption"
declare SERVICE="$1" ENCRYPT_WITH_PUBLIC_KEY_ID="$2"
local SERVICE_ROOT="${PLUGIN_DATA_ROOT}/${SERVICE}"
local SERVICE_BACKUP_ENCRYPTION_ROOT="${SERVICE_ROOT}/backup-encryption/"
mkdir "$SERVICE_BACKUP_ENCRYPTION_ROOT"
echo "$ENCRYPT_WITH_PUBLIC_KEY_ID" >"${SERVICE_BACKUP_ENCRYPTION_ROOT}/ENCRYPT_WITH_PUBLIC_KEY_ID"
}
service_backup_unschedule() {
declare desc="unschedule the backup of the service"
declare SERVICE="$1"
@@ -450,6 +464,15 @@ service_backup_unset_encryption() {
rm -rf "$SERVICE_BACKUP_ENCRYPTION_ROOT"
}
service_backup_unset_encryption() {
declare desc="remove backup encryption"
declare SERVICE="$1"
local SERVICE_ROOT="${PLUGIN_DATA_ROOT}/${SERVICE}"
local SERVICE_BACKUP_ENCRYPTION_ROOT="${SERVICE_ROOT}/backup-encryption/"
rm -rf "$SERVICE_BACKUP_ENCRYPTION_ROOT"
}
service_container_rm() {
declare desc="stop a service and remove the running container"
declare SERVICE="$1"

8
config
View File

@@ -28,9 +28,9 @@ if [[ -n $DOKKU_API_VERSION ]]; then
export PLUGIN_BASE_PATH="$PLUGIN_ENABLED_PATH"
fi
export PLUGIN_BUSYBOX_IMAGE="busybox:1.34.1-uclibc"
export PLUGIN_AMBASSADOR_IMAGE="dokku/ambassador:0.5.0"
export PLUGIN_S3BACKUP_IMAGE="dokku/s3backup:0.14.0"
export PLUGIN_WAIT_IMAGE="dokku/wait:0.6.0"
export PLUGIN_BUSYBOX_IMAGE=${PLUGIN_BUSYBOX_IMAGE:=busybox:1.37.0-uclibc}
export PLUGIN_AMBASSADOR_IMAGE=${PLUGIN_AMBASSADOR_IMAGE:=dokku/ambassador:0.8.2}
export PLUGIN_S3BACKUP_IMAGE=${PLUGIN_S3BACKUP_IMAGE:=dokku/s3backup:0.18.0}
export PLUGIN_WAIT_IMAGE=${PLUGIN_WAIT_IMAGE:=dokku/wait:0.9.3}
export MONGO_CONFIG_OPTIONS=${MONGO_CONFIG_OPTIONS:=" --storageEngine wiredTiger --auth "}

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku mongo service plugin"
version = "1.35.0"
version = "1.38.0"
[plugin.config]

View File

@@ -0,0 +1,25 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
service-backup-set-public-key-encryption-cmd() {
#E set the GPG Public Key for encrypting backups
#E dokku $PLUGIN_COMMAND_PREFIX:backup-set-public-key-encryption lollipop
#A service, service to run command against
#A public-key-id, a GPG Public Key ID (or fingerprint) to use for encryption. Must be uploaded to the GPG keyserver beforehand.
declare desc="set GPG Public Key encryption for all future backups of $PLUGIN_SERVICE service"
local cmd="$PLUGIN_COMMAND_PREFIX:backup-set-public-key-encryption" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1" PUBLIC_KEY_ID="$2"
is_implemented_command "$cmd" || dokku_log_fail "Not yet implemented"
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a valid name for the service"
[[ -z "$PUBLIC_KEY_ID" ]] && dokku_log_fail "Please specify a valid GPG Public Key ID (or fingerprint)"
verify_service_name "$SERVICE"
service_backup_set_public_key_encryption "$SERVICE" "$PUBLIC_KEY_ID"
}
service-backup-set-public-key-encryption-cmd "$@"

View File

@@ -0,0 +1,23 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
service-backup-unset-public-key-encryption-cmd() {
#E unset the GPG Public Key encryption for backups
#E dokku $PLUGIN_COMMAND_PREFIX:backup-unset-public-key-encryption lollipop
#A service, service to run command against
declare desc="unset GPG Public Key encryption for future backups of the $PLUGIN_SERVICE service"
local cmd="$PLUGIN_COMMAND_PREFIX:backup-unset-public-key-encryption" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1"
is_implemented_command "$cmd" || dokku_log_fail "Not yet implemented" # TODO: [22.03.2024 by Mykola]
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a valid name for the service"
verify_service_name "$SERVICE"
service_backup_unset_public_key_encryption "$SERVICE" # TODO: [22.03.2024 by Mykola]
}
service-backup-unset-encryption-cmd "$@"

View File

@@ -17,9 +17,9 @@ service-clone-cmd() {
#F -m|--memory MEMORY, container memory limit in megabytes (default: unlimited)
#F -N|--initial-network INITIAL_NETWORK, the initial network to attach the service to
#F -p|--password PASSWORD, override the user-level service password
#F -P|--post-create-network NETWORKS, a comman-separated list of networks to attach the service container to after service creation
#F -P|--post-create-network NETWORKS, a comma-separated list of networks to attach the service container to after service creation
#F -r|--root-password PASSWORD, override the root-level service password
#F -S|--post-start-network NETWORKS, a comman-separated list of networks to attach the service container to after service start
#F -S|--post-start-network NETWORKS, a comma-separated list of networks to attach the service container to after service start
#F -s|--shm-size SHM_SIZE, override shared memory size for $PLUGIN_COMMAND_PREFIX docker container
declare desc="create container <new-name> then copy data from <name> into <new-name>"
local cmd="$PLUGIN_COMMAND_PREFIX:clone" argv=("$@")

View File

@@ -14,7 +14,7 @@ service-create-cmd() {
#E export ${PLUGIN_VARIABLE}_IMAGE_VERSION="${PLUGIN_IMAGE_VERSION}"
#E dokku $PLUGIN_COMMAND_PREFIX:create lollipop
#E you can also specify custom environment variables to start
#E the ${PLUGIN_COMMAND_PREFIX} service in semi-colon separated form.
#E the ${PLUGIN_COMMAND_PREFIX} service in semicolon-separated form.
#E export ${PLUGIN_VARIABLE}_CUSTOM_ENV="USER=alpha;HOST=beta"
#E dokku $PLUGIN_COMMAND_PREFIX:create lollipop
#A service, service to run command against
@@ -25,9 +25,9 @@ service-create-cmd() {
#F -m|--memory MEMORY, container memory limit in megabytes (default: unlimited)
#F -N|--initial-network INITIAL_NETWORK, the initial network to attach the service to
#F -p|--password PASSWORD, override the user-level service password
#F -P|--post-create-network NETWORKS, a comman-separated list of networks to attach the service container to after service creation
#F -P|--post-create-network NETWORKS, a comma-separated list of networks to attach the service container to after service creation
#F -r|--root-password PASSWORD, override the root-level service password
#F -S|--post-start-network NETWORKS, a comman-separated list of networks to attach the service container to after service start
#F -S|--post-start-network NETWORKS, a comma-separated list of networks to attach the service container to after service start
#F -s|--shm-size SHM_SIZE, override shared memory size for $PLUGIN_COMMAND_PREFIX docker container
declare desc="create a $PLUGIN_SERVICE service"
local cmd="$PLUGIN_COMMAND_PREFIX:create" argv=("$@")

View File

@@ -15,9 +15,9 @@ service-upgrade-cmd() {
#F -i|--image IMAGE, the image name to start the service with
#F -I|--image-version IMAGE_VERSION, the image version to start the service with
#F -N|--initial-network INITIAL_NETWORK, the initial network to attach the service to
#F -P|--post-create-network NETWORKS, a comman-separated list of networks to attach the service container to after service creation
#F -P|--post-create-network NETWORKS, a comma-separated list of networks to attach the service container to after service creation
#F -R|--restart-apps "true", whether or not to force an app restart (default: false)
#F -S|--post-start-network NETWORKS, a comman-separated list of networks to attach the service container to after service start
#F -S|--post-start-network NETWORKS, a comma-separated list of networks to attach the service container to after service start
#F -s|--shm-size SHM_SIZE, override shared memory size for $PLUGIN_COMMAND_PREFIX docker container
declare desc="upgrade service <service> to the specified versions"
local cmd="$PLUGIN_COMMAND_PREFIX:upgrade" argv=("$@")

View File

@@ -48,7 +48,7 @@ teardown() {
assert_output_contains bridge 0
assert_output_contains custom-network
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{range $k,$alias := $v.Aliases}}{{printf "alias:%s\n" $alias}}{{end}}{{end}}'
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{range $k,$alias := $v.DNSNames}}{{printf "alias:%s\n" $alias}}{{end}}{{end}}'
echo "output: $output"
echo "status: $status"
assert_success
@@ -120,7 +120,7 @@ teardown() {
assert_output_contains custom-network
assert_output_contains bridge
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{range $k,$alias := $v.Aliases}}{{printf "alias:%s\n" $alias}}{{end}}{{end}}'
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{range $k,$alias := $v.DNSNames}}{{printf "alias:%s\n" $alias}}{{end}}{{end}}'
echo "output: $output"
echo "status: $status"
assert_success
@@ -192,7 +192,7 @@ teardown() {
assert_output_contains bridge
assert_output_contains custom-network
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{range $k,$alias := $v.Aliases}}{{printf "alias:%s\n" $alias}}{{end}}{{end}}'
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{range $k,$alias := $v.DNSNames}}{{printf "alias:%s\n" $alias}}{{end}}{{end}}'
echo "output: $output"
echo "status: $status"
assert_success
@@ -258,7 +258,7 @@ teardown() {
assert_output_contains bridge
assert_output_contains custom-network
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.lsa -f '{{range $net,$v := .NetworkSettings.Networks}}{{range $k,$alias := $v.Aliases}}{{printf "alias:%s\n" $alias}}{{end}}{{end}}'
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.lsa -f '{{range $net,$v := .NetworkSettings.Networks}}{{range $k,$alias := $v.DNSNames}}{{printf "alias:%s\n" $alias}}{{end}}{{end}}'
echo "output: $output"
echo "status: $status"
assert_success

View File

@@ -1,4 +1,5 @@
# SC1090 - Can't follow non-constant source. Use a directive to specify location - https://github.com/koalaman/shellcheck/wiki/SC1090
# SC1091 - Not following - <https://github.com/koalaman/shellcheck/wiki/SC1091>
# SC2034 - Variable appears unused. Verify it or export it - https://github.com/koalaman/shellcheck/wiki/SC2034
# SC2155 - Declare and assign separately to avoid masking return values - https://github.com/koalaman/shellcheck/wiki/SC2155
# SC2206 - Quote to prevent word splitting/globbing, or split robustly with mapfile or read -a - https://github.com/koalaman/shellcheck/wiki/SC2206