[#7] 统一构建镜像脚本包含master

This commit is contained in:
yuyr 2025-09-28 09:08:18 +00:00
parent ff210a3503
commit 74fa58f82a
9 changed files with 32 additions and 14 deletions

View File

@ -21,6 +21,7 @@ EOF
}
use_intranet=false
build_master=true
build_master_offline=false
while [[ $# -gt 0 ]]; do
@ -29,7 +30,12 @@ while [[ $# -gt 0 ]]; do
use_intranet=true
shift
;;
--master)
build_master=true
shift
;;
--master-offline)
build_master=true
build_master_offline=true
shift
;;
@ -142,11 +148,23 @@ fi
echo ""
if [[ "$build_master_offline" == true ]]; then
echo "🏗️ Building master offline image"
if [[ "$build_master" == true ]]; then
echo ""
echo "🔄 Building Master image..."
pushd "$master_root" >/dev/null
if ./scripts/build_images.sh --offline --tag argus-master:offline; then
images_built+=("argus-master:offline")
master_args=("--tag" "argus-master:latest")
if [[ "$use_intranet" == true ]]; then
master_args+=("--intranet")
fi
if [[ "$build_master_offline" == true ]]; then
master_args+=("--offline")
fi
if ./scripts/build_images.sh "${master_args[@]}"; then
if [[ "$build_master_offline" == true ]]; then
images_built+=("argus-master:offline")
else
images_built+=("argus-master:latest")
fi
else
build_failed=true
fi

View File

@ -13,7 +13,7 @@ services:
- "ARGUS_BUILD_GID=${ARGUS_BUILD_GID:-2015}"
master:
image: argus-master:dev
image: argus-master:latest
container_name: argus-master-agent-e2e
depends_on:
- bind

View File

@ -43,7 +43,7 @@ else
echo "[WARN] bind update script missing at $BIND_ROOT/build/update-dns.sh"
fi
ensure_image "argus-master:dev"
ensure_image "argus-master:latest"
ensure_image "$BIND_IMAGE_TAG"
AGENT_BINARY="$AGENT_ROOT/dist/argus-agent"

View File

@ -11,7 +11,7 @@ Argus Master 是基于 Flask + SQLite 的节点管理服务,负责:
```bash
cd src/master
./scripts/build_images.sh # 生成 argus-master:dev 镜像
./scripts/build_images.sh # 生成 argus-master:latest 镜像
```
如需离线构建,先在有网环境运行准备脚本:
@ -25,7 +25,7 @@ cd src/master
```bash
cd src/master
./scripts/build_images.sh --offline --tag argus-master:dev
./scripts/build_images.sh --offline --tag argus-master:latest
```
若内网缺少 `python:3.11-slim`,请提前在外网 `docker save` 后通过离线介质 `docker load`

View File

@ -8,14 +8,14 @@ Usage: $0 [--intranet] [--offline] [--tag <image_tag>]
Options:
--intranet 使用指定的 PyPI 镜像源(默认清华镜像)。
--offline 完全离线构建,依赖 offline_wheels/ 目录中的离线依赖包。
--tag <image_tag> 自定义镜像标签,默认 argus-master:dev
--tag <image_tag> 自定义镜像标签,默认 argus-master:latest
USAGE
}
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
MODULE_ROOT="$PROJECT_ROOT/src/master"
IMAGE_TAG="${IMAGE_TAG:-argus-master:dev}"
IMAGE_TAG="${IMAGE_TAG:-argus-master:latest}"
DOCKERFILE="src/master/Dockerfile"
BUILD_ARGS=()
OFFLINE_MODE=0

View File

@ -8,7 +8,7 @@ usage() {
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
DEFAULT_OUTPUT="$PROJECT_ROOT/images/argus-master-dev.tar"
IMAGE_TAG="${IMAGE_TAG:-argus-master:dev}"
IMAGE_TAG="${IMAGE_TAG:-argus-master:latest}"
OUTPUT_PATH="$DEFAULT_OUTPUT"
while [[ "$#" -gt 0 ]]; do

View File

@ -1,6 +1,6 @@
services:
master:
image: ${MASTER_IMAGE_TAG:-argus-master:dev}
image: ${MASTER_IMAGE_TAG:-argus-master:latest}
container_name: argus-master-e2e
environment:
- OFFLINE_THRESHOLD_SECONDS=6

View File

@ -17,7 +17,7 @@ SCRIPTS=(
for script in "${SCRIPTS[@]}"; do
echo "[TEST] Running $script"
MASTER_IMAGE_TAG="${MASTER_IMAGE_TAG:-argus-master:dev}" "$SCRIPT_DIR/$script"
MASTER_IMAGE_TAG="${MASTER_IMAGE_TAG:-argus-master:latest}" "$SCRIPT_DIR/$script"
echo "[TEST] $script completed"
echo
done

View File

@ -44,7 +44,7 @@ fi
pushd "$TEST_ROOT" >/dev/null
compose down --remove-orphans || true
MASTER_IMAGE_TAG="${MASTER_IMAGE_TAG:-argus-master:dev}" compose up -d
MASTER_IMAGE_TAG="${MASTER_IMAGE_TAG:-argus-master:latest}" compose up -d
popd >/dev/null
echo "[INFO] Master container is up on http://localhost:31300"