Fix container networking: Use container IP for health checks
Some checks failed
Release - Northern Thailand Ping River Monitor / Create Release (push) Successful in 6s
Security & Dependency Updates / Dependency Security Scan (push) Successful in 26s
Security & Dependency Updates / License Compliance (push) Successful in 11s
Release - Northern Thailand Ping River Monitor / Test Release Build (3.12) (push) Successful in 17s
Release - Northern Thailand Ping River Monitor / Build Release Images (push) Successful in 6m9s
Release - Northern Thailand Ping River Monitor / Security Scan (push) Successful in 7s
Release - Northern Thailand Ping River Monitor / Test Release Deployment (push) Failing after 1m23s
Release - Northern Thailand Ping River Monitor / Notify Release (push) Successful in 1s
Security & Dependency Updates / Check for Dependency Updates (push) Successful in 20s
Security & Dependency Updates / Code Quality Metrics (push) Successful in 16s
Release - Northern Thailand Ping River Monitor / Test Release Build (3.10) (push) Successful in 15s
Release - Northern Thailand Ping River Monitor / Test Release Build (3.11) (push) Successful in 13s
Release - Northern Thailand Ping River Monitor / Test Release Build (3.9) (push) Successful in 15s
Security & Dependency Updates / Security Summary (push) Successful in 7s
Some checks failed
Release - Northern Thailand Ping River Monitor / Create Release (push) Successful in 6s
Security & Dependency Updates / Dependency Security Scan (push) Successful in 26s
Security & Dependency Updates / License Compliance (push) Successful in 11s
Release - Northern Thailand Ping River Monitor / Test Release Build (3.12) (push) Successful in 17s
Release - Northern Thailand Ping River Monitor / Build Release Images (push) Successful in 6m9s
Release - Northern Thailand Ping River Monitor / Security Scan (push) Successful in 7s
Release - Northern Thailand Ping River Monitor / Test Release Deployment (push) Failing after 1m23s
Release - Northern Thailand Ping River Monitor / Notify Release (push) Successful in 1s
Security & Dependency Updates / Check for Dependency Updates (push) Successful in 20s
Security & Dependency Updates / Code Quality Metrics (push) Successful in 16s
Release - Northern Thailand Ping River Monitor / Test Release Build (3.10) (push) Successful in 15s
Release - Northern Thailand Ping River Monitor / Test Release Build (3.11) (push) Successful in 13s
Release - Northern Thailand Ping River Monitor / Test Release Build (3.9) (push) Successful in 15s
Security & Dependency Updates / Security Summary (push) Successful in 7s
Root Cause Identified: - Gitea runner runs inside docker.gitea.com/runner-images:ubuntu-latest - App container runs as sibling container, not accessible via localhost:8080 - Port mapping works for host access, but not container-to-container Networking Solution: - Get container IP with: docker inspect ping-river-monitor-test - Connect directly to container IP:8000 (internal port) - Fallback to localhost:8080 if IP detection fails - Bypasses localhost networking issues in containerized CI Updated Health Checks: - Use container IP for direct communication - Test internal port 8000 instead of mapped port 8080 - More reliable in containerized CI environments - Better debugging with container IP logging Should resolve curl connection failures in Gitea CI environment
This commit is contained in:
@@ -223,11 +223,21 @@ jobs:
|
||||
for i in {1..15}; do
|
||||
echo "⏳ Attempt $i/15: Testing health endpoint..."
|
||||
|
||||
# Test health endpoint with detailed debugging
|
||||
# Test health endpoint with container networking
|
||||
echo "Testing health endpoint..."
|
||||
|
||||
# First try with verbose output to see what's happening
|
||||
response=$(curl -s --max-time 10 --connect-timeout 5 -w "HTTP_CODE:%{http_code}" http://127.0.0.1:8080/health)
|
||||
# Get the container's IP address for direct communication
|
||||
CONTAINER_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ping-river-monitor-test)
|
||||
echo "Container IP: $CONTAINER_IP"
|
||||
|
||||
# Test using container IP directly (port 8000 inside container)
|
||||
if [ -n "$CONTAINER_IP" ]; then
|
||||
response=$(curl -s --max-time 10 --connect-timeout 5 -w "HTTP_CODE:%{http_code}" http://$CONTAINER_IP:8000/health)
|
||||
else
|
||||
# Fallback to localhost if IP detection fails
|
||||
response=$(curl -s --max-time 10 --connect-timeout 5 -w "HTTP_CODE:%{http_code}" http://127.0.0.1:8080/health)
|
||||
fi
|
||||
|
||||
http_code=$(echo "$response" | grep -o "HTTP_CODE:[0-9]*" | cut -d: -f2)
|
||||
response_body=$(echo "$response" | sed 's/HTTP_CODE:[0-9]*$//')
|
||||
|
||||
@@ -248,13 +258,24 @@ jobs:
|
||||
fi
|
||||
done
|
||||
|
||||
# Test API endpoints with better error handling
|
||||
# Test API endpoints with container networking
|
||||
echo "🧪 Testing API endpoints..."
|
||||
|
||||
# Get container IP for direct communication
|
||||
CONTAINER_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ping-river-monitor-test)
|
||||
echo "Using container IP: $CONTAINER_IP"
|
||||
|
||||
endpoints=("health" "docs" "stations" "metrics")
|
||||
for endpoint in "${endpoints[@]}"; do
|
||||
echo "Testing /$endpoint..."
|
||||
response=$(curl -s --max-time 10 -w "HTTP_CODE:%{http_code}" http://127.0.0.1:8080/$endpoint)
|
||||
|
||||
# Use container IP if available, otherwise fallback to localhost
|
||||
if [ -n "$CONTAINER_IP" ]; then
|
||||
response=$(curl -s --max-time 10 -w "HTTP_CODE:%{http_code}" http://$CONTAINER_IP:8000/$endpoint)
|
||||
else
|
||||
response=$(curl -s --max-time 10 -w "HTTP_CODE:%{http_code}" http://127.0.0.1:8080/$endpoint)
|
||||
fi
|
||||
|
||||
http_code=$(echo "$response" | grep -o "HTTP_CODE:[0-9]*" | cut -d: -f2)
|
||||
|
||||
if [ "$http_code" = "200" ]; then
|
||||
|
Reference in New Issue
Block a user