first commit
This commit is contained in:
105
install_postgres.sh
Normal file
105
install_postgres.sh
Normal file
@@ -0,0 +1,105 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
echo "=== PostgreSQL Infra Installer ==="
|
||||
|
||||
# Detect working directory (should be infra/postgres)
|
||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
cd "$SCRIPT_DIR"
|
||||
|
||||
echo "Using infra directory: $SCRIPT_DIR"
|
||||
|
||||
# -----------------------------------------------------------
|
||||
# 1. Ensure directories exist
|
||||
# -----------------------------------------------------------
|
||||
echo "→ Creating required directories..."
|
||||
mkdir -p data
|
||||
mkdir -p backup
|
||||
|
||||
# -----------------------------------------------------------
|
||||
# 2. Permissions
|
||||
# -----------------------------------------------------------
|
||||
echo "→ Setting directory permissions..."
|
||||
sudo chown -R "$USER:$USER" data backup
|
||||
|
||||
# -----------------------------------------------------------
|
||||
# 3. Create .env if missing
|
||||
# -----------------------------------------------------------
|
||||
if [ ! -f ".env" ]; then
|
||||
echo "→ Creating .env file..."
|
||||
cat <<EOF > .env
|
||||
POSTGRES_PASSWORD=$(openssl rand -hex 16)
|
||||
PGADMIN_PASSWORD=$(openssl rand -hex 16)
|
||||
EOF
|
||||
echo "Generated random passwords in .env"
|
||||
else
|
||||
echo "→ .env file already exists; skipping creation."
|
||||
fi
|
||||
|
||||
echo "Current .env:"
|
||||
cat .env
|
||||
echo ""
|
||||
|
||||
# -----------------------------------------------------------
|
||||
# 4. Verify Docker & Docker Compose
|
||||
# -----------------------------------------------------------
|
||||
echo "→ Checking Docker installation..."
|
||||
if ! command -v docker &> /dev/null; then
|
||||
echo "ERROR: Docker is not installed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "→ Checking Docker Compose..."
|
||||
if ! docker compose version &> /dev/null; then
|
||||
echo "ERROR: Docker Compose V2 is not installed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# -----------------------------------------------------------
|
||||
# 5. Start PostgreSQL stack
|
||||
# -----------------------------------------------------------
|
||||
echo "→ Starting PostgreSQL Docker stack..."
|
||||
docker compose up -d
|
||||
|
||||
echo "→ Waiting for PostgreSQL to report healthy status..."
|
||||
sleep 3
|
||||
docker ps --filter "name=postgres-db"
|
||||
|
||||
# -----------------------------------------------------------
|
||||
# 6. Setup backup container
|
||||
# -----------------------------------------------------------
|
||||
echo "→ Checking backup service..."
|
||||
|
||||
if [ -d "backup" ] && [ -f "backup/docker-compose.yml" ]; then
|
||||
echo "→ Starting backup runner..."
|
||||
cd backup
|
||||
docker compose up -d
|
||||
cd "$SCRIPT_DIR"
|
||||
else
|
||||
echo "⚠ Backup runner folder missing. Expected: ./backup/docker-compose.yml"
|
||||
echo "Skipping backup setup."
|
||||
fi
|
||||
|
||||
# -----------------------------------------------------------
|
||||
# 7. Summary
|
||||
# -----------------------------------------------------------
|
||||
echo ""
|
||||
echo "===================================================="
|
||||
echo " PostgreSQL Infra Installed Successfully"
|
||||
echo "===================================================="
|
||||
echo "Host machine: $(hostname)"
|
||||
echo "Database port: 5432 (LAN accessible)"
|
||||
echo "Data dir: $SCRIPT_DIR/data"
|
||||
echo "Backups: $SCRIPT_DIR/backup/"
|
||||
echo ""
|
||||
echo "Connection string:"
|
||||
echo " postgresql://auction:<POSTGRES_PASSWORD>@192.168.1.159:5432/auctiondb"
|
||||
echo ""
|
||||
echo "Start/Stop commands:"
|
||||
echo " docker compose up -d"
|
||||
echo " docker compose down"
|
||||
echo ""
|
||||
echo "If pgAdmin is enabled, visit:"
|
||||
echo " https://pgadmin.appmodel.nl/"
|
||||
echo ""
|
||||
echo "Done."
|
||||
Reference in New Issue
Block a user