Compare commits
No commits in common. "44d4237becdee95b26d603865ec0819e9a4fcfae" and "6d1bb15ea6d49767ead4e220b000784656d114b9" have entirely different histories.
44d4237bec
...
6d1bb15ea6
|
@ -1,8 +0,0 @@
|
||||||
/**
|
|
||||||
|
|
||||||
!main.go
|
|
||||||
!/lib
|
|
||||||
!/templates
|
|
||||||
!/static
|
|
||||||
!/go.mod
|
|
||||||
!/go.sum
|
|
|
@ -2,5 +2,4 @@ snapshots.dat
|
||||||
.env
|
.env
|
||||||
dist
|
dist
|
||||||
data.db
|
data.db
|
||||||
data.sqlite
|
data.sqlite
|
||||||
dev_data
|
|
53
Dockerfile
53
Dockerfile
|
@ -1,53 +0,0 @@
|
||||||
# Build Stage
|
|
||||||
FROM debian:bullseye-slim
|
|
||||||
ENV IS_DOCKER TRUE
|
|
||||||
|
|
||||||
LABEL org.opencontainers.image.source https://github.com/JustKato/drive-health
|
|
||||||
|
|
||||||
# Install build dependencies and runtime dependencies
|
|
||||||
RUN apt-get update && apt-get install -y \
|
|
||||||
gcc \
|
|
||||||
musl-dev \
|
|
||||||
libsqlite3-dev \
|
|
||||||
libsqlite3-0 \
|
|
||||||
wget \
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
# Manually install Go 1.21
|
|
||||||
ENV GOLANG_VERSION 1.21.0
|
|
||||||
RUN wget https://golang.org/dl/go${GOLANG_VERSION}.linux-amd64.tar.gz -O go.tgz \
|
|
||||||
&& tar -C /usr/local -xzf go.tgz \
|
|
||||||
&& rm go.tgz
|
|
||||||
ENV PATH /usr/local/go/bin:$PATH
|
|
||||||
|
|
||||||
# Set the environment variable for Go
|
|
||||||
ENV GOPATH=/go
|
|
||||||
ENV PATH=$GOPATH/bin:$PATH
|
|
||||||
ENV GO111MODULE=on
|
|
||||||
|
|
||||||
# Create the directory and set it as the working directory
|
|
||||||
WORKDIR /app
|
|
||||||
|
|
||||||
# Copy the Go files and download dependencies
|
|
||||||
COPY go.mod go.sum ./
|
|
||||||
RUN go mod download
|
|
||||||
|
|
||||||
# Copy the source from the current directory to the Working Directory inside the container
|
|
||||||
COPY . .
|
|
||||||
|
|
||||||
# Build the Go app
|
|
||||||
RUN go build -o drive-health
|
|
||||||
|
|
||||||
# Cleanup build dependencies to reduce image size
|
|
||||||
RUN apt-get purge -y gcc musl-dev libsqlite3-dev wget \
|
|
||||||
&& apt-get autoremove -y \
|
|
||||||
&& apt-get clean
|
|
||||||
|
|
||||||
# Expose the necessary port
|
|
||||||
EXPOSE 8080
|
|
||||||
|
|
||||||
# Volume for external data
|
|
||||||
VOLUME [ "/data" ]
|
|
||||||
|
|
||||||
# Command to run the executable
|
|
||||||
CMD ["./drive-health"]
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
Drive Health is a program written in golang to help with tracking and monitoring of your hardware's temperature.
|
Drive Health is a program written in golang to help with tracking and monitoring of your hardware's temperature.
|
||||||
|
|
||||||
This tool has been with the purpose of installing it in different servers I own with different configurations to help keep track of the temperature of different hard-disks, ssds, nvme drives, etc... The testing has been very limited to only 4 different computers and not on laptops so expect some mishaps.
|
This tool has been created by [me](https://danlegt.com) with the purpose of installing it in different servers I own with different configurations to help keep track of the temperature of different hard-disks, ssds, nvme drives, etc... The testing has been very limited to only 4 different computers and not on laptops so expect some mishaps.
|
||||||
|
|
||||||
![UI Example](./media/design_v1.webp)
|
![UI Example](./media/design_v1.webp)
|
||||||
|
|
||||||
|
|
14
build.sh
14
build.sh
|
@ -1,19 +1,17 @@
|
||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
|
|
||||||
set -o pipefail
|
|
||||||
set -u
|
|
||||||
|
|
||||||
APP_NAME="drive-health"
|
APP_NAME="drive-health"
|
||||||
DIST_DIR="${DIST_DIR:-dist}"
|
DIST_DIR="dist"
|
||||||
|
|
||||||
# Create the dist directory if it doesn't exist
|
# Create the dist directory if it doesn't exist
|
||||||
mkdir -p $DIST_DIR
|
mkdir -p $DIST_DIR
|
||||||
|
|
||||||
# Build the application
|
# Build the application
|
||||||
echo "Building the application..."
|
echo "Building the application..."
|
||||||
GOOS=linux CGO_ENABLED=1 GOARCH=amd64 go build -o $DIST_DIR/$APP_NAME
|
GOOS=linux GOARCH=amd64 go build -o $DIST_DIR/$APP_NAME
|
||||||
|
|
||||||
# echo "Copying additional resources..."
|
# Copy additional resources (like .env, static files, templates) to the dist directory
|
||||||
cp -r static templates $DIST_DIR/
|
echo "Copying additional resources..."
|
||||||
|
cp -r .env static templates $DIST_DIR/
|
||||||
|
|
||||||
echo "Compilation and packaging completed."
|
echo "Compilation and packaging completed."
|
||||||
|
|
65
deploy.sh
65
deploy.sh
|
@ -1,65 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Function to display messages in color
|
|
||||||
echo_color() {
|
|
||||||
color=$1
|
|
||||||
text=$2
|
|
||||||
case $color in
|
|
||||||
"green") echo -e "\033[0;32m$text\033[0m" ;;
|
|
||||||
"yellow") echo -e "\033[0;33m$text\033[0m" ;;
|
|
||||||
"red") echo -e "\033[0;31m$text\033[0m" ;;
|
|
||||||
*) echo "$text" ;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
# Getting GIT_VERSION from the most recent tag or commit hash
|
|
||||||
GIT_VERSION=$(git describe --tags --always)
|
|
||||||
if [ -z "$GIT_VERSION" ]; then
|
|
||||||
echo_color red "Error: Unable to determine GIT_VERSION."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Run tests before proceeding
|
|
||||||
echo_color yellow "Running tests..."
|
|
||||||
if ! go test; then
|
|
||||||
echo_color red "Tests failed. Cancelling build process."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo_color green "All tests passed successfully."
|
|
||||||
|
|
||||||
echo_color green "Starting the Docker build process with version $GIT_VERSION..."
|
|
||||||
|
|
||||||
LATEST_IMAGE_NAME="ghcr.io/justkato/drive-health:latest"
|
|
||||||
IMAGE_NAME="ghcr.io/justkato/drive-health:$GIT_VERSION"
|
|
||||||
echo_color yellow "Image to be built: $IMAGE_NAME"
|
|
||||||
|
|
||||||
# Confirmation to build
|
|
||||||
read -p "Are you sure you want to build an image? (y/N) " response
|
|
||||||
if [[ "$response" =~ ^([yY][eE][sS]|[yY])$ ]]; then
|
|
||||||
# Building the Docker image
|
|
||||||
echo "Building Docker image: $IMAGE_NAME"
|
|
||||||
docker build --no-cache -t $IMAGE_NAME .
|
|
||||||
|
|
||||||
# Also tag this build as 'latest'
|
|
||||||
echo "Tagging image as latest: $LATEST_IMAGE_NAME"
|
|
||||||
docker tag $IMAGE_NAME $LATEST_IMAGE_NAME
|
|
||||||
else
|
|
||||||
echo_color red "Build cancelled."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Prompt to push the image
|
|
||||||
read -p "Push image to repository? (y/N) " push_response
|
|
||||||
if [[ "$push_response" =~ ^([yY][eE][sS]|[yY])$ ]]; then
|
|
||||||
# Pushing the image
|
|
||||||
echo "Pushing image: $IMAGE_NAME"
|
|
||||||
docker push $IMAGE_NAME
|
|
||||||
|
|
||||||
# Pushing the 'latest' image
|
|
||||||
echo "Pushing latest image: $LATEST_IMAGE_NAME"
|
|
||||||
docker push $LATEST_IMAGE_NAME
|
|
||||||
else
|
|
||||||
echo_color red "Push cancelled."
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo_color green "Ending the Docker build process..."
|
|
|
@ -1,14 +0,0 @@
|
||||||
version: "3.8"
|
|
||||||
|
|
||||||
services:
|
|
||||||
drive-health:
|
|
||||||
# Build the current image
|
|
||||||
build: .
|
|
||||||
# Read straight from the .env file, or use the environment path
|
|
||||||
env_file:
|
|
||||||
- .env
|
|
||||||
volumes:
|
|
||||||
- ./dev_data:/data
|
|
||||||
# Setup application ports
|
|
||||||
ports:
|
|
||||||
- 8080:8080
|
|
|
@ -1,17 +0,0 @@
|
||||||
version: "3.8"
|
|
||||||
|
|
||||||
services:
|
|
||||||
drive-health:
|
|
||||||
# Latest image pull, mention the specific version here please.
|
|
||||||
image: ghcr.io/justkato/drive-health:latest
|
|
||||||
# Restart in case of crashing
|
|
||||||
restart: unless-stopped
|
|
||||||
# Load environment variables from .env file
|
|
||||||
env_file:
|
|
||||||
- .env
|
|
||||||
# Mount the volume to the local drive
|
|
||||||
volumes:
|
|
||||||
- ./data:/data
|
|
||||||
# Setup application ports
|
|
||||||
ports:
|
|
||||||
- 5003:8080
|
|
|
@ -17,8 +17,6 @@ type DHConfig struct {
|
||||||
IdentityUsername string `json:"identityUsername"`
|
IdentityUsername string `json:"identityUsername"`
|
||||||
IdentityPassword string `json:"identityPassword"`
|
IdentityPassword string `json:"identityPassword"`
|
||||||
|
|
||||||
IsDocker bool `json:isDocker`
|
|
||||||
|
|
||||||
DebugMode bool `json:"debugMode"`
|
DebugMode bool `json:"debugMode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,8 +36,6 @@ func GetConfiguration() *DHConfig {
|
||||||
IdentityUsername: "admin",
|
IdentityUsername: "admin",
|
||||||
IdentityPassword: "admin",
|
IdentityPassword: "admin",
|
||||||
|
|
||||||
IsDocker: false,
|
|
||||||
|
|
||||||
Listen: ":8080",
|
Listen: ":8080",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,13 +79,5 @@ func GetConfiguration() *DHConfig {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if val, exists := os.LookupEnv("IS_DOCKER"); exists {
|
|
||||||
if isDocker, err := strconv.ParseBool(val); err == nil {
|
|
||||||
config.IsDocker = isDocker
|
|
||||||
|
|
||||||
config.DatabaseFilePath = "/data/data.sqlite"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return config
|
return config
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue