63 lines
1.7 KiB
Bash
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"
|