server-setup/deploy-react-app.sh

105 lines
2.7 KiB
Bash

#!/bin/bash
set -e
echo "Deploying React application using volume mounts..."
# Check if React app is already built
if [ ! -d ~/server-setup/well_mob_pwa/build ]; then
echo "React build directory not found. Building React application..."
cd ~/server-setup/well_mob_pwa
# Set environment variables to bypass TypeScript errors
export CI=false
export TSC_COMPILE_ON_ERROR=true
export ESLINT_NO_DEV_ERRORS=true
export DISABLE_ESLINT_PLUGIN=true
# Build the React app
npm run build
# Check if build was successful
if [ ! -d "build" ]; then
echo "React build failed. Please check the errors."
exit 1
fi
echo "React build completed successfully."
cd ~/server-setup
else
echo "Using existing React build directory."
fi
# Return to server-setup directory
cd ~/server-setup
# Ensure we have the Nginx config for the React app
if [ ! -f ./nginx/conf.d/react.conf ]; then
echo "Creating Nginx configuration for React app..."
mkdir -p ./nginx/conf.d
# Try with sudo if needed
if ! cat > ./nginx/conf.d/react.conf << 'EOL'
server {
listen 80;
server_name react.eluxnetworks.net;
location / {
root /usr/share/nginx/html/react;
try_files $uri $uri/ /index.html;
add_header Cache-Control "no-cache, no-store, must-revalidate";
}
# For static assets
location /assets/ {
root /usr/share/nginx/html/react;
expires 1y;
add_header Cache-Control "public, max-age=31536000";
access_log off;
}
}
EOL
then
echo "Permission denied. Trying with sudo..."
sudo tee ./nginx/conf.d/react.conf > /dev/null << 'EOL'
server {
listen 80;
server_name react.eluxnetworks.net;
location / {
root /usr/share/nginx/html/react;
try_files $uri $uri/ /index.html;
add_header Cache-Control "no-cache, no-store, must-revalidate";
}
# For static assets
location /assets/ {
root /usr/share/nginx/html/react;
expires 1y;
add_header Cache-Control "public, max-age=31536000";
access_log off;
}
}
EOL
fi
fi
# Update permissions for acme.json if needed
if [ -f acme.json ]; then
chmod 600 acme.json
fi
echo "Restarting Docker containers..."
docker compose down
docker compose up -d
# Check container status
echo "Checking container status..."
sleep 5
docker compose ps
echo "React application deployment completed."
echo "Please verify that all sites are working correctly:"
echo "- http://eluxnetworks.net/"
echo "- https://eluxnetworks.net/"
echo "- https://eluxnetworks.net/well_tests/ (user: well_tester, pass: TestWell_2025)"
echo "- https://eluxnetworks.net/shared/"
echo "- https://react.eluxnetworks.net/assets/login-backgroud.png"