#!/usr/bin/env bash set -Eeuo pipefail SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" IMAGE="${NGINX_IMAGE:-nginx-oneclick:1.28}" NGINX_VERSION="${NGINX_VERSION:-1.28}" ARCHIVE="${NGINX_IMAGE_ARCHIVE:-${SCRIPT_DIR}/nginx-oneclick-1.28.tar.gz}" command -v docker >/dev/null 2>&1 || { echo "错误:未找到 Docker,请先安装 Docker。" >&2 exit 1 } echo "[1/2] 构建镜像 ${IMAGE}(基础镜像 nginx:${NGINX_VERSION})" docker build \ --pull \ --build-arg "NGINX_VERSION=${NGINX_VERSION}" \ --tag "${IMAGE}" \ "${SCRIPT_DIR}" echo "[2/2] 导出镜像 ${ARCHIVE}" mkdir -p "$(dirname -- "${ARCHIVE}")" tmp_archive="${ARCHIVE}.tmp" trap 'rm -f -- "${tmp_archive}"' EXIT docker save "${IMAGE}" | gzip -c >"${tmp_archive}" mv -f -- "${tmp_archive}" "${ARCHIVE}" if command -v sha256sum >/dev/null 2>&1; then sha256sum "${ARCHIVE}" >"${ARCHIVE}.sha256" fi echo echo "构建完成:" echo " 镜像:${IMAGE}" echo " 文件:${ARCHIVE}"