Files
Gan, Jimmy 6c0d5a4e63 Initial commit: Clean Mold Cost Calculator application
- Flask-based mold cost calculation application
- PostgreSQL database with SQLAlchemy ORM
- Docker/Podman containerization
- Comprehensive documentation in docs/
- Clean, organized codebase without obsolete files
- Production-ready deployment configuration
- Enhanced pytest configuration with coverage reporting
- Master/Development branch structure
2025-06-24 02:30:09 +08:00

47 lines
1.5 KiB
Bash
Executable File

#!/bin/bash
# A universal deployment script that can be run from a local machine or directly on the server.
#
# - When run locally, it will SSH to the server and execute the deployment.
# - When run on the server, it will execute the deployment directly.
set -e
# --- Configuration ---
REMOTE_USER="jimmyg"
REMOTE_HOST="server1"
REMOTE_DIR="/home/jimmyg/mold_cost_online_tool"
SERVER_HOSTNAME="server1" # The hostname of the production server
# --- Deployment Logic ---
deploy_commands() {
echo ">>> [1/4] Navigating to the application directory..."
cd "$REMOTE_DIR"
echo ">>> [2/4] Pulling latest changes from Git..."
git pull
echo ">>> [3/4] Building new container image with the latest code..."
podman-compose build
echo ">>> [4/4] Restarting services with the updated image..."
podman-compose down
podman-compose up -d
echo ""
echo "✅ Deployment finished successfully on $REMOTE_HOST!"
}
# --- Execution ---
# Get the hostname of the machine this script is running on
current_hostname=$(hostname)
if [ "$current_hostname" == "$SERVER_HOSTNAME" ]; then
echo "🚀 Running deployment script directly on the server ($current_hostname)..."
deploy_commands
else
echo "🚀 Running deployment script from local machine ($current_hostname)..."
echo "Connecting to $REMOTE_USER@$REMOTE_HOST..."
# Using 'bash -s' allows us to execute the function on the remote server.
# We pass the function definition and then call it.
ssh "$REMOTE_USER@$REMOTE_HOST" "$(declare -f deploy_commands); deploy_commands"
fi