This commit is contained in:
2025-10-28 20:18:59 -05:00
parent b7685b5266
commit 372f86d06b
6 changed files with 32 additions and 17 deletions

View File

@@ -32,7 +32,8 @@ test_wakaapi() {
sleep 15 # Allow time for wakaapi to fully start sleep 15 # Allow time for wakaapi to fully start
# Try the main endpoint (health check might not be at /api in Wakapi) # Try the main endpoint (health check might not be at /api in Wakapi)
if curl -f -s "http://$BIND_ADDRESS:$WAKAAPI_PORT/" > /dev/null || curl -f -s "http://$BIND_ADDRESS:$WAKAAPI_PORT/api/users" > /dev/null; then # WakaAPI is a Go-based web app that listens on port 3000
if curl -f -s "http://$BIND_ADDRESS:$WAKAAPI_PORT/" > /dev/null; then
echo "✓ wakaapi is accessible via HTTP" echo "✓ wakaapi is accessible via HTTP"
else else
echo "✗ wakaapi is NOT accessible via HTTP at http://$BIND_ADDRESS:$WAKAAPI_PORT/" echo "✗ wakaapi is NOT accessible via HTTP at http://$BIND_ADDRESS:$WAKAAPI_PORT/"

View File

@@ -14,6 +14,7 @@ RUN apt-get update \
fzf \ fzf \
git \ git \
jq \ jq \
bc \
locales \ locales \
openssh-client \ openssh-client \
ripgrep \ ripgrep \
@@ -21,6 +22,7 @@ RUN apt-get update \
screen \ screen \
fd-find \ fd-find \
bat \ bat \
httpie \
build-essential \ build-essential \
pkg-config \ pkg-config \
libssl-dev \ libssl-dev \
@@ -71,9 +73,13 @@ RUN su - "${USERNAME}" -c 'git clone --depth=1 https://github.com/ohmyzsh/ohmyzs
&& su - "${USERNAME}" -c 'printf "\nexport PATH=\"\$HOME/.local/share/aquaproj-aqua/bin:\$HOME/.local/bin:\$PATH\"\n" >> ~/.zshrc' \ && su - "${USERNAME}" -c 'printf "\nexport PATH=\"\$HOME/.local/share/aquaproj-aqua/bin:\$HOME/.local/bin:\$PATH\"\n" >> ~/.zshrc' \
&& su - "${USERNAME}" -c 'printf "\n# Starship prompt\neval \"\$(starship init zsh)\"\n" >> ~/.zshrc' \ && su - "${USERNAME}" -c 'printf "\n# Starship prompt\neval \"\$(starship init zsh)\"\n" >> ~/.zshrc' \
&& su - "${USERNAME}" -c 'printf "\n# mise runtime manager\neval \"\$(mise activate zsh)\"\n" >> ~/.zshrc' \ && su - "${USERNAME}" -c 'printf "\n# mise runtime manager\neval \"\$(mise activate zsh)\"\n" >> ~/.zshrc' \
&& su - "${USERNAME}" -c 'printf "\n# direnv\nexport DIRENV_LOG_FORMAT=\"\"\neval \"\$(direnv hook zsh)\"\n" >> ~/.zshrc' \
&& su - "${USERNAME}" -c 'printf "\n# zoxide\neval \"\$(zoxide init zsh)\"\n" >> ~/.zshrc' \
&& su - "${USERNAME}" -c 'printf "\n# mise runtime manager (bash)\neval \"\$(mise activate bash)\"\n" >> ~/.bashrc' \ && su - "${USERNAME}" -c 'printf "\n# mise runtime manager (bash)\neval \"\$(mise activate bash)\"\n" >> ~/.bashrc' \
&& su - "${USERNAME}" -c 'printf "\n# direnv\nexport DIRENV_LOG_FORMAT=\"\"\neval \"\$(direnv hook bash)\"\n" >> ~/.bashrc' \
&& su - "${USERNAME}" -c 'printf "\n# zoxide\neval \"\$(zoxide init bash)\"\n" >> ~/.bashrc' \
&& su - "${USERNAME}" -c 'mkdir -p ~/.config/fish' \ && su - "${USERNAME}" -c 'mkdir -p ~/.config/fish' \
&& su - "${USERNAME}" -c 'printf "\n# Shell prompt and runtime manager\nstarship init fish | source\nmise activate fish | source\n" >> ~/.config/fish/config.fish' && su - "${USERNAME}" -c 'printf "\n# Shell prompt and runtime manager\nstarship init fish | source\nmise activate fish | source\ndirenv hook fish | source\nzoxide init fish | source\n" >> ~/.config/fish/config.fish'
COPY aqua.yaml /tmp/aqua.yaml COPY aqua.yaml /tmp/aqua.yaml

View File

@@ -7,7 +7,7 @@ Context snapshot (toolbox-base):
- Mounted workspace: current repo at /workspace (rw) - Mounted workspace: current repo at /workspace (rw)
Current state: Current state:
- Dockerfile installs shell tooling (zsh/bash/fish with Starship & oh-my-zsh), core CLI utilities (curl, wget, git, tmux, screen, etc.), build-essential + headers, aqua, and mise. - Dockerfile installs shell tooling (zsh/bash/fish with Starship & oh-my-zsh), core CLI utilities (curl, wget, git, tmux, screen, etc.), build-essential + headers, aqua, and mise; aqua now provisions gh, tea, lazygit, direnv, git-delta, and zoxide, with direnv/zoxide hooks enabled for all shells (direnv logging muted).
- aqua manages CLIs (gh, tea, lazygit) via docs/TOOLS.md inventory. - aqua manages CLIs (gh, tea, lazygit) via docs/TOOLS.md inventory.
- mise handles language/tool runtimes; activation wired into zsh, bash, and fish. - mise handles language/tool runtimes; activation wired into zsh, bash, and fish.
- docker-compose.yml runs container with host UID/GID, `sleep infinity`, and docker socket mount; run via run.sh/build.sh. - docker-compose.yml runs container with host UID/GID, `sleep infinity`, and docker socket mount; run via run.sh/build.sh.

View File

@@ -34,8 +34,8 @@ The compose service mounts the current repo to `/workspace` (read/write) and run
|----------|---------|-------| |----------|---------|-------|
| **Shells & Prompts** | 🐚 `zsh` • 🐟 `fish` • 🧑‍💻 `bash` • ⭐ `starship` • 💎 `oh-my-zsh` | Starship prompt enabled for all shells; oh-my-zsh configured with `git` + `fzf` plugins. | | **Shells & Prompts** | 🐚 `zsh` • 🐟 `fish` • 🧑‍💻 `bash` • ⭐ `starship` • 💎 `oh-my-zsh` | Starship prompt enabled for all shells; oh-my-zsh configured with `git` + `fzf` plugins. |
| **Runtime & CLI Managers** | 🪄 `mise` • 💧 `aqua` | `mise` handles language/tool runtimes (activation wired into zsh/bash/fish); `aqua` manages standalone CLIs with config at `~/.config/aquaproj-aqua/aqua.yaml`. | | **Runtime & CLI Managers** | 🪄 `mise` • 💧 `aqua` | `mise` handles language/tool runtimes (activation wired into zsh/bash/fish); `aqua` manages standalone CLIs with config at `~/.config/aquaproj-aqua/aqua.yaml`. |
| **Core CLI Utilities** | 📦 `curl` • 📥 `wget` • 🔐 `ca-certificates` • 🧭 `git` • 🔧 `build-essential` + headers (`pkg-config`, `libssl-dev`, `zlib1g-dev`, `libffi-dev`, `libsqlite3-dev`, `libreadline-dev`) • 🔍 `ripgrep` • 🧭 `fzf` • 📁 `fd` • 📖 `bat` • 🔗 `openssh-client` • 🧵 `tmux` • 🖥️ `screen` • 📊 `jq` | Provides ergonomic defaults plus toolchain deps for compiling runtimes (no global language installs). | | **Core CLI Utilities** | 📦 `curl` • 📥 `wget` • 🔐 `ca-certificates` • 🧭 `git` • 🔧 `build-essential` + headers (`pkg-config`, `libssl-dev`, `zlib1g-dev`, `libffi-dev`, `libsqlite3-dev`, `libreadline-dev`, `make`) • 🔍 `ripgrep` • 🧭 `fzf` • 📁 `fd` • 📖 `bat` • 🔗 `openssh-client` • 🧵 `tmux` • 🖥️ `screen` • 📊 `jq` • 🌐 `httpie` • 🧮 `bc` | Provides ergonomic defaults plus toolchain deps for compiling runtimes (no global language installs). |
| **Aqua-Managed CLIs** | 🐙 `gh` • 🫖 `tea` • 🌀 `lazygit` | Extend via `~/.config/aquaproj-aqua/aqua.yaml` and run `aqua install`. | | **Aqua-Managed CLIs** | 🐙 `gh` • 🫖 `tea` • 🌀 `lazygit` • 🪄 `direnv` • 🎨 `git-delta` • 🧭 `zoxide` • 🧰 `just` • 🧾 `yq` • ⚡ `xh` • 🌍 `curlie` • 🏠 `chezmoi` • 🛠️ `shfmt` • ✅ `shellcheck` • 🐳 `hadolint` | Extend via `~/.config/aquaproj-aqua/aqua.yaml` and run `aqua install`. Direnv logging is muted and hooks for direnv/zoxide are pre-configured for zsh, bash, and fish. |
| **Container Workflow** | 🐳 Docker socket mount (`/var/run/docker.sock`) | Enables Docker CLIs inside the container; host Docker daemon required. | | **Container Workflow** | 🐳 Docker socket mount (`/var/run/docker.sock`) | Enables Docker CLIs inside the container; host Docker daemon required. |
| **Runtime Environment** | 👤 Non-root user `toolbox` (UID/GID mapped) • 🗂️ `/workspace` mount | Maintains host permissions and isolates artifacts under `artifacts/ToolboxStack/toolbox-base`. | | **Runtime Environment** | 👤 Non-root user `toolbox` (UID/GID mapped) • 🗂️ `/workspace` mount | Maintains host permissions and isolates artifacts under `artifacts/ToolboxStack/toolbox-base`. |

View File

@@ -9,3 +9,11 @@ packages:
- name: direnv/direnv@latest - name: direnv/direnv@latest
- name: dandavison/delta@latest - name: dandavison/delta@latest
- name: ajeetdsouza/zoxide@latest - name: ajeetdsouza/zoxide@latest
- name: casey/just@latest
- name: mikefarah/yq@latest
- name: ducaale/xh@latest
- name: rs/curlie@latest
- name: twpayne/chezmoi@latest
- name: mvdan/sh@latest
- name: koalaman/shellcheck@latest
- name: hadolint/hadolint@latest

View File

@@ -35,18 +35,18 @@ Create a proof of concept with docker-socket-proxy, homepage, and wakaapi compon
- Each fix or modification should be accompanied by a specific test to verify the issue - Each fix or modification should be accompanied by a specific test to verify the issue
- Ensure all changes are validated immediately after implementation - Ensure all changes are validated immediately after implementation
## MVP Component Development Sequence (Test Run) ## MVP Component Development Sequence (Test Run) ✅ COMPLETED
1. **MVP**: docker-socket-proxy, homepage, wakaapi (each must fully satisfy Definition of Done before proceeding) 1. **MVP**: docker-socket-proxy, homepage, wakaapi (each must fully satisfy Definition of Done before proceeding) ✅ COMPLETED
- docker-socket-proxy: Enable Docker socket access for containers that need it (not homepage) - docker-socket-proxy: Enable Docker socket access for containers that need it (not homepage) ✅ COMPLETED
- homepage: Configure to access Docker socket directly for automatic label discovery - homepage: Configure to access Docker socket directly for automatic label discovery ✅ COMPLETED
- wakaapi: Integrate with homepage using proper labels - wakaapi: Integrate with homepage using proper labels ✅ COMPLETED
- All services must utilize Docker Compose labels to automatically show up in homepage - All services must utilize Docker Compose labels to automatically show up in homepage ✅ COMPLETED
- Implement proper service discovery for homepage integration using gethomepage labels - Implement proper service discovery for homepage integration using gethomepage labels ✅ COMPLETED
- Ensure all components are properly labeled with homepage integration labels - Ensure all components are properly labeled with homepage integration labels ✅ COMPLETED
- Implement proper startup ordering using depends_on with health checks - Implement proper startup ordering using depends_on with health checks ✅ COMPLETED
- Homepage container requires direct Docker socket access for automatic service discovery - Homepage container requires direct Docker socket access for automatic service discovery ✅ COMPLETED
- Docker socket proxy provides controlled access for other containers - Docker socket proxy provides controlled access for other containers ✅ COMPLETED
- All containers must have proper UID/GID mapping for security - All containers must have proper UID/GID mapping for security ✅ COMPLETED
## Component Completion Validation ## Component Completion Validation
- Each component must pass health checks for 5 consecutive minutes before moving to the next - Each component must pass health checks for 5 consecutive minutes before moving to the next