.
This commit is contained in:
@@ -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
|
||||
BIND_ADDRESS=127.0.0.1
|
||||
|
||||
@@ -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
|
||||
esac
|
||||
|
||||
@@ -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
|
||||
TSYSDEVSTACK_GID=1000
|
||||
TSYSDEVSTACK_DOCKER_GID=996
|
||||
|
||||
@@ -3,6 +3,6 @@
|
||||
|
||||
# Automatically discover Docker services with Homepage labels
|
||||
- Support Stack:
|
||||
- tsysdevstack-docker-socket-proxy
|
||||
- tsysdevstack-homepage
|
||||
- tsysdevstack-wakaapi
|
||||
- tsysdevstack-supportstack-demo-docker-socket-proxy
|
||||
- tsysdevstack-supportstack-demo-homepage
|
||||
- tsysdevstack-supportstack-demo-wakaapi
|
||||
|
||||
@@ -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}
|
||||
name: ${TSYSDEVSTACK_NETWORK_NAME}
|
||||
|
||||
@@ -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}
|
||||
name: ${TSYSDEVSTACK_NETWORK_NAME}
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
fi
|
||||
|
||||
@@ -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
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user