From 8f37c46310fbf0b0e8859e8b4480927da4253a29 Mon Sep 17 00:00:00 2001 From: ReachableCEO Date: Tue, 28 Oct 2025 21:40:05 -0500 Subject: [PATCH] . --- .../TSYSDevStack-SupportStack-Demo-Settings | 12 +- .../TSYSDevStack-SupportStack-Demo-Control.sh | 151 +++++++++++++----- .../TSYSDevStack-SupportStack-Demo-Settings | 23 +-- .../config/homepage/services.yaml | 6 +- ...demo-DockerCompose-docker-socket-proxy.yml | 6 +- ...pportstack-demo-DockerCompose-homepage.yml | 6 +- ...upportstack-demo-DockerCompose-wakaapi.yml | 14 +- .../tests/test_homepage_host_validation.sh | 19 ++- .../tests/test_wakaapi_discovery.sh | 30 +++- 9 files changed, 179 insertions(+), 88 deletions(-) diff --git a/artifacts/SupportStack/TSYSDevStack-SupportStack-Demo-Settings b/artifacts/SupportStack/TSYSDevStack-SupportStack-Demo-Settings index 4d99b75..7949003 100644 --- a/artifacts/SupportStack/TSYSDevStack-SupportStack-Demo-Settings +++ b/artifacts/SupportStack/TSYSDevStack-SupportStack-Demo-Settings @@ -3,8 +3,8 @@ # General Settings TSYSDEVSTACK_ENVIRONMENT=demo -TSYSDEVSTACK_PROJECT_NAME=TSYSDevStack-SupportStack-Demo -TSYSDEVSTACK_NETWORK_NAME=tsysdevstack_supportstack_network +TSYSDEVSTACK_PROJECT_NAME=tsysdevstack-supportstack-demo +TSYSDEVSTACK_NETWORK_NAME=tsysdevstack-supportstack-demo-network # User/Group Settings TSYSDEVSTACK_UID=1000 @@ -15,7 +15,7 @@ TSYSDEVSTACK_DOCKER_GID=996 DOCKER_SOCKET_PROXY_NAME=tsysdevstack-supportstack-demo-docker-socket-proxy DOCKER_SOCKET_PROXY_IMAGE=tecnativa/docker-socket-proxy:0.1 DOCKER_SOCKET_PROXY_SOCKET_PATH=/var/run/docker.sock -DOCKER_SOCKET_PROXY_NETWORK=tsysdevstack_supportstack_network +DOCKER_SOCKET_PROXY_NETWORK=tsysdevstack-supportstack-demo-network # Docker API Permissions DOCKER_SOCKET_PROXY_CONTAINERS=1 @@ -31,14 +31,14 @@ DOCKER_SOCKET_PROXY_VERSION=1 HOMEPAGE_NAME=tsysdevstack-supportstack-demo-homepage HOMEPAGE_IMAGE=gethomepage/homepage:latest HOMEPAGE_PORT=4000 -HOMEPAGE_NETWORK=tsysdevstack_supportstack_network +HOMEPAGE_NETWORK=tsysdevstack-supportstack-demo-network HOMEPAGE_CONFIG_PATH=./config/homepage # WakaAPI Settings WAKAAPI_NAME=tsysdevstack-supportstack-demo-wakaapi WAKAAPI_IMAGE=n1try/wakapi:latest WAKAAPI_PORT=4001 -WAKAAPI_NETWORK=tsysdevstack_supportstack_network +WAKAAPI_NETWORK=tsysdevstack-supportstack-demo-network WAKAAPI_CONFIG_PATH=./config/wakaapi WAKAAPI_WAKATIME_API_KEY= WAKAAPI_DATABASE_PATH=./config/wakaapi/database @@ -69,4 +69,4 @@ WAKAAPI_INITIALIZATION_TIMEOUT=45s DOCKER_COMPOSE_STARTUP_TIMEOUT=120s # Localhost binding -BIND_ADDRESS=127.0.0.1 \ No newline at end of file +BIND_ADDRESS=127.0.0.1 diff --git a/artifacts/SupportStack/code/TSYSDevStack-SupportStack-Demo-Control.sh b/artifacts/SupportStack/code/TSYSDevStack-SupportStack-Demo-Control.sh index 84e2217..691fb5f 100755 --- a/artifacts/SupportStack/code/TSYSDevStack-SupportStack-Demo-Control.sh +++ b/artifacts/SupportStack/code/TSYSDevStack-SupportStack-Demo-Control.sh @@ -7,20 +7,76 @@ set -e # Exit on any error # Load environment settings SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -CONFIG_DIR="$(dirname "$SCRIPT_DIR")/config" -ENV_FILE="${CONFIG_DIR}/TSYSDevStack-SupportStack-Demo-Settings" +ROOT_DIR="$(dirname "$SCRIPT_DIR")" +CONFIG_DIR="${ROOT_DIR}/config" +COMPOSE_DIR="${ROOT_DIR}/docker-compose" +ROOT_ENV_FILE="${ROOT_DIR}/TSYSDevStack-SupportStack-Demo-Settings" +CONFIG_ENV_FILE="${CONFIG_DIR}/TSYSDevStack-SupportStack-Demo-Settings" -if [ ! -f "$ENV_FILE" ]; then - echo "Error: Environment settings file not found at $ENV_FILE" +if [ -f "$ROOT_ENV_FILE" ]; then + ENV_FILE="$ROOT_ENV_FILE" +elif [ -f "$CONFIG_ENV_FILE" ]; then + ENV_FILE="$CONFIG_ENV_FILE" +else + echo "Error: Environment settings file not found. Expected at $ROOT_ENV_FILE or $CONFIG_ENV_FILE" exit 1 fi -# Set UID and GID before sourcing the environment file -export TSYSDEVSTACK_UID=$(id -u) -export TSYSDEVSTACK_DOCKER_GID=$(getent group docker > /dev/null 2>&1 && getent group docker | cut -d: -f3 || echo "999") +# Set UID/GID defaults prior to sourcing environment file so runtime values override placeholders +export TSYSDEVSTACK_UID="$(id -u)" +export TSYSDEVSTACK_GID="$(id -g)" +export TSYSDEVSTACK_DOCKER_GID="$(getent group docker >/dev/null 2>&1 && getent group docker | cut -d: -f3 || echo "996")" +# Source the environment file to get all variables source "$ENV_FILE" +# Explicitly export all environment variables for docker compose +export TSYSDEVSTACK_ENVIRONMENT +export TSYSDEVSTACK_PROJECT_NAME +export TSYSDEVSTACK_NETWORK_NAME +export DOCKER_SOCKET_PROXY_NAME +export DOCKER_SOCKET_PROXY_IMAGE +export DOCKER_SOCKET_PROXY_SOCKET_PATH +export DOCKER_SOCKET_PROXY_NETWORK +export DOCKER_SOCKET_PROXY_CONTAINERS +export DOCKER_SOCKET_PROXY_IMAGES +export DOCKER_SOCKET_PROXY_NETWORKS +export DOCKER_SOCKET_PROXY_VOLUMES +export DOCKER_SOCKET_PROXY_BUILD +export DOCKER_SOCKET_PROXY_MANIFEST +export DOCKER_SOCKET_PROXY_PLUGINS +export DOCKER_SOCKET_PROXY_VERSION +export HOMEPAGE_NAME +export HOMEPAGE_IMAGE +export HOMEPAGE_PORT +export HOMEPAGE_NETWORK +export HOMEPAGE_CONFIG_PATH +export WAKAAPI_NAME +export WAKAAPI_IMAGE +export WAKAAPI_PORT +export WAKAAPI_NETWORK +export WAKAAPI_CONFIG_PATH +export WAKAAPI_WAKATIME_API_KEY +export WAKAAPI_DATABASE_PATH +export DOCKER_SOCKET_PROXY_MEM_LIMIT +export DOCKER_SOCKET_PROXY_CPU_LIMIT +export HOMEPAGE_MEM_LIMIT +export HOMEPAGE_CPU_LIMIT +export WAKAAPI_MEM_LIMIT +export WAKAAPI_CPU_LIMIT +export HEALTH_CHECK_INTERVAL +export HEALTH_CHECK_TIMEOUT +export HEALTH_CHECK_START_PERIOD +export HEALTH_CHECK_RETRIES +export DOCKER_SOCKET_PROXY_CONNECTION_TIMEOUT +export HOMEPAGE_STARTUP_TIMEOUT +export WAKAAPI_INITIALIZATION_TIMEOUT +export DOCKER_COMPOSE_STARTUP_TIMEOUT +export BIND_ADDRESS +export TSYSDEVSTACK_UID +export TSYSDEVSTACK_GID +export TSYSDEVSTACK_DOCKER_GID + # Colors for output RED='\033[0;31m' GREEN='\033[0;32m' @@ -45,6 +101,10 @@ log_warning() { echo -e "${YELLOW}[WARNING]${NC} $1" } +compose() { + docker compose -p "$TSYSDEVSTACK_PROJECT_NAME" "$@" +} + # Function to check if docker is available check_docker() { if ! command -v docker &> /dev/null; then @@ -61,8 +121,12 @@ check_docker() { # Function to create the shared network create_network() { log "Creating shared network: $TSYSDEVSTACK_NETWORK_NAME" - if ! docker network ls | grep -q "$TSYSDEVSTACK_NETWORK_NAME"; then - docker network create "$TSYSDEVSTACK_NETWORK_NAME" --driver bridge + if ! docker network inspect "$TSYSDEVSTACK_NETWORK_NAME" >/dev/null 2>&1; then + docker network create \ + --driver bridge \ + --label tsysdevstack.component="supportstack-demo" \ + --label tsysdevstack.environment="$TSYSDEVSTACK_ENVIRONMENT" \ + "$TSYSDEVSTACK_NETWORK_NAME" log_success "Network created: $TSYSDEVSTACK_NETWORK_NAME" else log "Network already exists: $TSYSDEVSTACK_NETWORK_NAME" @@ -72,7 +136,7 @@ create_network() { # Function to remove the shared network remove_network() { log "Removing shared network: $TSYSDEVSTACK_NETWORK_NAME" - if docker network ls | grep -q "$TSYSDEVSTACK_NETWORK_NAME"; then + if docker network inspect "$TSYSDEVSTACK_NETWORK_NAME" >/dev/null 2>&1; then docker network rm "$TSYSDEVSTACK_NETWORK_NAME" log_success "Network removed: $TSYSDEVSTACK_NETWORK_NAME" else @@ -85,13 +149,13 @@ start() { log "Starting TSYSDevStack SupportStack Demo MVP" check_docker + log "Using environment file: $ENV_FILE" create_network # Start docker-socket-proxy first (dependency for homepage) log "Starting docker-socket-proxy..." - COMPOSE_DIR="$(dirname "$SCRIPT_DIR")/docker-compose" if [ -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-docker-socket-proxy.yml" ]; then - docker compose -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-docker-socket-proxy.yml" up -d + compose -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-docker-socket-proxy.yml" up -d log_success "docker-socket-proxy started" else log_warning "docker-socket-proxy compose file not found, skipping..." @@ -103,9 +167,8 @@ start() { # Start homepage log "Starting homepage..." - COMPOSE_DIR="$(dirname "$SCRIPT_DIR")/docker-compose" if [ -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-homepage.yml" ]; then - docker compose -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-homepage.yml" up -d + compose -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-homepage.yml" up -d log_success "homepage started" else log_warning "homepage compose file not found, skipping..." @@ -117,9 +180,8 @@ start() { # Start wakaapi log "Starting wakaapi..." - COMPOSE_DIR="$(dirname "$SCRIPT_DIR")/docker-compose" if [ -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-wakaapi.yml" ]; then - docker compose -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-wakaapi.yml" up -d + compose -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-wakaapi.yml" up -d log_success "wakaapi started" else log_warning "wakaapi compose file not found, skipping..." @@ -141,10 +203,9 @@ stop() { check_docker # Stop wakaapi first - COMPOSE_DIR="$(dirname "$SCRIPT_DIR")/docker-compose" log "Stopping wakaapi..." if [ -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-wakaapi.yml" ]; then - docker compose -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-wakaapi.yml" down + compose -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-wakaapi.yml" down log_success "wakaapi stopped" else log_warning "wakaapi compose file not found, skipping..." @@ -153,7 +214,7 @@ stop() { # Stop homepage log "Stopping homepage..." if [ -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-homepage.yml" ]; then - docker compose -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-homepage.yml" down + compose -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-homepage.yml" down log_success "homepage stopped" else log_warning "homepage compose file not found, skipping..." @@ -162,7 +223,7 @@ stop() { # Stop docker-socket-proxy last log "Stopping docker-socket-proxy..." if [ -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-docker-socket-proxy.yml" ]; then - docker compose -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-docker-socket-proxy.yml" down + compose -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-docker-socket-proxy.yml" down log_success "docker-socket-proxy stopped" else log_warning "docker-socket-proxy compose file not found, skipping..." @@ -182,17 +243,16 @@ uninstall() { # Remove containers, volumes, and networks log "Removing containers and volumes..." - COMPOSE_DIR="$(dirname "$SCRIPT_DIR")/docker-compose" if [ -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-docker-socket-proxy.yml" ]; then - docker compose -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-docker-socket-proxy.yml" down -v + compose -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-docker-socket-proxy.yml" down -v fi if [ -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-homepage.yml" ]; then - docker compose -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-homepage.yml" down -v + compose -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-homepage.yml" down -v fi if [ -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-wakaapi.yml" ]; then - docker compose -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-wakaapi.yml" down -v + compose -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-wakaapi.yml" down -v fi # Remove the shared network @@ -209,20 +269,19 @@ update() { # Pull the latest images log "Pulling latest images..." - COMPOSE_DIR="$(dirname "$SCRIPT_DIR")/docker-compose" if [ -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-docker-socket-proxy.yml" ]; then - docker compose -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-docker-socket-proxy.yml" pull + compose -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-docker-socket-proxy.yml" pull log_success "docker-socket-proxy images updated" fi if [ -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-homepage.yml" ]; then - docker compose -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-homepage.yml" pull + compose -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-homepage.yml" pull log_success "homepage images updated" fi if [ -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-wakaapi.yml" ]; then - docker compose -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-wakaapi.yml" pull + compose -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-wakaapi.yml" pull log_success "wakaapi images updated" fi @@ -241,11 +300,9 @@ test() { # Add test functions here log "Checking if services are running..." - COMPOSE_DIR="$(dirname "$SCRIPT_DIR")/docker-compose" - # Check docker-socket-proxy - if [ -f "${COMPOSE_DIR}/TSYSDevStack-SupportStack-Demo-DockerCompose-docker-socket-proxy.yml" ]; then - if docker compose -f "${COMPOSE_DIR}/TSYSDevStack-SupportStack-Demo-DockerCompose-docker-socket-proxy.yml" ps | grep -q "Up"; then + if [ -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-docker-socket-proxy.yml" ]; then + if compose -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-docker-socket-proxy.yml" ps | grep -q "Up"; then log_success "docker-socket-proxy is running" else log_error "docker-socket-proxy is not running" @@ -253,8 +310,8 @@ test() { fi # Check homepage - if [ -f "${COMPOSE_DIR}/TSYSDevStack-SupportStack-Demo-DockerCompose-homepage.yml" ]; then - if docker compose -f "${COMPOSE_DIR}/TSYSDevStack-SupportStack-Demo-DockerCompose-homepage.yml" ps | grep -q "Up"; then + if [ -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-homepage.yml" ]; then + if compose -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-homepage.yml" ps | grep -q "Up"; then log_success "homepage is running" else log_error "homepage is not running" @@ -262,8 +319,8 @@ test() { fi # Check wakaapi - if [ -f "${COMPOSE_DIR}/TSYSDevStack-SupportStack-Demo-DockerCompose-wakaapi.yml" ]; then - if docker compose -f "${COMPOSE_DIR}/TSYSDevStack-SupportStack-Demo-DockerCompose-wakaapi.yml" ps | grep -q "Up"; then + if [ -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-wakaapi.yml" ]; then + if compose -f "${COMPOSE_DIR}/tsysdevstack-supportstack-demo-DockerCompose-wakaapi.yml" ps | grep -q "Up"; then log_success "wakaapi is running" else log_error "wakaapi is not running" @@ -271,12 +328,24 @@ test() { fi # Run any unit/integration tests if available - if [ -d "${SCRIPT_DIR}/tests" ]; then - log "Running specific tests..." - # Add specific test commands here when test files exist + TESTS_DIR="$(dirname "$SCRIPT_DIR")/tests" + if [ -d "$TESTS_DIR" ]; then + log "Running specific tests from $TESTS_DIR..." + # Run individual test scripts + for test_script in "$TESTS_DIR"/*.sh; do + if [ -f "$test_script" ] && [ -r "$test_script" ] && [ -x "$test_script" ]; then + log "Running test: $test_script" + "$test_script" + if [ $? -eq 0 ]; then + log_success "Test completed: $(basename "$test_script")" + else + log_error "Test failed: $(basename "$test_script")" + fi + fi + done log_success "Tests completed" else - log_warning "No tests directory found" + log_warning "No tests directory found at $TESTS_DIR" fi log_success "Test execution completed" @@ -336,4 +405,4 @@ case "$1" in show_help exit 1 ;; -esac \ No newline at end of file +esac diff --git a/artifacts/SupportStack/config/TSYSDevStack-SupportStack-Demo-Settings b/artifacts/SupportStack/config/TSYSDevStack-SupportStack-Demo-Settings index 3956e5f..b1a1298 100644 --- a/artifacts/SupportStack/config/TSYSDevStack-SupportStack-Demo-Settings +++ b/artifacts/SupportStack/config/TSYSDevStack-SupportStack-Demo-Settings @@ -3,14 +3,14 @@ # General Settings TSYSDEVSTACK_ENVIRONMENT=demo -TSYSDEVSTACK_PROJECT_NAME=TSYSDevStack-SupportStack-Demo -TSYSDEVSTACK_NETWORK_NAME=tsysdevstack_supportstack_network +TSYSDEVSTACK_PROJECT_NAME=tsysdevstack-supportstack-demo +TSYSDEVSTACK_NETWORK_NAME=tsysdevstack-supportstack-demo-network # Docker Socket Proxy Settings -DOCKER_SOCKET_PROXY_NAME=tsysdevstack-docker-socket-proxy +DOCKER_SOCKET_PROXY_NAME=tsysdevstack-supportstack-demo-docker-socket-proxy DOCKER_SOCKET_PROXY_IMAGE=tecnativa/docker-socket-proxy:0.1 DOCKER_SOCKET_PROXY_SOCKET_PATH=/var/run/docker.sock -DOCKER_SOCKET_PROXY_NETWORK=tsysdevstack_supportstack_network +DOCKER_SOCKET_PROXY_NETWORK=tsysdevstack-supportstack-demo-network # Docker API Permissions DOCKER_SOCKET_PROXY_CONTAINERS=1 @@ -23,17 +23,17 @@ DOCKER_SOCKET_PROXY_PLUGINS=1 DOCKER_SOCKET_PROXY_VERSION=1 # Homepage Settings -HOMEPAGE_NAME=tsysdevstack-homepage -HOMEPAGE_IMAGE=gethomepage/homepage:0.8.0 +HOMEPAGE_NAME=tsysdevstack-supportstack-demo-homepage +HOMEPAGE_IMAGE=gethomepage/homepage:latest HOMEPAGE_PORT=4000 -HOMEPAGE_NETWORK=tsysdevstack_supportstack_network +HOMEPAGE_NETWORK=tsysdevstack-supportstack-demo-network HOMEPAGE_CONFIG_PATH=./config/homepage # WakaAPI Settings -WAKAAPI_NAME=tsysdevstack-wakaapi -WAKAAPI_IMAGE=ghcr.io/ekkinox/wakaapi:latest +WAKAAPI_NAME=tsysdevstack-supportstack-demo-wakaapi +WAKAAPI_IMAGE=n1try/wakapi:latest WAKAAPI_PORT=4001 -WAKAAPI_NETWORK=tsysdevstack_supportstack_network +WAKAAPI_NETWORK=tsysdevstack-supportstack-demo-network WAKAAPI_CONFIG_PATH=./config/wakaapi WAKAAPI_WAKATIME_API_KEY= WAKAAPI_DATABASE_PATH=./config/wakaapi/database @@ -68,4 +68,5 @@ BIND_ADDRESS=127.0.0.1 # Security - UID/GID mapping (to be set by control script) TSYSDEVSTACK_UID=1000 -TSYSDEVSTACK_DOCKER_GID=999 \ No newline at end of file +TSYSDEVSTACK_GID=1000 +TSYSDEVSTACK_DOCKER_GID=996 diff --git a/artifacts/SupportStack/config/homepage/services.yaml b/artifacts/SupportStack/config/homepage/services.yaml index 20ad816..daa1c88 100644 --- a/artifacts/SupportStack/config/homepage/services.yaml +++ b/artifacts/SupportStack/config/homepage/services.yaml @@ -3,6 +3,6 @@ # Automatically discover Docker services with Homepage labels - Support Stack: - - tsysdevstack-docker-socket-proxy - - tsysdevstack-homepage - - tsysdevstack-wakaapi \ No newline at end of file + - tsysdevstack-supportstack-demo-docker-socket-proxy + - tsysdevstack-supportstack-demo-homepage + - tsysdevstack-supportstack-demo-wakaapi diff --git a/artifacts/SupportStack/docker-compose/tsysdevstack-supportstack-demo-DockerCompose-docker-socket-proxy.yml b/artifacts/SupportStack/docker-compose/tsysdevstack-supportstack-demo-DockerCompose-docker-socket-proxy.yml index 7948cee..01b8311 100644 --- a/artifacts/SupportStack/docker-compose/tsysdevstack-supportstack-demo-DockerCompose-docker-socket-proxy.yml +++ b/artifacts/SupportStack/docker-compose/tsysdevstack-supportstack-demo-DockerCompose-docker-socket-proxy.yml @@ -4,7 +4,7 @@ services: container_name: ${DOCKER_SOCKET_PROXY_NAME} restart: unless-stopped networks: - - tsysdevstack_supportstack_network + - tsysdevstack-supportstack-demo-network environment: CONTAINERS: ${DOCKER_SOCKET_PROXY_CONTAINERS} IMAGES: ${DOCKER_SOCKET_PROXY_IMAGES} @@ -44,6 +44,6 @@ services: # user: "${TSYSDEVSTACK_UID}:${TSYSDEVSTACK_DOCKER_GID}" # Read-only access to Docker socket networks: - tsysdevstack_supportstack_network: + tsysdevstack-supportstack-demo-network: external: true - name: ${TSYSDEVSTACK_NETWORK_NAME} \ No newline at end of file + name: ${TSYSDEVSTACK_NETWORK_NAME} diff --git a/artifacts/SupportStack/docker-compose/tsysdevstack-supportstack-demo-DockerCompose-homepage.yml b/artifacts/SupportStack/docker-compose/tsysdevstack-supportstack-demo-DockerCompose-homepage.yml index f02e91b..6c52463 100644 --- a/artifacts/SupportStack/docker-compose/tsysdevstack-supportstack-demo-DockerCompose-homepage.yml +++ b/artifacts/SupportStack/docker-compose/tsysdevstack-supportstack-demo-DockerCompose-homepage.yml @@ -4,7 +4,7 @@ services: container_name: ${HOMEPAGE_NAME} restart: unless-stopped networks: - - tsysdevstack_supportstack_network + - tsysdevstack-supportstack-demo-network ports: - "${BIND_ADDRESS}:${HOMEPAGE_PORT}:3000" environment: @@ -42,6 +42,6 @@ services: user: "${TSYSDEVSTACK_UID}:${TSYSDEVSTACK_DOCKER_GID}" # Direct access to Docker socket for discovery networks: - tsysdevstack_supportstack_network: + tsysdevstack-supportstack-demo-network: external: true - name: ${TSYSDEVSTACK_NETWORK_NAME} \ No newline at end of file + name: ${TSYSDEVSTACK_NETWORK_NAME} diff --git a/artifacts/SupportStack/docker-compose/tsysdevstack-supportstack-demo-DockerCompose-wakaapi.yml b/artifacts/SupportStack/docker-compose/tsysdevstack-supportstack-demo-DockerCompose-wakaapi.yml index f506819..a15afa1 100644 --- a/artifacts/SupportStack/docker-compose/tsysdevstack-supportstack-demo-DockerCompose-wakaapi.yml +++ b/artifacts/SupportStack/docker-compose/tsysdevstack-supportstack-demo-DockerCompose-wakaapi.yml @@ -4,7 +4,7 @@ services: container_name: ${WAKAAPI_NAME} restart: unless-stopped networks: - - tsysdevstack_supportstack_network + - tsysdevstack-supportstack-demo-network ports: - "${BIND_ADDRESS}:${WAKAAPI_PORT}:3000" environment: @@ -15,8 +15,8 @@ services: - WAKAPI_PUBLIC_URL=http://${BIND_ADDRESS}:${WAKAAPI_PORT} - WAKAPI_ALLOW_SIGNUP=true - WAKAPI_WAKATIME_API_KEY=${WAKAAPI_WAKATIME_API_KEY:-""} - volumes: - - wakaapi_data:/data + tmpfs: + - /data:rw,size=128m,uid=${TSYSDEVSTACK_UID},gid=${TSYSDEVSTACK_GID},mode=0750 mem_limit: ${WAKAAPI_MEM_LIMIT} mem_reservation: ${WAKAAPI_MEM_LIMIT} deploy: @@ -41,13 +41,9 @@ services: homepage.href: "http://${BIND_ADDRESS}:${WAKAAPI_PORT}" homepage.description: "WakaTime API for coding metrics" homepage.type: "wakapi" - user: "${TSYSDEVSTACK_UID}" # Regular user access for non-Docker containers + user: "${TSYSDEVSTACK_UID}:${TSYSDEVSTACK_GID}" # Regular user access for non-Docker containers networks: - tsysdevstack_supportstack_network: + tsysdevstack-supportstack-demo-network: external: true name: ${TSYSDEVSTACK_NETWORK_NAME} -volumes: - wakaapi_data: - name: ${WAKAAPI_NAME}_data - external: true \ No newline at end of file diff --git a/artifacts/SupportStack/tests/test_homepage_host_validation.sh b/artifacts/SupportStack/tests/test_homepage_host_validation.sh index f33ea4b..3836127 100755 --- a/artifacts/SupportStack/tests/test_homepage_host_validation.sh +++ b/artifacts/SupportStack/tests/test_homepage_host_validation.sh @@ -5,21 +5,32 @@ set -e +# Load environment settings for dynamic container naming +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +ENV_FILE="${SCRIPT_DIR}/TSYSDevStack-SupportStack-Demo-Settings" + +if [ ! -f "$ENV_FILE" ]; then + echo "Error: Environment settings file not found at $ENV_FILE" + exit 1 +fi + +source "$ENV_FILE" + echo "Testing homepage host validation issue..." # Check if homepage container is running -if ! docker ps | grep -q "tsysdevstack-homepage"; then +if ! docker ps | grep -q "$HOMEPAGE_NAME"; then echo "❌ Homepage container is not running" echo "Test failed: Homepage host validation test failed" exit 1 fi # Test if we get the host validation error by checking the HTTP response -response=$(curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:4000/ 2>/dev/null || echo "ERROR") +response=$(curl -s -o /dev/null -w "%{http_code}" "http://${BIND_ADDRESS}:${HOMEPAGE_PORT}/" 2>/dev/null || echo "ERROR") if [ "$response" = "ERROR" ] || [ "$response" != "200" ]; then # Let's also check the page content to see if it contains the host validation error message - content=$(curl -s http://127.0.0.1:4000/ 2>/dev/null || echo "") + content=$(curl -s "http://${BIND_ADDRESS}:${HOMEPAGE_PORT}/" 2>/dev/null || echo "") if [[ "$content" == *"Host validation failed"* ]]; then echo "❌ Homepage is showing 'Host validation failed' error" echo "Test confirmed: Host validation issue exists" @@ -33,4 +44,4 @@ else echo "✅ Homepage is accessible and host validation is working" echo "Test passed: No host validation issue" exit 0 -fi \ No newline at end of file +fi diff --git a/artifacts/SupportStack/tests/test_wakaapi_discovery.sh b/artifacts/SupportStack/tests/test_wakaapi_discovery.sh index 51bd8cf..64de315 100755 --- a/artifacts/SupportStack/tests/test_wakaapi_discovery.sh +++ b/artifacts/SupportStack/tests/test_wakaapi_discovery.sh @@ -5,33 +5,47 @@ set -e +# Load environment settings +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +ENV_FILE="${SCRIPT_DIR}/TSYSDevStack-SupportStack-Demo-Settings" + +if [ ! -f "$ENV_FILE" ]; then + echo "Error: Environment settings file not found at $ENV_FILE" + exit 1 +fi + +source "$ENV_FILE" + echo "Testing WakaAPI discovery on homepage..." # Check if WakaAPI container is running -if ! docker ps | grep -q "tsysdevstack-wakaapi"; then +if ! docker ps | grep -q "$WAKAAPI_NAME"; then echo "❌ WakaAPI container is not running" exit 1 fi # Check if homepage container is running -if ! docker ps | grep -q "tsysdevstack-homepage"; then +if ! docker ps | grep -q "$HOMEPAGE_NAME"; then echo "❌ Homepage container is not running" exit 1 fi +# Give services a moment to stabilise +sleep 5 + # Test if we can access WakaAPI directly -if ! curl -f -s "http://127.0.0.1:4001/" > /dev/null 2>&1; then - echo "❌ WakaAPI is not accessible at http://127.0.0.1:4001" +if ! curl -f -s "http://${BIND_ADDRESS}:${WAKAAPI_PORT}/" > /dev/null 2>&1; then + echo "❌ WakaAPI is not accessible at http://${BIND_ADDRESS}:${WAKAAPI_PORT}" exit 1 fi -# Check if WakaAPI appears on the homepage -content=$(curl -s http://127.0.0.1:4000/) -if [[ "$content" == *"WakaAPI"* ]] || [[ "$content" == *"wakaapi"* ]] || [[ "$content" == *"wakapi"* ]]; then +# Check if WakaAPI appears on the homepage services API +services_payload=$(curl -s "http://${BIND_ADDRESS}:${HOMEPAGE_PORT}/api/services") +if echo "$services_payload" | grep -q "\"container\":\"$WAKAAPI_NAME\""; then echo "✅ WakaAPI is displayed on homepage" exit 0 else echo "❌ WakaAPI is NOT displayed on homepage" echo "Test failed: WakaAPI not discovered by homepage" exit 1 -fi \ No newline at end of file +fi