Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

vnc_startup.sh fails when running in AWS ECS #216

Open
fountopoulos opened this issue Feb 3, 2025 · 0 comments
Open

vnc_startup.sh fails when running in AWS ECS #216

fountopoulos opened this issue Feb 3, 2025 · 0 comments

Comments

@fountopoulos
Copy link

Image:
Dockerfile.debian-xfce-vnc

Tag:
latest

Short Overview:
The vnc_startup.sh script fails to work correctly in AWS ECS because it uses the hostname -i command, which does not work in ECS environments. In AWS ECS, the hostname -i command fails with the error:

hostname: Name or service not known

This happens due to ECS's networking configurations. To mitigate this, we should implement a fallback to 127.0.0.1 when hostname -i fails.

Detailed Error Description:
In AWS ECS, the hostname -i command fails to return a valid IP address due to the network configuration of the container instances. As a result, the vnc_startup.sh script breaks, causing issues when attempting to start the VNC server.

Proposed Solution:
To fix this, I suggest modifying the script to gracefully handle the failure of hostname -i and fall back to 127.0.0.1 instead of terminating or causing errors. I recommend replacing lines 63-64 of the vnc_startup.sh script located at

with the following code:

## resolve_vnc_connection
# Function to get the container's IP address with a fallback to 127.0.0.1
# This function attempts to retrieve the IP using 'hostname -i' and handles failure gracefully.
# In AWS ECS, 'hostname -i' may fail with "hostname: Name or service not known"
# due to ECS networking configurations, which is why we fall back to 127.0.0.1.
get_ip_address() {
  local ip
  # Temporarily disable 'set -e' to allow handling the error gracefully
  set +e
  ip=$(hostname -i 2>/dev/null)
  if [ $? -ne 0 ]; then
    # Error case: If 'hostname -i' fails, capture the error message and print a warning
    ERROR_MESSAGE=$(hostname -i 2>&1) # Capture the error message
    ip="127.0.0.1"
    echo "WARNING: Unable to determine IP using 'hostname -i'. Falling back to $ip. Error: $ERROR_MESSAGE" >&2
  fi
  # Re-enable 'set -e' after handling the error
  set -e
  echo "$ip"
}

echo "VNC Server will start on IP: $(get_ip_address)"

Additional Information:

  • Error Message Example:
    hostname: Name or service not known
  • Reason for Change: The hostname -i command fails in AWS ECS, so we need to fall back to 127.0.0.1 for the IP address to ensure the script works in ECS environments.

Note:
I was unable to create a pull request (PR) due to an "Access Denied" error on my account. If possible, please consider applying this change directly to the repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant