feat(docker): 支持通过构建参数注入编译时间
在 Dockerfile 中添加 BUILD_DATE 构建参数,并通过 ldflags 将编译时间注入到二进制文件中。 同时更新 build.sh 脚本,在构建镜像时传入当前时间作为 BUILD_DATE 参数。 refactor(build): 优化 build.sh 脚本结构与可读性 对 build.sh 脚本中的函数进行了缩进统一和结构调整,提高代码可读性和维护性。 新增 bin 命令用于直接编译并压缩二进制文件。 feat(main): 添加版本与构建信息显示功能 在 main.go 中增加 BuildDate 变量用于存储构建时间,并支持通过 -h 或 --help 参数查看帮助信息, 包括版本号、联系邮箱以及构建日期等元数据。 chore(blacklist): 移除默认黑名单条目 从 blacklist.txt 文件中移除默认的 *.baidu.com 黑名单规则。 docs(readme): 清理 README.md 文件末尾空行 删除 README.md 文件最后多余的空白行,保持文档整洁。
This commit is contained in:
101
build.sh
101
build.sh
@@ -27,70 +27,83 @@ KEY_FILE="jinllpay.com.key"
|
||||
# ---------- 函数区 ----------
|
||||
|
||||
build() {
|
||||
echo "🔨 Building Docker image: ${IMAGE_NAME}:${TAG} ..."
|
||||
docker build -t "${IMAGE_NAME}:${TAG}" .
|
||||
echo "✅ Build complete."
|
||||
echo "🔨 Building Docker image: ${IMAGE_NAME}:${TAG} ..."
|
||||
docker build --build-arg BUILD_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ") \
|
||||
-t "${IMAGE_NAME}:${TAG}" .
|
||||
|
||||
echo "✅ Build complete."
|
||||
}
|
||||
|
||||
run() {
|
||||
echo "🚀 Starting container ${CONTAINER_NAME}..."
|
||||
echo "🚀 Starting container ${CONTAINER_NAME}..."
|
||||
|
||||
# 确保旧容器不冲突
|
||||
if docker ps -a --format '{{.Names}}' | grep -w "${CONTAINER_NAME}" >/dev/null 2>&1; then
|
||||
echo "⚠️ Existing container found. Removing..."
|
||||
docker rm -f "${CONTAINER_NAME}" >/dev/null 2>&1 || true
|
||||
fi
|
||||
# 确保旧容器不冲突
|
||||
if docker ps -a --format '{{.Names}}' | grep -w "${CONTAINER_NAME}" >/dev/null 2>&1; then
|
||||
echo "⚠️ Existing container found. Removing..."
|
||||
docker rm -f "${CONTAINER_NAME}" >/dev/null 2>&1 || true
|
||||
fi
|
||||
|
||||
docker run -d \
|
||||
--name "${CONTAINER_NAME}" \
|
||||
--memory=256m \
|
||||
--memory-swap=384m \
|
||||
--memory-reservation=128m \
|
||||
-p ${PORT}:853 \
|
||||
-e CERT_FILE="/app/${CERT_FILE}" \
|
||||
-e KEY_FILE="/app/${KEY_FILE}" \
|
||||
-v "$(pwd)/${CERT_FILE}:/app/${CERT_FILE}:ro" \
|
||||
-v "$(pwd)/${KEY_FILE}:/app/${KEY_FILE}:ro" \
|
||||
"${IMAGE_NAME}:${TAG}"
|
||||
docker run -d \
|
||||
--name "${CONTAINER_NAME}" \
|
||||
--memory=256m \
|
||||
--memory-swap=384m \
|
||||
--memory-reservation=128m \
|
||||
-p ${PORT}:853 \
|
||||
-e CERT_FILE="/app/${CERT_FILE}" \
|
||||
-e KEY_FILE="/app/${KEY_FILE}" \
|
||||
-v "$(pwd)/${CERT_FILE}:/app/${CERT_FILE}:ro" \
|
||||
-v "$(pwd)/${KEY_FILE}:/app/${KEY_FILE}:ro" \
|
||||
"${IMAGE_NAME}:${TAG}"
|
||||
|
||||
echo "✅ Container started on port ${PORT}."
|
||||
echo "✅ Container started on port ${PORT}."
|
||||
}
|
||||
|
||||
logs() {
|
||||
echo "📜 Showing logs..."
|
||||
docker logs -f "${CONTAINER_NAME}"
|
||||
echo "📜 Showing logs..."
|
||||
docker logs -f "${CONTAINER_NAME}"
|
||||
}
|
||||
|
||||
stop() {
|
||||
echo "🛑 Stopping container..."
|
||||
docker stop "${CONTAINER_NAME}" >/dev/null 2>&1 || true
|
||||
docker rm "${CONTAINER_NAME}" >/dev/null 2>&1 || true
|
||||
echo "✅ Container stopped and removed."
|
||||
echo "🛑 Stopping container..."
|
||||
docker stop "${CONTAINER_NAME}" >/dev/null 2>&1 || true
|
||||
docker rm "${CONTAINER_NAME}" >/dev/null 2>&1 || true
|
||||
echo "✅ Container stopped and removed."
|
||||
}
|
||||
|
||||
clean() {
|
||||
stop
|
||||
echo "🧹 Removing image ${IMAGE_NAME}:${TAG}..."
|
||||
docker rmi "${IMAGE_NAME}:${TAG}" >/dev/null 2>&1 || true
|
||||
echo "✅ Cleanup complete."
|
||||
stop
|
||||
echo "🧹 Removing image ${IMAGE_NAME}:${TAG}..."
|
||||
docker rmi "${IMAGE_NAME}:${TAG}" >/dev/null 2>&1 || true
|
||||
echo "✅ Cleanup complete."
|
||||
}
|
||||
|
||||
rebuild() {
|
||||
clean
|
||||
build
|
||||
run
|
||||
clean
|
||||
build
|
||||
run
|
||||
}
|
||||
|
||||
bin() {
|
||||
DATE=$(date "+%Y-%m-%dT%H:%M:%S")
|
||||
a="'"
|
||||
eval "CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -a -ldflags ${a}-X main.BuildDate=${DATE} -extldflags \"-static -lc\"${a}"
|
||||
|
||||
if test -f dot; then
|
||||
upx -9 dot
|
||||
fi
|
||||
}
|
||||
|
||||
# ---------- 主逻辑 ----------
|
||||
case "$1" in
|
||||
build) build ;;
|
||||
run) run ;;
|
||||
logs) logs ;;
|
||||
stop) stop ;;
|
||||
clean) clean ;;
|
||||
rebuild) rebuild ;;
|
||||
*)
|
||||
echo "Usage: ./build.sh [build|run|logs|stop|clean|rebuild]"
|
||||
exit 1
|
||||
;;
|
||||
bin) bin ;;
|
||||
build) build ;;
|
||||
run) run ;;
|
||||
logs) logs ;;
|
||||
stop) stop ;;
|
||||
clean) clean ;;
|
||||
rebuild) rebuild ;;
|
||||
*)
|
||||
echo "Usage: ./build.sh [build|run|logs|stop|clean|rebuild]"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user