41 lines
1.9 KiB
Bash
41 lines
1.9 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
if [[ ${EUID} -ne 0 ]]; then
|
|
echo "请在仓库根目录执行:sudo bash ./install-docker.sh" >&2
|
|
exit 1
|
|
fi
|
|
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
cd "$repo_root"
|
|
[[ -f Dockerfile && -f deploy/dobotai-dingtalk/install-docker.sh ]] || { echo "必须从完整DobotAI源码仓库根目录运行。" >&2; exit 1; }
|
|
command -v git >/dev/null || { echo "未找到git。" >&2; exit 1; }
|
|
git rev-parse --is-inside-work-tree >/dev/null || { echo "请从git clone得到的仓库中执行。" >&2; exit 1; }
|
|
|
|
install_docker_if_missing() {
|
|
if command -v docker >/dev/null && docker compose version >/dev/null 2>&1; then return; fi
|
|
command -v apt-get >/dev/null || { echo "请先安装Docker Engine和Docker Compose v2。" >&2; exit 1; }
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
apt-get update
|
|
if apt-cache show docker-compose-v2 >/dev/null 2>&1; then
|
|
apt-get install -y docker.io docker-compose-v2
|
|
elif apt-cache show docker-compose-plugin >/dev/null 2>&1; then
|
|
apt-get install -y docker.io docker-compose-plugin
|
|
else
|
|
echo "APT源缺少Docker Compose v2插件。" >&2; exit 1
|
|
fi
|
|
systemctl enable --now docker
|
|
}
|
|
install_docker_if_missing
|
|
docker compose version >/dev/null
|
|
|
|
commit_sha="$(git rev-parse HEAD)"
|
|
commit_short="$(git rev-parse --short=12 HEAD)"
|
|
image="dobotai-dingtalk:local-${commit_short}"
|
|
echo "[1/2] 构建DobotAI应用镜像:$image"
|
|
docker build --build-arg "GOPROXY=https://goproxy.cn,direct" --build-arg "VERSION=local-${commit_short}" --build-arg "COMMIT_SHA=${commit_sha}" --build-arg "BUILD_TIME=$(date -u +%Y-%m-%dT%H:%M:%SZ)" --label "org.opencontainers.image.revision=${commit_sha}" --tag "$image" "$repo_root"
|
|
|
|
echo "[2/2] 安装应用容器资产;阿里云RDS将在配置后检查或初始化"
|
|
export DOBOTAI_IMAGE="$image"
|
|
export DOBOTAI_SOURCE_ROOT="$repo_root"
|
|
exec bash "$repo_root/deploy/dobotai-dingtalk/install-docker.sh"
|