install.fairie/docs/scripts/after/run_onchange_after_07-docker-plugins.sh.tmpl.md
2023-08-08 03:06:49 -04:00

4.5 KiB

title description sidebar_label slug githubLocation scriptLocation repoLocation
Docker Plugins Ensures Docker push-rm and the Docker Rclone plugin are installed 07 Docker Plugins /scripts/after/run_onchange_after_07-docker-plugins.sh.tmpl https://github.com/megabyte-labs/install.doctor/blob/master/home/.chezmoiscripts/universal/run_onchange_after_07-docker-plugins.sh.tmpl https://github.com/megabyte-labs/install.doctor/raw/master/home/.chezmoiscripts/universal/run_onchange_after_07-docker-plugins.sh.tmpl home/.chezmoiscripts/universal/run_onchange_after_07-docker-plugins.sh.tmpl

Docker Plugins

Ensures Docker push-rm and the Docker Rclone plugin are installed

Overview

This script sets up two different Docker plugins.

  1. Docker push-rm allows you to programmatically update the README.md and other Docker registry metadata on DockerHub
  2. Docker Rclone plugin allows you to mount Rclone mounts as Docker volumes

Docker Rclone

The Docker Rclone installation ensures necessary system directories are initialized / created. It also copies the Docker Rclone configuration to the proper system location.

Source Code

{{- if (eq .host.distro.family "linux") -}}
#!/usr/bin/env bash
# @file Docker Plugins
# @brief Ensures Docker push-rm and the Docker Rclone plugin are installed
# @description
#     This script sets up two different Docker plugins.
#
#     1. [Docker push-rm](https://github.com/christian-korneck/docker-pushrm) allows you to programmatically update the README.md and other Docker registry metadata on [DockerHub](https://hub.docker.com/)
#     2. [Docker Rclone plugin](https://rclone.org/docker/) allows you to mount Rclone mounts as Docker volumes
#
#     ## Docker Rclone
#
#     The Docker Rclone installation ensures necessary system directories are initialized / created. It also copies the [Docker Rclone configuration](https://github.com/megabyte-labs/install.doctor/blob/master/home/dot_config/rclone/private_docker-rclone.conf.tmpl)
#     to the proper system location.

{{ includeTemplate "universal/profile" }}
{{ includeTemplate "universal/logg" }}

### Docker push-rm
if [ ! -f "${XDG_CONFIG_HOME:-$HOME/.config}/docker/cli-plugins/docker-pushrm" ]; then
    logg info 'Acquiring release information for Docker push-rm'
    RELEASE_TAG="$(curl -sSL https://api.github.com/repos/christian-korneck/docker-pushrm/releases/latest | jq -r '.tag_name')"
    mkdir -p "${XDG_CONFIG_HOME:-$HOME/.config}/docker/cli-plugins"
    logg info 'Downloading Docker push-rm'
    curl https://github.com/christian-korneck/docker-pushrm/releases/download/$RELEASE_TAG/docker-pushrm_darwin_amd64 -o "${XDG_CONFIG_HOME:-$HOME/.config}/docker/cli-plugins/docker-pushrm"
    chmod +x "${XDG_CONFIG_HOME:-$HOME/.config}/docker/cli-plugins/docker-pushrm"
    logg success 'Added Docker push-rm'
else
    logg info 'Docker push-rm already added'
fi

### Docker Rclone plugin
# Source: https://rclone.org/docker/
# First, ensure Docker Rclone configuration exists (which only happens when the Chezmoi Age decryption key is present as well as keys for Rclone)
if [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/rclone/docker-rclone.conf" ]; then
    ### Ensure Docker Rclone plugin system folders exist
    logg info 'Ensure Docker Rclone plugin system folders exist'
    if [ ! -d /var/lib/docker-plugins/rclone/config ]; then
        logg info 'Creating directory /var/lib/docker-plugins/rclone/config'
        sudo mkdir -p /var/lib/docker-plugins/rclone/config
    fi
    if [ ! -d /var/lib/docker-plugins/rclone/cache ]; then
        logg info 'Creating directory /var/lib/docker-plugins/rclone/cache'
        sudo mkdir -p /var/lib/docker-plugins/rclone/cache
    fi

    ### Copy Rclone configuration
    logg info "Copy the Rclone configuration from ${XDG_CONFIG_HOME:-$HOME/.config}/rclone/docker-rclone.conf to /var/lib/docker-plugins/rclone/config/rclone.conf"
    sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/rclone/docker-rclone.conf" /var/lib/docker-plugins/rclone/config/rclone.conf

    ### Install the Rclone Docker plugin (if not already installed)
    if ! sudo su -c 'docker plugin ls' - "$USER" | grep 'rclone:latest' > /dev/null; then
        sudo su -c 'docker plugin install rclone/docker-volume-rclone:amd64 args="-v" --alias rclone --grant-all-permissions' - "$USER"
    fi
fi

{{ end -}}