105 lines
2.7 KiB
Bash
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" |