.
This commit is contained in:
@@ -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/"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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`. |
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user