#!/bin/bash set -e echo "=== AME Remote Job Manager — Entrypoint ===" # Create mount directories mkdir -p /watch /output /ame-logs /mnt/smb-share # Settings file path SETTINGS_FILE="/data/settings.json" SMB_SHARE_PATH="//172.18.210.5/ame" # Function to get setting value from JSON get_setting() { local key=$1 local default=$2 if [ -f "$SETTINGS_FILE" ]; then value=$(grep -o "\"$key\":\"[^\"]*\"" "$SETTINGS_FILE" 2>/dev/null | cut -d'"' -f4) if [ -n "$value" ]; then echo "$value" return fi fi echo "$default" } # Read SMB credentials from settings.json, env vars, or use embedded defaults SMB_USERNAME=$(get_setting 'smbUsername' "${SMB_USERNAME:-smb}") SMB_PASSWORD=$(get_setting 'smbPassword' "${SMB_PASSWORD:-Production2020!}") SMB_DOMAIN=$(get_setting 'smbDomain' "${SMB_DOMAIN:-}") # Try to mount SMB share only if credentials are provided if [ -n "$SMB_USERNAME" ] && [ -n "$SMB_PASSWORD" ]; then echo "Mounting SMB share with credentials..." # Build mount options MOUNT_OPTS="username=$SMB_USERNAME,password=$SMB_PASSWORD" if [ -n "$SMB_DOMAIN" ]; then MOUNT_OPTS="$MOUNT_OPTS,domain=$SMB_DOMAIN" fi # Add standard options for Linux mounts MOUNT_OPTS="$MOUNT_OPTS,uid=1000,gid=1000,file_mode=0755,dir_mode=0755,vers=3.0" if mount -t cifs "$SMB_SHARE_PATH" /mnt/smb-share -o "$MOUNT_OPTS" 2>&1; then echo "✓ SMB share mounted at /mnt/smb-share" else echo "⚠ Failed to mount SMB share. Check credentials and network connectivity." echo " Will continue with local volumes. Mount SMB and restart container to use network share." fi else echo "⚠ No SMB credentials found in settings. Skipping SMB mount." echo " Configure SMB credentials in the settings GUI and restart the container." fi # Bind mount the SMB directories to container paths (if mount succeeded) if mountpoint -q /mnt/smb-share; then echo "Binding SMB subdirectories..." mkdir -p /mnt/smb-share/watch /mnt/smb-share/output /mnt/smb-share/logs mount --bind /mnt/smb-share/watch /watch 2>/dev/null || echo "⚠ Could not bind watch folder" mount --bind /mnt/smb-share/output /output 2>/dev/null || echo "⚠ Could not bind output folder" mount --bind /mnt/smb-share/logs /ame-logs 2>/dev/null || echo "⚠ Could not bind logs folder" echo "✓ Mount points configured" else echo "⚠ SMB share not mounted. Using local docker volumes as fallback." fi # Verify watch folder exists if [ ! -d "/watch" ]; then mkdir -p /watch echo "Created /watch directory" fi echo "Starting Node.js application..." exec node server.js