113 lines
3.3 KiB
Bash
113 lines
3.3 KiB
Bash
#!/bin/bash
|
|
# Setup MinIO buckets for all Crew applications
|
|
|
|
set -e
|
|
|
|
MINIO_ALIAS="crewminio"
|
|
MINIO_ENDPOINT="http://crew-minio-prod:9000"
|
|
CONTAINER_NAME="crew-minio-prod"
|
|
DEPLOY_DIR="/var/www/apps/minio-storage"
|
|
|
|
echo "=========================================="
|
|
echo "Setting up MinIO buckets for Crew apps"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
# Load credentials from .env file
|
|
echo "🔑 Loading MinIO credentials from .env"
|
|
if [ -f "$DEPLOY_DIR/.env" ]; then
|
|
set -a
|
|
source "$DEPLOY_DIR/.env"
|
|
set +a
|
|
MINIO_USER="${MINIO_ROOT_USER}"
|
|
MINIO_PASSWORD="${MINIO_ROOT_PASSWORD}"
|
|
elif [ -f ".env" ]; then
|
|
set -a
|
|
source ".env"
|
|
set +a
|
|
MINIO_USER="${MINIO_ROOT_USER}"
|
|
MINIO_PASSWORD="${MINIO_ROOT_PASSWORD}"
|
|
else
|
|
echo "⚠️ .env file not found, using defaults"
|
|
MINIO_USER="minioadmin"
|
|
MINIO_PASSWORD="minioadmin123"
|
|
fi
|
|
|
|
if [ -z "$MINIO_USER" ] || [ -z "$MINIO_PASSWORD" ]; then
|
|
echo "❌ MINIO_ROOT_USER or MINIO_ROOT_PASSWORD not set in .env"
|
|
exit 1
|
|
fi
|
|
|
|
echo "✓ Credentials loaded (User: $MINIO_USER)"
|
|
echo ""
|
|
|
|
# Check if MinIO is running
|
|
if ! docker ps | grep -q "$CONTAINER_NAME"; then
|
|
echo "❌ Error: $CONTAINER_NAME container is not running"
|
|
echo " Available containers:"
|
|
docker ps --format "{{.Names}}"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Installing MinIO Client (mc)..."
|
|
docker exec $CONTAINER_NAME sh -c "
|
|
if ! command -v mc &> /dev/null; then
|
|
curl -O https://dl.min.io/client/mc/release/linux-amd64/mc && \
|
|
chmod +x mc && \
|
|
mv mc /usr/local/bin/
|
|
fi
|
|
"
|
|
|
|
echo "✓ MinIO Client installed"
|
|
echo ""
|
|
|
|
# Configure MinIO client
|
|
echo "⚙️ Configuring MinIO client"
|
|
docker exec $CONTAINER_NAME mc alias set $MINIO_ALIAS $MINIO_ENDPOINT "$MINIO_USER" "$MINIO_PASSWORD"
|
|
echo ""
|
|
|
|
# Create buckets for each application
|
|
BUCKETS=("crewsportswear" "merchbay" "email-reports")
|
|
|
|
for BUCKET in "${BUCKETS[@]}"; do
|
|
echo "Creating bucket: $BUCKET"
|
|
docker exec $CONTAINER_NAME mc mb $MINIO_ALIAS/$BUCKET --ignore-existing
|
|
|
|
# Set public read policy for uploads/images folder
|
|
echo " ↳ Setting public read access for $BUCKET/uploads/images/"
|
|
docker exec $CONTAINER_NAME mc anonymous set download $MINIO_ALIAS/$BUCKET/uploads/images/
|
|
|
|
# Also set for uploads folder to be safe
|
|
echo " ↳ Setting public read access for $BUCKET/uploads/"
|
|
docker exec $CONTAINER_NAME mc anonymous set download $MINIO_ALIAS/$BUCKET/uploads/
|
|
|
|
# Set public read for /t folder (templates/thumbnails)
|
|
echo " ↳ Setting public read access for $BUCKET/t/"
|
|
docker exec $CONTAINER_NAME mc anonymous set download $MINIO_ALIAS/$BUCKET/t/
|
|
|
|
echo " ✓ Bucket $BUCKET ready"
|
|
echo ""
|
|
done
|
|
|
|
echo "=========================================="
|
|
echo "✓ All buckets created successfully!"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "Buckets created:"
|
|
for BUCKET in "${BUCKETS[@]}"; do
|
|
echo " - $BUCKET"
|
|
done
|
|
echo ""
|
|
echo "Access MinIO Console:"
|
|
echo " Local: http://localhost:9001"
|
|
echo " Production: https://console.crewsportswear.app"
|
|
echo ""
|
|
echo "Credentials:"
|
|
echo " Username: $MINIO_USER"
|
|
echo " Password: $MINIO_PASSWORD"
|
|
echo ""
|
|
echo "S3 Endpoint:"
|
|
echo " Local: http://crew-minio:9000 (from app containers)"
|
|
echo " http://localhost:9000 (from host)"
|
|
echo " Production: https://minio.crewsportswear.app"
|