htknow/build-docker.sh
Defeng fe8f0a875a
Some checks failed
CI / Frontend (Vite) (push) Successful in 24s
CI / Docker Release Tar (push) Has been skipped
CI / Backend (Rust) (push) Failing after 10m15s
Initial project import
2026-07-24 10:28:31 +08:00

63 lines
1.7 KiB
Bash

#!/bin/bash
set -e
# Parse command line arguments
BUILD_MODE="release"
PROFILING_FLAG=""
CUSTOM_IMAGE_TAG="${IMAGE_TAG:-}"
if [ "${1:-}" = "debug" ] || [ "${1:-}" = "--debug" ]; then
BUILD_MODE="debug"
PROFILING_FLAG="--features profiling"
fi
# Build frontend
cd frontend
npm install
npm run build
cd ..
if [ "$BUILD_MODE" = "debug" ]; then
echo "Building htknow for debug with profiling..."
cargo build ${PROFILING_FLAG}
if [ -n "$CUSTOM_IMAGE_TAG" ]; then
IMAGE_TAG="${CUSTOM_IMAGE_TAG}-debug"
else
IMAGE_TAG="$(date +%Y%m%d%H%M)-debug"
fi
DOCKERFILE="Dockerfile.debug"
echo "Using Dockerfile.debug with jemalloc profiling tools"
else
echo "Building htknow for release (profiling disabled)..."
cargo build --release
if [ -n "$CUSTOM_IMAGE_TAG" ]; then
IMAGE_TAG="${CUSTOM_IMAGE_TAG}"
else
IMAGE_TAG="$(date +%Y%m%d%H%M)"
fi
DOCKERFILE="Dockerfile"
fi
# Build Docker image
echo "Building Docker image with ${DOCKERFILE}..."
docker build -f "${DOCKERFILE}" -t "htknow:${IMAGE_TAG}" -t htknow:latest .
echo "Build complete!"
echo ""
echo "Image tag: htknow:${IMAGE_TAG}"
echo "Latest tag: htknow:latest"
echo "BUILT_IMAGE=htknow:${IMAGE_TAG}"
echo "BUILT_LATEST_IMAGE=htknow:latest"
echo "Build mode: ${BUILD_MODE}"
echo ""
echo "To run the container:"
echo " docker-compose up -d"
echo ""
echo "Or manually:"
echo " docker run -d -p 8080:8080 -v \$(pwd)/data:/app/data --name htknow htknow:${IMAGE_TAG}"
echo ""
echo "Usage:"
echo " ./build-docker.sh # Build in release mode (default)"
echo " ./build-docker.sh debug # Build in debug mode"
echo " IMAGE_TAG=v1.2.3 ./build-docker.sh # Use custom image tag"