This commit is contained in:
2025-10-28 19:57:51 -05:00
parent 9f17603c1e
commit 65b278e33f
27 changed files with 875 additions and 227 deletions

View File

@@ -1,40 +0,0 @@
services:
docker-socket-proxy:
image: tecnativa/docker-socket-proxy:0.1
container_name: tsysdevstack-docker-socket-proxy
restart: unless-stopped
networks:
- tsysdevstack_supportstack_network
environment:
CONTAINERS: "1"
IMAGES: "1"
NETWORKS: "1"
VOLUMES: "1"
BUILD: "1"
MANIFEST: "1"
PLUGINS: "1"
VERSION: "1"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
mem_limit: 128m
mem_reservation: 128m
deploy:
resources:
limits:
cpus: '0.25'
memory: 128M
reservations:
cpus: '0.25'
memory: 128M
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost/"]
interval: 30s
timeout: 10s
start_period: 30s
retries: 3
# Note: No ports exposed as per requirement for internal network only
networks:
tsysdevstack_supportstack_network:
external: true
name: tsysdevstack_supportstack_network

View File

@@ -1,45 +0,0 @@
services:
homepage:
image: gethomepage/homepage:latest
container_name: tsysdevstack-homepage
restart: unless-stopped
networks:
- tsysdevstack_supportstack_network
ports:
- "127.0.0.1:4000:3000"
environment:
- PORT=3000
- HOMEPAGE_URL=http://localhost:4000
- BASE_URL=http://localhost:4000
- HOMEPAGE_ALLOWED_HOSTS=localhost:4000,127.0.0.1:4000
volumes:
- ./config/homepage:/app/config
- /var/run/docker.sock:/var/run/docker.sock:ro # For Docker integration
mem_limit: 256m
mem_reservation: 128m
deploy:
resources:
limits:
cpus: '0.5'
memory: 256M
reservations:
cpus: '0.25'
memory: 128M
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:3000/api/health"]
interval: 30s
timeout: 10s
start_period: 60s # Longer start period for homepage
retries: 3
# Homepage integration labels for automatic discovery
labels:
homepage.group: "Support Stack"
homepage.name: "Homepage Dashboard"
homepage.icon: "homepage.png"
homepage.href: "http://127.0.0.1:4000"
homepage.description: "Homepage dashboard for Support Stack"
networks:
tsysdevstack_supportstack_network:
external: true
name: tsysdevstack_supportstack_network

View File

@@ -1,51 +0,0 @@
services:
wakaapi:
image: n1try/wakapi:latest
container_name: tsysdevstack-wakaapi
restart: unless-stopped
networks:
- tsysdevstack_supportstack_network
ports:
- "127.0.0.1:4001:3000"
environment:
- WAKAPI_PASSWORD_SALT=TSYSDevStackSupportStackDemoSalt12345678
- WAKAPI_DB_TYPE=sqlite3
- WAKAPI_DB_NAME=/data/wakapi.db
- WAKAPI_PORT=3000
- WAKAPI_PUBLIC_URL=http://127.0.0.1:4001
- WAKAPI_ALLOW_SIGNUP=true
- WAKAPI_WAKATIME_API_KEY=${WAKAAPI_WAKATIME_API_KEY:-""}
volumes:
- wakaapi_data:/data
mem_limit: 192m
mem_reservation: 128m
deploy:
resources:
limits:
cpus: '0.3'
memory: 192M
reservations:
cpus: '0.2'
memory: 128M
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:3000/api"]
interval: 30s
timeout: 10s
start_period: 60s # Longer start period for wakaapi
retries: 5
# Homepage integration labels for automatic discovery
labels:
homepage.group: "Development Tools"
homepage.name: "WakaAPI"
homepage.icon: "wakatime.png"
homepage.href: "http://127.0.0.1:4001"
homepage.description: "WakaTime API for coding metrics"
networks:
tsysdevstack_supportstack_network:
external: true
name: tsysdevstack_supportstack_network
volumes:
wakaapi_data:
name: wakaapi_data
external: true

View File

@@ -0,0 +1,49 @@
services:
docker-socket-proxy:
image: ${DOCKER_SOCKET_PROXY_IMAGE}
container_name: ${DOCKER_SOCKET_PROXY_NAME}
restart: unless-stopped
networks:
- tsysdevstack_supportstack_network
environment:
CONTAINERS: ${DOCKER_SOCKET_PROXY_CONTAINERS}
IMAGES: ${DOCKER_SOCKET_PROXY_IMAGES}
NETWORKS: ${DOCKER_SOCKET_PROXY_NETWORKS}
VOLUMES: ${DOCKER_SOCKET_PROXY_VOLUMES}
BUILD: ${DOCKER_SOCKET_PROXY_BUILD}
MANIFEST: ${DOCKER_SOCKET_PROXY_MANIFEST}
PLUGINS: ${DOCKER_SOCKET_PROXY_PLUGINS}
VERSION: ${DOCKER_SOCKET_PROXY_VERSION}
volumes:
- ${DOCKER_SOCKET_PROXY_SOCKET_PATH}:${DOCKER_SOCKET_PROXY_SOCKET_PATH}
mem_limit: ${DOCKER_SOCKET_PROXY_MEM_LIMIT}
mem_reservation: ${DOCKER_SOCKET_PROXY_MEM_LIMIT}
deploy:
resources:
limits:
cpus: '${DOCKER_SOCKET_PROXY_CPU_LIMIT}'
memory: ${DOCKER_SOCKET_PROXY_MEM_LIMIT}
reservations:
cpus: '${DOCKER_SOCKET_PROXY_CPU_LIMIT}'
memory: ${DOCKER_SOCKET_PROXY_MEM_LIMIT}
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost/"]
interval: ${HEALTH_CHECK_INTERVAL}
timeout: ${HEALTH_CHECK_TIMEOUT}
start_period: ${HEALTH_CHECK_START_PERIOD}
retries: ${HEALTH_CHECK_RETRIES}
# Homepage integration labels for automatic discovery
labels:
homepage.group: "Support Stack"
homepage.name: "Docker Socket Proxy"
homepage.icon: "docker.png"
homepage.href: "http://${BIND_ADDRESS}:${HOMEPAGE_PORT}"
homepage.description: "Docker socket proxy for secure access"
homepage.type: "docker"
# NOTE: Docker-socket-proxy must run as root to configure HAProxy
# user: "${TSYSDEVSTACK_UID}:${TSYSDEVSTACK_DOCKER_GID}" # Read-only access to Docker socket
networks:
tsysdevstack_supportstack_network:
external: true
name: ${TSYSDEVSTACK_NETWORK_NAME}

View File

@@ -0,0 +1,47 @@
services:
homepage:
image: ${HOMEPAGE_IMAGE}
container_name: ${HOMEPAGE_NAME}
restart: unless-stopped
networks:
- tsysdevstack_supportstack_network
ports:
- "${BIND_ADDRESS}:${HOMEPAGE_PORT}:3000"
environment:
- PORT=3000
- HOMEPAGE_URL=http://${BIND_ADDRESS}:${HOMEPAGE_PORT}
- BASE_URL=http://${BIND_ADDRESS}:${HOMEPAGE_PORT}
- HOMEPAGE_ALLOWED_HOSTS=${BIND_ADDRESS}:${HOMEPAGE_PORT},localhost:${HOMEPAGE_PORT}
volumes:
- ${HOMEPAGE_CONFIG_PATH}:/app/config
- ${DOCKER_SOCKET_PROXY_SOCKET_PATH}:${DOCKER_SOCKET_PROXY_SOCKET_PATH}:ro # For Docker integration
mem_limit: ${HOMEPAGE_MEM_LIMIT}
mem_reservation: ${HOMEPAGE_MEM_LIMIT}
deploy:
resources:
limits:
cpus: '${HOMEPAGE_CPU_LIMIT}'
memory: ${HOMEPAGE_MEM_LIMIT}
reservations:
cpus: '${HOMEPAGE_CPU_LIMIT}'
memory: ${HOMEPAGE_MEM_LIMIT}
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:3000/api/health"]
interval: ${HEALTH_CHECK_INTERVAL}
timeout: ${HEALTH_CHECK_TIMEOUT}
start_period: ${HOMEPAGE_STARTUP_TIMEOUT} # Longer start period for homepage
retries: ${HEALTH_CHECK_RETRIES}
# Homepage integration labels for automatic discovery
labels:
homepage.group: "Support Stack"
homepage.name: "Homepage Dashboard"
homepage.icon: "homepage.png"
homepage.href: "http://${BIND_ADDRESS}:${HOMEPAGE_PORT}"
homepage.description: "Homepage dashboard for Support Stack"
homepage.type: "homepage"
user: "${TSYSDEVSTACK_UID}:${TSYSDEVSTACK_DOCKER_GID}" # Direct access to Docker socket for discovery
networks:
tsysdevstack_supportstack_network:
external: true
name: ${TSYSDEVSTACK_NETWORK_NAME}

View File

@@ -0,0 +1,53 @@
services:
wakaapi:
image: ${WAKAAPI_IMAGE}
container_name: ${WAKAAPI_NAME}
restart: unless-stopped
networks:
- tsysdevstack_supportstack_network
ports:
- "${BIND_ADDRESS}:${WAKAAPI_PORT}:3000"
environment:
- WAKAPI_PASSWORD_SALT=TSYSDevStackSupportStackDemoSalt12345678
- WAKAPI_DB_TYPE=sqlite3
- WAKAPI_DB_NAME=/data/wakapi.db
- WAKAPI_PORT=3000
- WAKAPI_PUBLIC_URL=http://${BIND_ADDRESS}:${WAKAAPI_PORT}
- WAKAPI_ALLOW_SIGNUP=true
- WAKAPI_WAKATIME_API_KEY=${WAKAAPI_WAKATIME_API_KEY:-""}
volumes:
- wakaapi_data:/data
mem_limit: ${WAKAAPI_MEM_LIMIT}
mem_reservation: ${WAKAAPI_MEM_LIMIT}
deploy:
resources:
limits:
cpus: '${WAKAAPI_CPU_LIMIT}'
memory: ${WAKAAPI_MEM_LIMIT}
reservations:
cpus: '${WAKAAPI_CPU_LIMIT}'
memory: ${WAKAAPI_MEM_LIMIT}
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:3000/api"]
interval: ${HEALTH_CHECK_INTERVAL}
timeout: ${HEALTH_CHECK_TIMEOUT}
start_period: ${WAKAAPI_INITIALIZATION_TIMEOUT} # Longer start period for wakaapi
retries: ${HEALTH_CHECK_RETRIES}
# Homepage integration labels for automatic discovery
labels:
homepage.group: "Development Tools"
homepage.name: "WakaAPI"
homepage.icon: "wakapi.png"
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
networks:
tsysdevstack_supportstack_network:
external: true
name: ${TSYSDEVSTACK_NETWORK_NAME}
volumes:
wakaapi_data:
name: ${WAKAAPI_NAME}_data
external: true