调整version
This commit is contained in:
parent
859a56c434
commit
a4fd0f3128
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -2087,7 +2087,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rpki"
|
name = "rpki"
|
||||||
version = "0.1.0"
|
version = "1.3.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"arc-swap",
|
"arc-swap",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "rpki"
|
name = "rpki"
|
||||||
version = "0.1.0"
|
version = "1.3.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
|
|
||||||
[[bin]]
|
[[bin]]
|
||||||
|
|||||||
@ -1,6 +1,11 @@
|
|||||||
# Target RTR server addresses for client compose files
|
# Target RTR server addresses for client compose files
|
||||||
# RPKI_RTR_CLIENT_IMAGE=rpki-rtr-debug-client-arm64:v1.2
|
# build-run.sh auto-detects amd64/arm64 unless IMAGE_ARCH/RPKI_RTR_IMAGE_ARCH is set before running it.
|
||||||
RPKI_RTR_CLIENT_IMAGE=rpki-rtr-debug-client-amd64:v1.2
|
# Direct docker compose uses RPKI_RTR_IMAGE_ARCH from this file; set it to arm64 on ARM hosts.
|
||||||
|
RPKI_RTR_CLIENT_IMAGE_BASE=rpki-rtr-debug-client
|
||||||
|
RPKI_RTR_CLIENT_IMAGE_TAG=v1.3
|
||||||
|
RPKI_RTR_IMAGE_ARCH=arm64
|
||||||
|
# RPKI_RTR_TARGET_PLATFORM=linux/amd64
|
||||||
|
# RPKI_RTR_CLIENT_IMAGE=rpki-rtr-debug-client-amd64:v1.3
|
||||||
|
|
||||||
# TCP example: 10.0.0.12:323
|
# TCP example: 10.0.0.12:323
|
||||||
# TLS example: rpki.example.com:324
|
# TLS example: rpki.example.com:324
|
||||||
|
|||||||
@ -3,14 +3,65 @@ set -euo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
REPO_ROOT="$(cd -- "${SCRIPT_DIR}/../.." && pwd)"
|
REPO_ROOT="$(cd -- "${SCRIPT_DIR}/../.." && pwd)"
|
||||||
|
CALLER_TARGET_PLATFORM="${TARGET_PLATFORM:-${RPKI_RTR_TARGET_PLATFORM:-}}"
|
||||||
|
CALLER_IMAGE_ARCH="${IMAGE_ARCH:-${RPKI_RTR_IMAGE_ARCH:-}}"
|
||||||
|
CALLER_CLIENT_IMAGE="${CLIENT_IMAGE:-${RPKI_RTR_CLIENT_IMAGE:-}}"
|
||||||
|
|
||||||
|
load_env_defaults() {
|
||||||
|
local line key value
|
||||||
|
[[ -f "${SCRIPT_DIR}/.env" ]] || return
|
||||||
|
|
||||||
|
while IFS= read -r line || [[ -n "${line}" ]]; do
|
||||||
|
line="${line%$'\r'}"
|
||||||
|
[[ -z "${line}" || "${line}" =~ ^[[:space:]]*# ]] && continue
|
||||||
|
[[ "${line}" == *"="* ]] || continue
|
||||||
|
|
||||||
|
key="${line%%=*}"
|
||||||
|
value="${line#*=}"
|
||||||
|
key="${key#"${key%%[![:space:]]*}"}"
|
||||||
|
key="${key%"${key##*[![:space:]]}"}"
|
||||||
|
[[ "${key}" =~ ^[A-Za-z_][A-Za-z0-9_]*$ ]] || continue
|
||||||
|
|
||||||
|
if [[ -z "${!key+x}" ]]; then
|
||||||
|
export "${key}=${value}"
|
||||||
|
fi
|
||||||
|
done < "${SCRIPT_DIR}/.env"
|
||||||
|
}
|
||||||
|
|
||||||
|
detect_image_arch() {
|
||||||
|
case "$(uname -m)" in
|
||||||
|
x86_64|amd64) printf '%s\n' amd64 ;;
|
||||||
|
aarch64|arm64) printf '%s\n' arm64 ;;
|
||||||
|
*) die "unsupported host architecture '$(uname -m)'; set RPKI_RTR_IMAGE_ARCH=amd64 or arm64" ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
platform_for_image_arch() {
|
||||||
|
case "$1" in
|
||||||
|
amd64) printf '%s\n' linux/amd64 ;;
|
||||||
|
arm64) printf '%s\n' linux/arm64 ;;
|
||||||
|
*) die "unsupported image arch '$1', expected amd64 or arm64" ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
image_arch_from_platform() {
|
||||||
|
case "$1" in
|
||||||
|
linux/amd64|amd64) printf '%s\n' amd64 ;;
|
||||||
|
linux/arm64|arm64) printf '%s\n' arm64 ;;
|
||||||
|
*) return 1 ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
load_env_defaults
|
||||||
|
|
||||||
MODE="${MODE:-tcp}"
|
MODE="${MODE:-tcp}"
|
||||||
ACTION="up"
|
ACTION="up"
|
||||||
DETACH="${DETACH:-1}"
|
DETACH="${DETACH:-1}"
|
||||||
BUILD="${BUILD:-1}"
|
BUILD="${BUILD:-1}"
|
||||||
CLIENTS="${CLIENTS:-single}"
|
CLIENTS="${CLIENTS:-single}"
|
||||||
TARGET_PLATFORM="${TARGET_PLATFORM:-linux/arm64}"
|
TARGET_PLATFORM="${CALLER_TARGET_PLATFORM}"
|
||||||
CLIENT_IMAGE="${CLIENT_IMAGE:-${RPKI_RTR_CLIENT_IMAGE:-rpki-rtr-debug-client:latest}}"
|
IMAGE_ARCH="${CALLER_IMAGE_ARCH}"
|
||||||
|
CLIENT_IMAGE="${CALLER_CLIENT_IMAGE}"
|
||||||
BUILDX_PUSH="${BUILDX_PUSH:-0}"
|
BUILDX_PUSH="${BUILDX_PUSH:-0}"
|
||||||
BUILDX_BUILDER="${BUILDX_BUILDER:-}"
|
BUILDX_BUILDER="${BUILDX_BUILDER:-}"
|
||||||
SKIP_BASE_IMAGE_PULL="${SKIP_BASE_IMAGE_PULL:-0}"
|
SKIP_BASE_IMAGE_PULL="${SKIP_BASE_IMAGE_PULL:-0}"
|
||||||
@ -33,7 +84,9 @@ Actions:
|
|||||||
Options:
|
Options:
|
||||||
--mode MODE base|tcp|tls|ssh (default: tcp)
|
--mode MODE base|tcp|tls|ssh (default: tcp)
|
||||||
--clients MODE single|multi (default: single)
|
--clients MODE single|multi (default: single)
|
||||||
--platform VALUE Target platform for buildx (default: linux/arm64)
|
--platform VALUE Target platform for buildx (default: host architecture)
|
||||||
|
--image-arch VALUE
|
||||||
|
Image architecture suffix for default tag: amd64|arm64
|
||||||
--client-image TAG
|
--client-image TAG
|
||||||
Client image tag for buildx and compose
|
Client image tag for buildx and compose
|
||||||
--push Push buildx image instead of loading it locally
|
--push Push buildx image instead of loading it locally
|
||||||
@ -161,6 +214,11 @@ while [[ $# -gt 0 ]]; do
|
|||||||
TARGET_PLATFORM="$2"
|
TARGET_PLATFORM="$2"
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
|
--image-arch)
|
||||||
|
[[ $# -ge 2 ]] || die "--image-arch requires a value"
|
||||||
|
IMAGE_ARCH="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
--client-image)
|
--client-image)
|
||||||
[[ $# -ge 2 ]] || die "--client-image requires a value"
|
[[ $# -ge 2 ]] || die "--client-image requires a value"
|
||||||
CLIENT_IMAGE="$2"
|
CLIENT_IMAGE="$2"
|
||||||
@ -197,6 +255,25 @@ while [[ $# -gt 0 ]]; do
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
|
if [[ -z "${TARGET_PLATFORM}" ]]; then
|
||||||
|
[[ -n "${IMAGE_ARCH}" ]] || IMAGE_ARCH="$(detect_image_arch)"
|
||||||
|
TARGET_PLATFORM="$(platform_for_image_arch "${IMAGE_ARCH}")"
|
||||||
|
elif [[ -z "${IMAGE_ARCH}" ]]; then
|
||||||
|
if [[ "${TARGET_PLATFORM}" != *,* ]] && IMAGE_ARCH="$(image_arch_from_platform "${TARGET_PLATFORM}")"; then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
IMAGE_ARCH="$(detect_image_arch)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "${CLIENT_IMAGE}" ]]; then
|
||||||
|
if [[ "${TARGET_PLATFORM}" == *,* ]]; then
|
||||||
|
CLIENT_IMAGE="${RPKI_RTR_CLIENT_IMAGE_BASE:-rpki-rtr-debug-client}:${RPKI_RTR_CLIENT_IMAGE_TAG:-latest}"
|
||||||
|
else
|
||||||
|
CLIENT_IMAGE="${RPKI_RTR_CLIENT_IMAGE_BASE:-rpki-rtr-debug-client}-${IMAGE_ARCH}:${RPKI_RTR_CLIENT_IMAGE_TAG:-latest}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
[[ "${CLIENTS}" == "single" || "${CLIENTS}" == "multi" ]] || die "unsupported clients '${CLIENTS}', expected single|multi"
|
[[ "${CLIENTS}" == "single" || "${CLIENTS}" == "multi" ]] || die "unsupported clients '${CLIENTS}', expected single|multi"
|
||||||
export RPKI_RTR_CLIENT_IMAGE="${CLIENT_IMAGE}"
|
export RPKI_RTR_CLIENT_IMAGE="${CLIENT_IMAGE}"
|
||||||
if [[ "${ACTION}" == "buildx" ]]; then
|
if [[ "${ACTION}" == "buildx" ]]; then
|
||||||
|
|||||||
@ -2,7 +2,7 @@ version: "3.9"
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
rtr-client-1:
|
rtr-client-1:
|
||||||
image: ${RPKI_RTR_CLIENT_IMAGE:-rpki-rtr-debug-client:latest}
|
image: ${RPKI_RTR_CLIENT_IMAGE:-${RPKI_RTR_CLIENT_IMAGE_BASE:-rpki-rtr-debug-client}-${RPKI_RTR_IMAGE_ARCH:-amd64}:${RPKI_RTR_CLIENT_IMAGE_TAG:-latest}}
|
||||||
command: ["${RPKI_RTR_TCP_SERVER_ADDR:-rpki-rtr:323}", "${RPKI_RTR_PROTOCOL_VERSION:-2}", "reset", "--keep-after-error", "--summary-only"]
|
command: ["${RPKI_RTR_TCP_SERVER_ADDR:-rpki-rtr:323}", "${RPKI_RTR_PROTOCOL_VERSION:-2}", "reset", "--keep-after-error", "--summary-only"]
|
||||||
volumes:
|
volumes:
|
||||||
- ${RPKI_RTR_CLIENT_LOG_HOST_DIR:-../../logs/client}:/app/logs
|
- ${RPKI_RTR_CLIENT_LOG_HOST_DIR:-../../logs/client}:/app/logs
|
||||||
@ -11,7 +11,7 @@ services:
|
|||||||
- rpki_net
|
- rpki_net
|
||||||
|
|
||||||
rtr-client-2:
|
rtr-client-2:
|
||||||
image: ${RPKI_RTR_CLIENT_IMAGE:-rpki-rtr-debug-client:latest}
|
image: ${RPKI_RTR_CLIENT_IMAGE:-${RPKI_RTR_CLIENT_IMAGE_BASE:-rpki-rtr-debug-client}-${RPKI_RTR_IMAGE_ARCH:-amd64}:${RPKI_RTR_CLIENT_IMAGE_TAG:-latest}}
|
||||||
command: ["${RPKI_RTR_TCP_SERVER_ADDR:-rpki-rtr:323}", "${RPKI_RTR_PROTOCOL_VERSION:-2}", "reset", "--keep-after-error", "--summary-only"]
|
command: ["${RPKI_RTR_TCP_SERVER_ADDR:-rpki-rtr:323}", "${RPKI_RTR_PROTOCOL_VERSION:-2}", "reset", "--keep-after-error", "--summary-only"]
|
||||||
volumes:
|
volumes:
|
||||||
- ${RPKI_RTR_CLIENT_LOG_HOST_DIR:-../../logs/client}:/app/logs
|
- ${RPKI_RTR_CLIENT_LOG_HOST_DIR:-../../logs/client}:/app/logs
|
||||||
@ -20,7 +20,7 @@ services:
|
|||||||
- rpki_net
|
- rpki_net
|
||||||
|
|
||||||
rtr-client-3:
|
rtr-client-3:
|
||||||
image: ${RPKI_RTR_CLIENT_IMAGE:-rpki-rtr-debug-client:latest}
|
image: ${RPKI_RTR_CLIENT_IMAGE:-${RPKI_RTR_CLIENT_IMAGE_BASE:-rpki-rtr-debug-client}-${RPKI_RTR_IMAGE_ARCH:-amd64}:${RPKI_RTR_CLIENT_IMAGE_TAG:-latest}}
|
||||||
command: ["${RPKI_RTR_TCP_SERVER_ADDR:-rpki-rtr:323}", "${RPKI_RTR_PROTOCOL_VERSION:-2}", "reset", "--keep-after-error", "--summary-only"]
|
command: ["${RPKI_RTR_TCP_SERVER_ADDR:-rpki-rtr:323}", "${RPKI_RTR_PROTOCOL_VERSION:-2}", "reset", "--keep-after-error", "--summary-only"]
|
||||||
volumes:
|
volumes:
|
||||||
- ${RPKI_RTR_CLIENT_LOG_HOST_DIR:-../../logs/client}:/app/logs
|
- ${RPKI_RTR_CLIENT_LOG_HOST_DIR:-../../logs/client}:/app/logs
|
||||||
@ -29,7 +29,7 @@ services:
|
|||||||
- rpki_net
|
- rpki_net
|
||||||
|
|
||||||
rtr-client-4:
|
rtr-client-4:
|
||||||
image: ${RPKI_RTR_CLIENT_IMAGE:-rpki-rtr-debug-client:latest}
|
image: ${RPKI_RTR_CLIENT_IMAGE:-${RPKI_RTR_CLIENT_IMAGE_BASE:-rpki-rtr-debug-client}-${RPKI_RTR_IMAGE_ARCH:-amd64}:${RPKI_RTR_CLIENT_IMAGE_TAG:-latest}}
|
||||||
command: ["${RPKI_RTR_TCP_SERVER_ADDR:-rpki-rtr:323}", "${RPKI_RTR_PROTOCOL_VERSION:-2}", "reset", "--keep-after-error", "--summary-only"]
|
command: ["${RPKI_RTR_TCP_SERVER_ADDR:-rpki-rtr:323}", "${RPKI_RTR_PROTOCOL_VERSION:-2}", "reset", "--keep-after-error", "--summary-only"]
|
||||||
volumes:
|
volumes:
|
||||||
- ${RPKI_RTR_CLIENT_LOG_HOST_DIR:-../../logs/client}:/app/logs
|
- ${RPKI_RTR_CLIENT_LOG_HOST_DIR:-../../logs/client}:/app/logs
|
||||||
@ -38,7 +38,7 @@ services:
|
|||||||
- rpki_net
|
- rpki_net
|
||||||
|
|
||||||
rtr-client-5:
|
rtr-client-5:
|
||||||
image: ${RPKI_RTR_CLIENT_IMAGE:-rpki-rtr-debug-client:latest}
|
image: ${RPKI_RTR_CLIENT_IMAGE:-${RPKI_RTR_CLIENT_IMAGE_BASE:-rpki-rtr-debug-client}-${RPKI_RTR_IMAGE_ARCH:-amd64}:${RPKI_RTR_CLIENT_IMAGE_TAG:-latest}}
|
||||||
command: ["${RPKI_RTR_TCP_SERVER_ADDR:-rpki-rtr:323}", "${RPKI_RTR_PROTOCOL_VERSION:-2}", "reset", "--keep-after-error", "--summary-only"]
|
command: ["${RPKI_RTR_TCP_SERVER_ADDR:-rpki-rtr:323}", "${RPKI_RTR_PROTOCOL_VERSION:-2}", "reset", "--keep-after-error", "--summary-only"]
|
||||||
volumes:
|
volumes:
|
||||||
- ${RPKI_RTR_CLIENT_LOG_HOST_DIR:-../../logs/client}:/app/logs
|
- ${RPKI_RTR_CLIENT_LOG_HOST_DIR:-../../logs/client}:/app/logs
|
||||||
|
|||||||
@ -5,7 +5,7 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: ../..
|
context: ../..
|
||||||
dockerfile: deploy/client/Dockerfile
|
dockerfile: deploy/client/Dockerfile
|
||||||
image: ${RPKI_RTR_CLIENT_IMAGE:-rpki-rtr-debug-client:latest}
|
image: ${RPKI_RTR_CLIENT_IMAGE:-${RPKI_RTR_CLIENT_IMAGE_BASE:-rpki-rtr-debug-client}-${RPKI_RTR_IMAGE_ARCH:-amd64}:${RPKI_RTR_CLIENT_IMAGE_TAG:-latest}}
|
||||||
command:
|
command:
|
||||||
[
|
[
|
||||||
"${RPKI_RTR_SSH_SERVER_ADDR:-rpki-rtr:22}",
|
"${RPKI_RTR_SSH_SERVER_ADDR:-rpki-rtr:22}",
|
||||||
|
|||||||
@ -5,7 +5,7 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: ../..
|
context: ../..
|
||||||
dockerfile: deploy/client/Dockerfile
|
dockerfile: deploy/client/Dockerfile
|
||||||
image: ${RPKI_RTR_CLIENT_IMAGE:-rpki-rtr-debug-client:latest}
|
image: ${RPKI_RTR_CLIENT_IMAGE:-${RPKI_RTR_CLIENT_IMAGE_BASE:-rpki-rtr-debug-client}-${RPKI_RTR_IMAGE_ARCH:-amd64}:${RPKI_RTR_CLIENT_IMAGE_TAG:-latest}}
|
||||||
command:
|
command:
|
||||||
[
|
[
|
||||||
"${RPKI_RTR_SSH_SERVER_ADDR:-rpki-rtr:22}",
|
"${RPKI_RTR_SSH_SERVER_ADDR:-rpki-rtr:22}",
|
||||||
|
|||||||
@ -3,7 +3,7 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: ../..
|
context: ../..
|
||||||
dockerfile: deploy/client/Dockerfile
|
dockerfile: deploy/client/Dockerfile
|
||||||
image: ${RPKI_RTR_CLIENT_IMAGE:-rpki-rtr-debug-client:latest}
|
image: ${RPKI_RTR_CLIENT_IMAGE:-${RPKI_RTR_CLIENT_IMAGE_BASE:-rpki-rtr-debug-client}-${RPKI_RTR_IMAGE_ARCH:-amd64}:${RPKI_RTR_CLIENT_IMAGE_TAG:-latest}}
|
||||||
command: ["${RPKI_RTR_TCP_SERVER_ADDR:-rpki-rtr:323}", "${RPKI_RTR_PROTOCOL_VERSION:-2}", "reset", "--keep-after-error", "--summary-only"]
|
command: ["${RPKI_RTR_TCP_SERVER_ADDR:-rpki-rtr:323}", "${RPKI_RTR_PROTOCOL_VERSION:-2}", "reset", "--keep-after-error", "--summary-only"]
|
||||||
volumes:
|
volumes:
|
||||||
- ${RPKI_RTR_CLIENT_LOG_HOST_DIR:-../../logs/client}:/app/logs
|
- ${RPKI_RTR_CLIENT_LOG_HOST_DIR:-../../logs/client}:/app/logs
|
||||||
|
|||||||
@ -5,7 +5,7 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: ../..
|
context: ../..
|
||||||
dockerfile: deploy/client/Dockerfile
|
dockerfile: deploy/client/Dockerfile
|
||||||
image: ${RPKI_RTR_CLIENT_IMAGE:-rpki-rtr-debug-client:latest}
|
image: ${RPKI_RTR_CLIENT_IMAGE:-${RPKI_RTR_CLIENT_IMAGE_BASE:-rpki-rtr-debug-client}-${RPKI_RTR_IMAGE_ARCH:-amd64}:${RPKI_RTR_CLIENT_IMAGE_TAG:-latest}}
|
||||||
command:
|
command:
|
||||||
[
|
[
|
||||||
"${RPKI_RTR_TLS_SERVER_ADDR:-rpki-rtr:324}",
|
"${RPKI_RTR_TLS_SERVER_ADDR:-rpki-rtr:324}",
|
||||||
|
|||||||
@ -3,7 +3,7 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: ../..
|
context: ../..
|
||||||
dockerfile: deploy/client/Dockerfile
|
dockerfile: deploy/client/Dockerfile
|
||||||
image: ${RPKI_RTR_CLIENT_IMAGE:-rpki-rtr-debug-client:latest}
|
image: ${RPKI_RTR_CLIENT_IMAGE:-${RPKI_RTR_CLIENT_IMAGE_BASE:-rpki-rtr-debug-client}-${RPKI_RTR_IMAGE_ARCH:-amd64}:${RPKI_RTR_CLIENT_IMAGE_TAG:-latest}}
|
||||||
command: ["${RPKI_RTR_TCP_SERVER_ADDR:-rpki-rtr:323}", "${RPKI_RTR_PROTOCOL_VERSION:-2}", "reset", "--keep-after-error", "--summary-only"]
|
command: ["${RPKI_RTR_TCP_SERVER_ADDR:-rpki-rtr:323}", "${RPKI_RTR_PROTOCOL_VERSION:-2}", "reset", "--keep-after-error", "--summary-only"]
|
||||||
volumes:
|
volumes:
|
||||||
- ${RPKI_RTR_CLIENT_LOG_HOST_DIR:-../../logs/client}:/app/logs
|
- ${RPKI_RTR_CLIENT_LOG_HOST_DIR:-../../logs/client}:/app/logs
|
||||||
|
|||||||
@ -1,6 +1,11 @@
|
|||||||
# Core runtime knobs.
|
# Core runtime knobs.
|
||||||
# RPKI_RTR_SERVER_IMAGE=rpki-rtr-arm64:v1.2
|
# build-run.sh auto-detects amd64/arm64 unless IMAGE_ARCH/RPKI_RTR_IMAGE_ARCH is set before running it.
|
||||||
RPKI_RTR_SERVER_IMAGE=rpki-rtr-amd64:v1.2
|
# Direct docker compose uses RPKI_RTR_IMAGE_ARCH from this file; set it to arm64 on ARM hosts.
|
||||||
|
RPKI_RTR_SERVER_IMAGE_BASE=rpki-rtr
|
||||||
|
RPKI_RTR_SERVER_IMAGE_TAG=v1.3
|
||||||
|
RPKI_RTR_IMAGE_ARCH=arm64
|
||||||
|
# RPKI_RTR_TARGET_PLATFORM=linux/amd64
|
||||||
|
# RPKI_RTR_SERVER_IMAGE=rpki-rtr-amd64:v1.3
|
||||||
|
|
||||||
# Data source directories on host.
|
# Data source directories on host.
|
||||||
RPKI_RTR_CCR_HOST_DIR=../../data
|
RPKI_RTR_CCR_HOST_DIR=../../data
|
||||||
|
|||||||
@ -3,13 +3,64 @@ set -euo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
REPO_ROOT="$(cd -- "${SCRIPT_DIR}/../.." && pwd)"
|
REPO_ROOT="$(cd -- "${SCRIPT_DIR}/../.." && pwd)"
|
||||||
|
CALLER_TARGET_PLATFORM="${TARGET_PLATFORM:-${RPKI_RTR_TARGET_PLATFORM:-}}"
|
||||||
|
CALLER_IMAGE_ARCH="${IMAGE_ARCH:-${RPKI_RTR_IMAGE_ARCH:-}}"
|
||||||
|
CALLER_SERVER_IMAGE="${SERVER_IMAGE:-${RPKI_RTR_SERVER_IMAGE:-}}"
|
||||||
|
|
||||||
|
load_env_defaults() {
|
||||||
|
local line key value
|
||||||
|
[[ -f "${SCRIPT_DIR}/.env" ]] || return
|
||||||
|
|
||||||
|
while IFS= read -r line || [[ -n "${line}" ]]; do
|
||||||
|
line="${line%$'\r'}"
|
||||||
|
[[ -z "${line}" || "${line}" =~ ^[[:space:]]*# ]] && continue
|
||||||
|
[[ "${line}" == *"="* ]] || continue
|
||||||
|
|
||||||
|
key="${line%%=*}"
|
||||||
|
value="${line#*=}"
|
||||||
|
key="${key#"${key%%[![:space:]]*}"}"
|
||||||
|
key="${key%"${key##*[![:space:]]}"}"
|
||||||
|
[[ "${key}" =~ ^[A-Za-z_][A-Za-z0-9_]*$ ]] || continue
|
||||||
|
|
||||||
|
if [[ -z "${!key+x}" ]]; then
|
||||||
|
export "${key}=${value}"
|
||||||
|
fi
|
||||||
|
done < "${SCRIPT_DIR}/.env"
|
||||||
|
}
|
||||||
|
|
||||||
|
detect_image_arch() {
|
||||||
|
case "$(uname -m)" in
|
||||||
|
x86_64|amd64) printf '%s\n' amd64 ;;
|
||||||
|
aarch64|arm64) printf '%s\n' arm64 ;;
|
||||||
|
*) die "unsupported host architecture '$(uname -m)'; set RPKI_RTR_IMAGE_ARCH=amd64 or arm64" ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
platform_for_image_arch() {
|
||||||
|
case "$1" in
|
||||||
|
amd64) printf '%s\n' linux/amd64 ;;
|
||||||
|
arm64) printf '%s\n' linux/arm64 ;;
|
||||||
|
*) die "unsupported image arch '$1', expected amd64 or arm64" ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
image_arch_from_platform() {
|
||||||
|
case "$1" in
|
||||||
|
linux/amd64|amd64) printf '%s\n' amd64 ;;
|
||||||
|
linux/arm64|arm64) printf '%s\n' arm64 ;;
|
||||||
|
*) return 1 ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
load_env_defaults
|
||||||
|
|
||||||
MODE="${MODE:-tcp}"
|
MODE="${MODE:-tcp}"
|
||||||
ACTION="up"
|
ACTION="up"
|
||||||
DETACH="${DETACH:-1}"
|
DETACH="${DETACH:-1}"
|
||||||
BUILD="${BUILD:-1}"
|
BUILD="${BUILD:-1}"
|
||||||
TARGET_PLATFORM="${TARGET_PLATFORM:-linux/arm64}"
|
TARGET_PLATFORM="${CALLER_TARGET_PLATFORM}"
|
||||||
SERVER_IMAGE="${SERVER_IMAGE:-${RPKI_RTR_SERVER_IMAGE:-rpki-rtr:latest}}"
|
IMAGE_ARCH="${CALLER_IMAGE_ARCH}"
|
||||||
|
SERVER_IMAGE="${CALLER_SERVER_IMAGE}"
|
||||||
BUILDX_PUSH="${BUILDX_PUSH:-0}"
|
BUILDX_PUSH="${BUILDX_PUSH:-0}"
|
||||||
BUILDX_BUILDER="${BUILDX_BUILDER:-}"
|
BUILDX_BUILDER="${BUILDX_BUILDER:-}"
|
||||||
SKIP_BASE_IMAGE_PULL="${SKIP_BASE_IMAGE_PULL:-0}"
|
SKIP_BASE_IMAGE_PULL="${SKIP_BASE_IMAGE_PULL:-0}"
|
||||||
@ -31,7 +82,9 @@ Actions:
|
|||||||
|
|
||||||
Options:
|
Options:
|
||||||
--mode MODE base|tcp|tls|ssh (default: tcp)
|
--mode MODE base|tcp|tls|ssh (default: tcp)
|
||||||
--platform VALUE Target platform for buildx (default: linux/arm64)
|
--platform VALUE Target platform for buildx (default: host architecture)
|
||||||
|
--image-arch VALUE
|
||||||
|
Image architecture suffix for default tag: amd64|arm64
|
||||||
--server-image TAG
|
--server-image TAG
|
||||||
Server image tag for buildx and compose
|
Server image tag for buildx and compose
|
||||||
--push Push buildx image instead of loading it locally
|
--push Push buildx image instead of loading it locally
|
||||||
@ -140,6 +193,11 @@ while [[ $# -gt 0 ]]; do
|
|||||||
TARGET_PLATFORM="$2"
|
TARGET_PLATFORM="$2"
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
|
--image-arch)
|
||||||
|
[[ $# -ge 2 ]] || die "--image-arch requires a value"
|
||||||
|
IMAGE_ARCH="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
--server-image)
|
--server-image)
|
||||||
[[ $# -ge 2 ]] || die "--server-image requires a value"
|
[[ $# -ge 2 ]] || die "--server-image requires a value"
|
||||||
SERVER_IMAGE="$2"
|
SERVER_IMAGE="$2"
|
||||||
@ -176,6 +234,25 @@ while [[ $# -gt 0 ]]; do
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
|
if [[ -z "${TARGET_PLATFORM}" ]]; then
|
||||||
|
[[ -n "${IMAGE_ARCH}" ]] || IMAGE_ARCH="$(detect_image_arch)"
|
||||||
|
TARGET_PLATFORM="$(platform_for_image_arch "${IMAGE_ARCH}")"
|
||||||
|
elif [[ -z "${IMAGE_ARCH}" ]]; then
|
||||||
|
if [[ "${TARGET_PLATFORM}" != *,* ]] && IMAGE_ARCH="$(image_arch_from_platform "${TARGET_PLATFORM}")"; then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
IMAGE_ARCH="$(detect_image_arch)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "${SERVER_IMAGE}" ]]; then
|
||||||
|
if [[ "${TARGET_PLATFORM}" == *,* ]]; then
|
||||||
|
SERVER_IMAGE="${RPKI_RTR_SERVER_IMAGE_BASE:-rpki-rtr}:${RPKI_RTR_SERVER_IMAGE_TAG:-latest}"
|
||||||
|
else
|
||||||
|
SERVER_IMAGE="${RPKI_RTR_SERVER_IMAGE_BASE:-rpki-rtr}-${IMAGE_ARCH}:${RPKI_RTR_SERVER_IMAGE_TAG:-latest}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
export RPKI_RTR_SERVER_IMAGE="${SERVER_IMAGE}"
|
export RPKI_RTR_SERVER_IMAGE="${SERVER_IMAGE}"
|
||||||
if [[ "${ACTION}" == "buildx" ]]; then
|
if [[ "${ACTION}" == "buildx" ]]; then
|
||||||
has_buildx || die "docker buildx is not available"
|
has_buildx || die "docker buildx is not available"
|
||||||
|
|||||||
@ -5,7 +5,7 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: ../..
|
context: ../..
|
||||||
dockerfile: deploy/server/Dockerfile
|
dockerfile: deploy/server/Dockerfile
|
||||||
image: ${RPKI_RTR_SERVER_IMAGE:-rpki-rtr:latest}
|
image: ${RPKI_RTR_SERVER_IMAGE:-${RPKI_RTR_SERVER_IMAGE_BASE:-rpki-rtr}-${RPKI_RTR_IMAGE_ARCH:-amd64}:${RPKI_RTR_SERVER_IMAGE_TAG:-latest}}
|
||||||
container_name: rpki-rtr-ssh
|
container_name: rpki-rtr-ssh
|
||||||
restart: no
|
restart: no
|
||||||
ports:
|
ports:
|
||||||
|
|||||||
@ -5,7 +5,7 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: ../..
|
context: ../..
|
||||||
dockerfile: deploy/server/Dockerfile
|
dockerfile: deploy/server/Dockerfile
|
||||||
image: ${RPKI_RTR_SERVER_IMAGE:-rpki-rtr:latest}
|
image: ${RPKI_RTR_SERVER_IMAGE:-${RPKI_RTR_SERVER_IMAGE_BASE:-rpki-rtr}-${RPKI_RTR_IMAGE_ARCH:-amd64}:${RPKI_RTR_SERVER_IMAGE_TAG:-latest}}
|
||||||
container_name: rpki-rtr-tcp
|
container_name: rpki-rtr-tcp
|
||||||
restart: no
|
restart: no
|
||||||
ports:
|
ports:
|
||||||
|
|||||||
@ -3,7 +3,7 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: ../..
|
context: ../..
|
||||||
dockerfile: deploy/server/Dockerfile
|
dockerfile: deploy/server/Dockerfile
|
||||||
image: ${RPKI_RTR_SERVER_IMAGE:-rpki-rtr:latest}
|
image: ${RPKI_RTR_SERVER_IMAGE:-${RPKI_RTR_SERVER_IMAGE_BASE:-rpki-rtr}-${RPKI_RTR_IMAGE_ARCH:-amd64}:${RPKI_RTR_SERVER_IMAGE_TAG:-latest}}
|
||||||
container_name: rpki-rtr-tls
|
container_name: rpki-rtr-tls
|
||||||
restart: no
|
restart: no
|
||||||
ports:
|
ports:
|
||||||
|
|||||||
@ -5,7 +5,7 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: ../..
|
context: ../..
|
||||||
dockerfile: deploy/server/Dockerfile
|
dockerfile: deploy/server/Dockerfile
|
||||||
image: ${RPKI_RTR_SERVER_IMAGE:-rpki-rtr:latest}
|
image: ${RPKI_RTR_SERVER_IMAGE:-${RPKI_RTR_SERVER_IMAGE_BASE:-rpki-rtr}-${RPKI_RTR_IMAGE_ARCH:-amd64}:${RPKI_RTR_SERVER_IMAGE_TAG:-latest}}
|
||||||
container_name: rpki-rtr
|
container_name: rpki-rtr
|
||||||
restart: no
|
restart: no
|
||||||
ports:
|
ports:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user