#!/usr/bin/env bash set -euo pipefail source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/_common.sh" if [[ "$(uname -s)" != "Linux" ]]; then echo "docker deployment is only supported on Linux" >&2 exit 1 fi if [[ "${EUID}" -ne 0 ]]; then echo "docker deployment must run as root" >&2 exit 1 fi need_cmd() { if ! command -v "$1" >/dev/null 2>&1; then echo "missing required command: $1" >&2 exit 1 fi } need_cmd docker need_cmd systemctl need_cmd install need_cmd curl SERVICE_NAME="${SERVICE_NAME:-accounts-svc-plus-docker}" CONTAINER_NAME="${CONTAINER_NAME:-accounts-svc-plus}" IMAGE_TAG="${IMAGE_TAG:-accounts-svc-plus:local}" DOMAIN="${ACCOUNT_DOMAIN:-accounts.svc.plus}" LISTEN_ADDR="${ACCOUNT_LISTEN_ADDR:-127.0.0.1:8080}" PUBLIC_URL="${ACCOUNT_PUBLIC_URL:-https://${DOMAIN}}" CONFIG_DIR="${CONFIG_DIR:-/etc/accounts.svc.plus}" CONFIG_PATH="${CONFIG_PATH:-${CONFIG_DIR}/account.standalone.yaml}" SYSTEMD_UNIT_PATH="${SYSTEMD_UNIT_PATH:-/etc/systemd/system/${SERVICE_NAME}.service}" CADDY_CONF_DIR="${CADDY_CONF_DIR:-/etc/caddy/conf.d}" CADDY_CONF_PATH="${CADDY_CONF_PATH:-${CADDY_CONF_DIR}/${DOMAIN}.conf}" DOCKER_BIN="$(command -v docker)" install -d -m 0755 "${CONFIG_DIR}" "${CADDY_CONF_DIR}" cat > "${CONFIG_PATH}" < "${SYSTEMD_UNIT_PATH}" < "${CADDY_CONF_PATH}" </dev/null echo "docker deployment complete" echo "service: ${SERVICE_NAME}.service" echo "image: ${IMAGE_TAG}" echo "caddy: ${CADDY_CONF_PATH}"