# History ## 0.38.0 Install/update via the bootstrap script: ```shell wget -NP . https://dokku.com/install/v0.38.0/bootstrap.sh sudo DOKKU_TAG=v0.38.0 bash bootstrap.sh ``` See the [0.38.0 migration guide](/docs/appendices/0.38.0-migration-guide.md) for more information on migrating to 0.38.0. ### Bug Fixes - #8533: @josegonzalez Split env config and image pull secret into separate helm releases - #8530: @josegonzalez Split multi-flag input in docker-options - #8528: @josegonzalez Skip retiring images still in use by app containers - #8525: @josegonzalez Add launcher entrypoint for CNB images on dokku run and cron:run - #8522: @josegonzalez Only emit keda fallback when a non-cpu/memory trigger exists - #8515: @josegonzalez Fix vector mount directory config - #8508: @josegonzalez Preserve all domains when renaming an app - #8507: @josegonzalez Retire orphaned containers when scaling down ### New Features - #8538: @josegonzalez Add scheduler-aware named storage entries - #8527: @josegonzalez Accept --global on :report subcommands - #8524: @josegonzalez Pre-validate custom nginx.conf.sigil during core-post-extract - #8523: @josegonzalez Support resource limits on the build container - #8517: @josegonzalez Send SIGTERM to old containers immediately on deploy - #8516: @josegonzalez Scope docker-options to specific procfile processes - #8509: @josegonzalez Ship default catch-all site on fresh apt install - #8506: @josegonzalez Add --format json to git:report and nginx:report - #8505: @josegonzalez Add git:auth-status to check netrc match - #8493: @josegonzalez Generate 502 config for apps without web listeners - #8404: @josegonzalez Upgrade vector chart from 0.42.0 to 0.52.0 - #8403: @josegonzalez Upgrade ingress-nginx chart from 4.10.0 to 4.15.1 - #8402: @josegonzalez Upgrade keda to 2.19.0 and keda-add-ons-http to 0.12.2 - #8259: @josegonzalez Add post-create support for env key in app.json - #8157: @josegonzalez Add support for specifying buildpacks via app.json - #8154: @josegonzalez Enable live-restore by default when installing Dokku - #3697: @josegonzalez Migrate builds plugin to go and track per-build records ### Refactors - #8514: @josegonzalez Migrate docker-options subcommands to go - #6716: @josegonzalez Move app and global ENV files to consolidated config path ### Dependencies - #8541: @dependabot[bot] chore(deps): bump traefik from v3.6.14 to v3.6.15 in /plugins/traefik-vhosts - #8537: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.11.43 to 2.11.44 in /plugins/scheduler-k3s - #8535: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.39.1 to 1.40.0 in /plugins/common - #8529: @josegonzalez chore: bump dokku/netrc to v0.11.0 - #8520: @dependabot[bot] chore(deps): bump packaging from 26.1 to 26.2 in /docs/_build - #8510: @dependabot[bot] chore(deps): bump packaging from 26.1 to 26.2 in /docs/_build - #8503: @josegonzalez Bump dependency versions and add daily updater workflow - #8502: @josegonzalez Bump go version to 1.26.2 - #8495: @dependabot[bot] chore(deps): bump k8s.io/apimachinery from 0.35.4 to 0.36.0 in /plugins/scheduler-k3s - #8494: @dependabot[bot] chore(deps): bump dokku/openresty-docker-proxy from 0.9.3 to 0.10.0 in /plugins/openresty-vhosts - #8490: @dependabot[bot] chore(deps): bump k8s.io/kubernetes from 1.35.4 to 1.36.0 in /plugins/scheduler-k3s ### Other - #8498: @josegonzalez Migrate environment variables to plugin properties
118 lines
4.1 KiB
Markdown
118 lines
4.1 KiB
Markdown
# Docker Installation Notes
|
|
|
|
Pull the dokku/dokku image:
|
|
|
|
```shell
|
|
docker pull dokku/dokku:0.38.0
|
|
```
|
|
|
|
Next, run the image.
|
|
|
|
```shell
|
|
docker container run -d \
|
|
--env DOKKU_HOSTNAME=dokku.me \
|
|
--env DOKKU_HOST_ROOT=/var/lib/dokku/home/dokku \
|
|
--env DOKKU_LIB_HOST_ROOT=/var/lib/dokku/var/lib/dokku \
|
|
--name dokku \
|
|
--publish 3022:22 \
|
|
--publish 8080:80 \
|
|
--publish 8443:443 \
|
|
--volume /var/lib/dokku:/mnt/dokku \
|
|
--volume /var/run/docker.sock:/var/run/docker.sock \
|
|
dokku/dokku:0.38.0
|
|
```
|
|
|
|
Alternatively, you can use `docker-compose.yml`:
|
|
|
|
```yaml
|
|
services:
|
|
dokku:
|
|
image: dokku/dokku:0.38.0
|
|
container_name: dokku
|
|
network_mode: bridge
|
|
ports:
|
|
- "3022:22"
|
|
- "8080:80"
|
|
- "8443:443"
|
|
volumes:
|
|
- "/var/lib/dokku:/mnt/dokku"
|
|
- "/var/run/docker.sock:/var/run/docker.sock"
|
|
environment:
|
|
DOKKU_HOSTNAME: dokku.me
|
|
DOKKU_HOST_ROOT: /var/lib/dokku/home/dokku
|
|
DOKKU_LIB_HOST_ROOT: /var/lib/dokku/var/lib/dokku
|
|
restart: unless-stopped
|
|
```
|
|
|
|
The above command will start a new docker container that is ready when a message similar to `Runit started as PID 12345` appears.
|
|
|
|
Dokku is run in the following configuration:
|
|
|
|
- The global hostname is set to `dokku.me` on boot.
|
|
- The container name is dokku.
|
|
- Container SSH port 22 is exposed on the host as 3022.
|
|
- Container HTTP port 80 is exposed on the host as 8080.
|
|
- Container HTTPS port 443 is exposed on the host as 8443.
|
|
- Data within the container is stored on the host within the `/var/lib/dokku` directory.
|
|
- Image build cache is set to the data dir + `/home/dokku`.
|
|
- The docker socket is mounted into container.
|
|
|
|
Application repositories, plugin config, as well as plugin data are persisted to disk within the specified host directory for `/var/lib/dokku`.
|
|
|
|
Other docker container options can also be used when running Dokku, though the specific outcome will depend upon the specified options. For example, the Dokku container's nginx port can be bound to a specific host ip by specifying `--publish $HOST_IP:8080:80`, where `$HOST_IP` is the IP desired. Please see the [docker container run documentation](https://docs.docker.com/engine/reference/commandline/run/) for further explanation for various docker arguments.
|
|
|
|
## Plugin Installation
|
|
|
|
### On Dokku start
|
|
|
|
To install custom plugins, create a `plugin-list` file in the host's `/var/lib/dokku` directory. The plugins listed herein will be automatically installed by Dokku on container boot. This file should be the following format:
|
|
|
|
```yaml
|
|
plugin_name: repository_url
|
|
```
|
|
|
|
An example for installing the postgres and redis plugins follows:
|
|
|
|
```yaml
|
|
postgres: https://github.com/dokku/dokku-postgres.git
|
|
redis: https://github.com/dokku/dokku-redis.git
|
|
```
|
|
|
|
### Prior to Dokku start
|
|
|
|
The alternative is to build a custom docker image via a custom Dockerfile. This Dockerfile can run any `plugin:install` command, though the `install` trigger must be skipped via the `--skip-install-trigger`. The version installed at that time will be the one that persists. Below is an example Dockerfile showing this method.
|
|
|
|
```Dockerfile
|
|
FROM dokku/dokku:0.38.0
|
|
RUN dokku plugin:install https://github.com/dokku/dokku-postgres.git --skip-install-trigger
|
|
RUN dokku plugin:install https://github.com/dokku/dokku-redis.git --skip-install-trigger
|
|
```
|
|
|
|
## SSH Key Management
|
|
|
|
To initialize ssh-keys within the container, use `docker exec` to enter the container:
|
|
|
|
```shell
|
|
docker exec -it dokku bash
|
|
```
|
|
|
|
Next, run the appropriate ssh-keys commands:
|
|
|
|
```shell
|
|
echo "$CONTENTS_OF_YOUR_PUBLIC_SSH_KEY_HERE" | dokku ssh-keys:add KEY_NAME
|
|
```
|
|
|
|
Please see the [user management documentation](/docs/deployment/user-management.md) for more information.
|
|
|
|
## Pushing Applications
|
|
|
|
When exposing the Dokku container's SSH port (22) on 3022, something similar to the following will need to be setup within the user's `~/.ssh/config`:
|
|
|
|
```
|
|
Host dokku.docker
|
|
HostName 127.0.0.1
|
|
Port 3022
|
|
```
|
|
|
|
In the above example, the hostname `127.0.0.1` is being aliased to `dokku.docker`, while the port is being overridden to `3022`. All SSH commands - including git pushes - for the hostname `dokku.docker` will be transparently sent to `127.0.0.1:3022`.
|