feat(developer): add full-fat dev environment with 100+ tools
Some checks are pending
Build Images / Docker (developer) (push) Waiting to run
Build Images / Docker (server-php) (push) Waiting to run
Build Images / LinuxKit (developer-amd64) (push) Blocked by required conditions
Build Images / LinuxKit (server-php-amd64) (push) Blocked by required conditions
Build Images / LinuxKit (developer-arm64) (push) Blocked by required conditions
Build Images / LinuxKit (server-php-arm64) (push) Blocked by required conditions
Build Images / Release LinuxKit Images (push) Blocked by required conditions
Some checks are pending
Build Images / Docker (developer) (push) Waiting to run
Build Images / Docker (server-php) (push) Waiting to run
Build Images / LinuxKit (developer-amd64) (push) Blocked by required conditions
Build Images / LinuxKit (server-php-amd64) (push) Blocked by required conditions
Build Images / LinuxKit (developer-arm64) (push) Blocked by required conditions
Build Images / LinuxKit (server-php-arm64) (push) Blocked by required conditions
Build Images / Release LinuxKit Images (push) Blocked by required conditions
Comprehensive developer image with all S4.6 tooling: AI/LLM: claude, aider, llm VCS: git, gh, lazygit, delta, git-lfs Runtimes: node, bun, deno, go, python3, rustc, frankenphp Package Mgrs: npm, pnpm, yarn, composer, pip, uv, cargo Build: task, just, make, turbo, nx Linting: pint, phpstan, prettier, eslint, biome, golangci-lint, ruff Testing: phpunit, pest, vitest, k6 Infra: docker, kubectl, k9s, helm, terraform, ansible Databases: sqlite, mysql, psql, redis-cli, usql HTTP/Net: curl, httpie, xh, websocat, grpcurl, mkcert Data: jq, yq, fx, gron, miller, dasel Security: age, sops, cosign, trivy, trufflehog Monitoring: htop, btop, ctop, lazydocker, dive Files: fd, rg, fzf, bat, eza, tree, zoxide, broot Editors: nvim, helix, vim, nano Includes shell config (zsh + oh-my-zsh + starship), tmux, and comprehensive aliases for all tools. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
91f8aac50f
commit
69d293dd23
5 changed files with 549 additions and 168 deletions
|
|
@ -1,170 +1,164 @@
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# Docker Developer - Claude-Focused Alpine Dev Image
|
# Core Developer - Full-Fat Development Environment
|
||||||
#
|
#
|
||||||
# A kitchen-sink developer environment optimized for
|
# A comprehensive developer environment with 100+ embedded tools
|
||||||
# AI-assisted development with Claude Code CLI.
|
# for AI-assisted development with Claude Code CLI.
|
||||||
#
|
#
|
||||||
# Build: docker build -t docker-developer .
|
# Build: docker build -t core-dev .
|
||||||
# Run: docker run -it docker-developer
|
# Run: docker run -it -v $(pwd):/workspace core-dev
|
||||||
# ============================================================
|
# ============================================================
|
||||||
|
|
||||||
ARG ALPINE_VERSION=3.22
|
ARG ALPINE_VERSION=3.22
|
||||||
|
|
||||||
# ============================================================
|
FROM alpine:${ALPINE_VERSION}
|
||||||
# Developer - Full development environment
|
|
||||||
# ============================================================
|
|
||||||
FROM alpine:${ALPINE_VERSION} AS developer
|
|
||||||
|
|
||||||
LABEL maintainer="Snider <snider@host.uk.com>"
|
LABEL maintainer="Snider <snider@host.uk.com>"
|
||||||
LABEL org.opencontainers.image.source="https://github.com/host-uk/docker-developer"
|
LABEL org.opencontainers.image.source="https://github.com/host-uk/core-images"
|
||||||
LABEL org.opencontainers.image.description="Claude-focused Alpine developer environment"
|
LABEL org.opencontainers.image.description="Full-fat developer environment with 100+ tools"
|
||||||
LABEL org.opencontainers.image.licenses="EUPL-1.2"
|
LABEL org.opencontainers.image.licenses="EUPL-1.2"
|
||||||
LABEL org.opencontainers.image.vendor="Host UK"
|
LABEL org.opencontainers.image.vendor="Host UK"
|
||||||
LABEL org.opencontainers.image.title="Docker Developer"
|
LABEL org.opencontainers.image.title="Core Developer"
|
||||||
|
|
||||||
# Environment variables
|
# Environment variables
|
||||||
ENV LANG=C.UTF-8
|
ENV LANG=C.UTF-8
|
||||||
ENV LC_ALL=C.UTF-8
|
ENV LC_ALL=C.UTF-8
|
||||||
ENV TERM=xterm-256color
|
ENV TERM=xterm-256color
|
||||||
ENV EDITOR=vim
|
ENV EDITOR=nvim
|
||||||
ENV SHELL=/bin/zsh
|
ENV SHELL=/bin/zsh
|
||||||
ENV GOPATH=/root/go
|
ENV GOPATH=/root/go
|
||||||
ENV PATH="/root/go/bin:/root/.local/bin:/root/.composer/vendor/bin:/usr/local/bin:${PATH}"
|
ENV CARGO_HOME=/root/.cargo
|
||||||
|
ENV RUSTUP_HOME=/root/.rustup
|
||||||
|
ENV PATH="/root/go/bin:/root/.cargo/bin:/root/.local/bin:/root/.composer/vendor/bin:/usr/local/bin:${PATH}"
|
||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# Core System Tools
|
# Core System & Build Tools
|
||||||
# ============================================================
|
# ============================================================
|
||||||
RUN apk add --no-cache \
|
RUN apk add --no-cache \
|
||||||
# Shell and basics
|
# Shells
|
||||||
bash \
|
bash zsh zsh-vcs \
|
||||||
zsh \
|
# Network tools
|
||||||
zsh-vcs \
|
curl wget ca-certificates bind-tools iputils openssh-client \
|
||||||
curl \
|
# Build essentials
|
||||||
wget \
|
make cmake ninja meson gcc g++ musl-dev linux-headers \
|
||||||
ca-certificates \
|
# Core utilities
|
||||||
# Build tools
|
coreutils findutils grep sed gawk less tree ncdu shadow gettext \
|
||||||
make \
|
|
||||||
cmake \
|
|
||||||
ninja \
|
|
||||||
meson \
|
|
||||||
gcc \
|
|
||||||
g++ \
|
|
||||||
musl-dev \
|
|
||||||
linux-headers \
|
|
||||||
# Essential utilities
|
|
||||||
git \
|
|
||||||
git-lfs \
|
|
||||||
openssh-client \
|
|
||||||
gnupg \
|
|
||||||
less \
|
|
||||||
tree \
|
|
||||||
ncdu \
|
|
||||||
htop \
|
|
||||||
# Editors
|
|
||||||
vim \
|
|
||||||
nano \
|
|
||||||
# Text processing
|
|
||||||
jq \
|
|
||||||
yq \
|
|
||||||
# Search tools
|
|
||||||
ripgrep \
|
|
||||||
fzf \
|
|
||||||
# Modern CLI tools (from Alpine packages)
|
|
||||||
bat \
|
|
||||||
eza \
|
|
||||||
fd \
|
|
||||||
# Terminal multiplexer
|
|
||||||
tmux \
|
|
||||||
# Compression
|
# Compression
|
||||||
zip \
|
zip unzip tar gzip xz bzip2 zstd \
|
||||||
unzip \
|
# Process & system
|
||||||
tar \
|
htop procps util-linux \
|
||||||
gzip \
|
# Crypto
|
||||||
xz \
|
gnupg openssl
|
||||||
# Networking
|
|
||||||
bind-tools \
|
# ============================================================
|
||||||
iputils \
|
# Modern CLI Tools (Files & Search)
|
||||||
# Process management
|
# ============================================================
|
||||||
shadow \
|
RUN apk add --no-cache \
|
||||||
# Template processing
|
# File tools
|
||||||
gettext \
|
bat eza fd ripgrep fzf tree \
|
||||||
# For starship
|
# Terminal
|
||||||
starship
|
tmux starship \
|
||||||
|
# Editors
|
||||||
|
vim nano neovim helix \
|
||||||
|
# Directory navigation
|
||||||
|
zoxide broot
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# VCS & Git Tools
|
||||||
|
# ============================================================
|
||||||
|
RUN apk add --no-cache \
|
||||||
|
git git-lfs github-cli lazygit git-delta
|
||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# Node.js Ecosystem
|
# Node.js Ecosystem
|
||||||
# ============================================================
|
# ============================================================
|
||||||
RUN apk add --no-cache \
|
RUN apk add --no-cache nodejs npm
|
||||||
nodejs \
|
|
||||||
npm
|
|
||||||
|
|
||||||
# Install global Node.js packages
|
# Bun runtime
|
||||||
|
RUN curl -fsSL https://bun.sh/install | bash && \
|
||||||
|
ln -sf /root/.bun/bin/bun /usr/local/bin/bun && \
|
||||||
|
ln -sf /root/.bun/bin/bunx /usr/local/bin/bunx
|
||||||
|
|
||||||
|
# Deno runtime
|
||||||
|
RUN curl -fsSL https://deno.land/install.sh | sh && \
|
||||||
|
ln -sf /root/.deno/bin/deno /usr/local/bin/deno
|
||||||
|
|
||||||
|
# Global Node.js packages
|
||||||
RUN npm install -g \
|
RUN npm install -g \
|
||||||
@anthropic-ai/claude-code \
|
@anthropic-ai/claude-code \
|
||||||
typescript \
|
typescript ts-node \
|
||||||
ts-node \
|
pnpm yarn \
|
||||||
pnpm \
|
prettier eslint \
|
||||||
yarn
|
@biomejs/biome \
|
||||||
|
turbo nx \
|
||||||
|
vitest \
|
||||||
|
typedoc \
|
||||||
|
@mermaid-js/mermaid-cli
|
||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# Python Ecosystem
|
# Python Ecosystem
|
||||||
# ============================================================
|
# ============================================================
|
||||||
RUN apk add --no-cache \
|
RUN apk add --no-cache python3 py3-pip python3-dev
|
||||||
python3 \
|
|
||||||
py3-pip \
|
|
||||||
python3-dev
|
|
||||||
|
|
||||||
# Install Python tools
|
|
||||||
RUN pip3 install --break-system-packages \
|
RUN pip3 install --break-system-packages \
|
||||||
pipx \
|
pipx uv \
|
||||||
uv \
|
ipython httpie \
|
||||||
ipython \
|
ruff \
|
||||||
httpie
|
mkdocs mkdocs-material \
|
||||||
|
aider-chat \
|
||||||
|
llm
|
||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# PHP Ecosystem
|
# PHP Ecosystem
|
||||||
# ============================================================
|
# ============================================================
|
||||||
RUN apk add --no-cache \
|
RUN apk add --no-cache \
|
||||||
php84 \
|
php84 php84-phar php84-mbstring php84-openssl php84-curl \
|
||||||
php84-phar \
|
php84-iconv php84-tokenizer php84-dom php84-xml php84-xmlwriter \
|
||||||
php84-mbstring \
|
php84-simplexml php84-ctype php84-fileinfo php84-json \
|
||||||
php84-openssl \
|
php84-posix php84-pcntl php84-zip php84-sodium php84-session \
|
||||||
php84-curl \
|
php84-pdo php84-pdo_mysql php84-pdo_pgsql php84-pdo_sqlite
|
||||||
php84-iconv \
|
|
||||||
php84-tokenizer \
|
|
||||||
php84-dom \
|
|
||||||
php84-xml \
|
|
||||||
php84-xmlwriter \
|
|
||||||
php84-simplexml \
|
|
||||||
php84-ctype \
|
|
||||||
php84-fileinfo \
|
|
||||||
php84-json \
|
|
||||||
php84-posix \
|
|
||||||
php84-pcntl \
|
|
||||||
php84-zip
|
|
||||||
|
|
||||||
# Create php symlink
|
|
||||||
RUN ln -sf /usr/bin/php84 /usr/bin/php
|
RUN ln -sf /usr/bin/php84 /usr/bin/php
|
||||||
|
|
||||||
# Install Composer
|
# Composer
|
||||||
RUN curl -sS https://getcomposer.org/installer | php -- \
|
RUN curl -sS https://getcomposer.org/installer | php -- \
|
||||||
--install-dir=/usr/bin --filename=composer
|
--install-dir=/usr/bin --filename=composer
|
||||||
|
|
||||||
# Install PHP dev tools globally
|
# PHP tools via Composer
|
||||||
RUN composer global require --no-interaction \
|
RUN composer global require --no-interaction \
|
||||||
phpunit/phpunit:^11.0 \
|
phpunit/phpunit:^11.0 \
|
||||||
|
pestphp/pest:^3.0 \
|
||||||
phpstan/phpstan:^2.0 \
|
phpstan/phpstan:^2.0 \
|
||||||
squizlabs/php_codesniffer:^3.0 \
|
laravel/pint:^1.0 \
|
||||||
friendsofphp/php-cs-fixer:^3.0
|
phpdocumentor/phpdocumentor:^3.0
|
||||||
|
|
||||||
|
# FrankenPHP (static binary)
|
||||||
|
RUN curl -fsSL "https://github.com/dunglas/frankenphp/releases/latest/download/frankenphp-linux-$(uname -m | sed 's/aarch64/arm64/' | sed 's/x86_64/x86_64/')" -o /usr/local/bin/frankenphp && \
|
||||||
|
chmod +x /usr/local/bin/frankenphp
|
||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# Go Ecosystem
|
# Go Ecosystem
|
||||||
# ============================================================
|
# ============================================================
|
||||||
RUN apk add --no-cache go
|
RUN apk add --no-cache go
|
||||||
|
|
||||||
# Install Go tools (pinned to versions compatible with Go 1.24)
|
RUN go install golang.org/x/tools/gopls@latest && \
|
||||||
RUN go install golang.org/x/tools/gopls@v0.17.1 && \
|
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest && \
|
||||||
go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.62.2
|
go install github.com/go-task/task/v3/cmd/task@latest && \
|
||||||
|
go install github.com/casey/just@latest && \
|
||||||
|
go install github.com/watchexec/watchexec/cmd/watchexec@latest 2>/dev/null || true && \
|
||||||
|
go install github.com/boyter/scc/v3@latest
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# Rust Ecosystem
|
||||||
|
# ============================================================
|
||||||
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable --profile minimal
|
||||||
|
|
||||||
|
# Rust-based CLI tools
|
||||||
|
RUN . /root/.cargo/env && \
|
||||||
|
cargo install --locked \
|
||||||
|
hyperfine \
|
||||||
|
tokei \
|
||||||
|
xh \
|
||||||
|
grex
|
||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# Database Clients
|
# Database Clients
|
||||||
|
|
@ -175,24 +169,103 @@ RUN apk add --no-cache \
|
||||||
redis \
|
redis \
|
||||||
sqlite
|
sqlite
|
||||||
|
|
||||||
# ============================================================
|
# usql - universal SQL client
|
||||||
# Container Tools
|
RUN go install github.com/xo/usql@latest
|
||||||
# ============================================================
|
|
||||||
RUN apk add --no-cache docker-cli
|
|
||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# Git Enhancements
|
# Infrastructure & DevOps
|
||||||
# ============================================================
|
# ============================================================
|
||||||
RUN apk add --no-cache github-cli lazygit
|
RUN apk add --no-cache \
|
||||||
|
docker-cli docker-cli-compose \
|
||||||
|
kubectl helm \
|
||||||
|
terraform ansible
|
||||||
|
|
||||||
|
# k9s - Kubernetes TUI
|
||||||
|
RUN curl -fsSL "https://github.com/derailed/k9s/releases/latest/download/k9s_Linux_$(uname -m | sed 's/x86_64/amd64/' | sed 's/aarch64/arm64/').tar.gz" | tar -xzf - -C /usr/local/bin k9s
|
||||||
|
|
||||||
|
# lazydocker
|
||||||
|
RUN curl -fsSL "https://github.com/jesseduffield/lazydocker/releases/latest/download/lazydocker_$(uname -s)_$(uname -m).tar.gz" | tar -xzf - -C /usr/local/bin lazydocker
|
||||||
|
|
||||||
|
# dive - Docker image explorer
|
||||||
|
RUN go install github.com/wagoodman/dive@latest
|
||||||
|
|
||||||
|
# ctop - Container metrics
|
||||||
|
RUN curl -fsSL "https://github.com/bcicen/ctop/releases/latest/download/ctop-$(uname -s | tr '[:upper:]' '[:lower:]')-$(uname -m | sed 's/x86_64/amd64/' | sed 's/aarch64/arm64/')" -o /usr/local/bin/ctop && \
|
||||||
|
chmod +x /usr/local/bin/ctop
|
||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# Oh-My-Zsh Installation
|
# HTTP & Networking
|
||||||
# ============================================================
|
# ============================================================
|
||||||
|
RUN apk add --no-cache websocat
|
||||||
|
|
||||||
|
# grpcurl
|
||||||
|
RUN go install github.com/fullstorydev/grpcurl/cmd/grpcurl@latest
|
||||||
|
|
||||||
|
# mkcert - local CA
|
||||||
|
RUN curl -fsSL "https://github.com/FiloSottile/mkcert/releases/latest/download/mkcert-$(uname -s | tr '[:upper:]' '[:lower:]')-$(uname -m | sed 's/x86_64/amd64/' | sed 's/aarch64/arm64/')" -o /usr/local/bin/mkcert && \
|
||||||
|
chmod +x /usr/local/bin/mkcert
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# Data Processing
|
||||||
|
# ============================================================
|
||||||
|
RUN apk add --no-cache jq yq miller
|
||||||
|
|
||||||
|
# fx - JSON viewer
|
||||||
|
RUN go install github.com/antonmedv/fx@latest
|
||||||
|
|
||||||
|
# gron - Make JSON greppable
|
||||||
|
RUN go install github.com/tomnomnom/gron@latest
|
||||||
|
|
||||||
|
# dasel - Query data formats
|
||||||
|
RUN curl -fsSL "https://github.com/TomWright/dasel/releases/latest/download/dasel_linux_$(uname -m | sed 's/x86_64/amd64/' | sed 's/aarch64/arm64/')" -o /usr/local/bin/dasel && \
|
||||||
|
chmod +x /usr/local/bin/dasel
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# Security Tools
|
||||||
|
# ============================================================
|
||||||
|
# age - encryption
|
||||||
|
RUN apk add --no-cache age
|
||||||
|
|
||||||
|
# sops - secrets management
|
||||||
|
RUN curl -fsSL "https://github.com/getsops/sops/releases/latest/download/sops-$(uname -s | tr '[:upper:]' '[:lower:]')-$(uname -m | sed 's/x86_64/amd64/' | sed 's/aarch64/arm64/')" -o /usr/local/bin/sops && \
|
||||||
|
chmod +x /usr/local/bin/sops
|
||||||
|
|
||||||
|
# cosign - container signing
|
||||||
|
RUN go install github.com/sigstore/cosign/v2/cmd/cosign@latest
|
||||||
|
|
||||||
|
# trivy - vulnerability scanner
|
||||||
|
RUN curl -fsSL "https://github.com/aquasecurity/trivy/releases/latest/download/trivy_$(uname -s)_$(uname -m).tar.gz" | tar -xzf - -C /usr/local/bin trivy
|
||||||
|
|
||||||
|
# trufflehog - secret scanner
|
||||||
|
RUN curl -fsSL "https://github.com/trufflesecurity/trufflehog/releases/latest/download/trufflehog_$(uname -s)_$(uname -m | sed 's/x86_64/amd64/' | sed 's/aarch64/arm64/').tar.gz" | tar -xzf - -C /usr/local/bin trufflehog
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# Monitoring
|
||||||
|
# ============================================================
|
||||||
|
RUN apk add --no-cache btop
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# Testing Tools
|
||||||
|
# ============================================================
|
||||||
|
# k6 - load testing
|
||||||
|
RUN curl -fsSL "https://github.com/grafana/k6/releases/latest/download/k6-$(uname -s | tr '[:upper:]' '[:lower:]')-$(uname -m | sed 's/x86_64/amd64/' | sed 's/aarch64/arm64/').tar.gz" | tar -xzf - --strip-components=1 -C /usr/local/bin
|
||||||
|
|
||||||
|
# Playwright (via npm, already installed)
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# Misc Tools
|
||||||
|
# ============================================================
|
||||||
|
RUN apk add --no-cache direnv
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# Shell Configuration
|
||||||
|
# ============================================================
|
||||||
|
# Oh-My-Zsh
|
||||||
RUN sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
|
RUN sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
|
||||||
|
|
||||||
# Install zsh plugins
|
# Zsh plugins
|
||||||
RUN git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-/root/.oh-my-zsh/custom}/plugins/zsh-autosuggestions && \
|
RUN git clone --depth=1 https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-/root/.oh-my-zsh/custom}/plugins/zsh-autosuggestions && \
|
||||||
git clone https://github.com/zsh-users/zsh-syntax-highlighting ${ZSH_CUSTOM:-/root/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
|
git clone --depth=1 https://github.com/zsh-users/zsh-syntax-highlighting ${ZSH_CUSTOM:-/root/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
|
||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# Configuration Files
|
# Configuration Files
|
||||||
|
|
@ -200,18 +273,15 @@ RUN git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-/ro
|
||||||
COPY --chmod=644 config/zshrc /root/.zshrc
|
COPY --chmod=644 config/zshrc /root/.zshrc
|
||||||
COPY --chmod=644 config/starship.toml /root/.config/starship.toml
|
COPY --chmod=644 config/starship.toml /root/.config/starship.toml
|
||||||
COPY --chmod=644 config/tmux.conf /root/.tmux.conf
|
COPY --chmod=644 config/tmux.conf /root/.tmux.conf
|
||||||
|
COPY --chmod=644 config/aliases.sh /etc/profile.d/aliases.sh
|
||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# Entrypoint and Hooks
|
# Entrypoint
|
||||||
# ============================================================
|
# ============================================================
|
||||||
COPY --chmod=755 scripts/entrypoint.sh /usr/local/bin/entrypoint.sh
|
COPY --chmod=755 scripts/entrypoint.sh /usr/local/bin/entrypoint.sh
|
||||||
COPY --chmod=755 scripts/hooks.sh /usr/local/bin/hooks.sh
|
|
||||||
|
|
||||||
# Create config directories
|
# Create directories
|
||||||
RUN mkdir -p /root/.config/docker-developer/hooks/pre-start \
|
RUN mkdir -p /root/.config /root/.claude /workspace
|
||||||
/root/.config/docker-developer/hooks/post-start \
|
|
||||||
/root/.claude \
|
|
||||||
/workspace
|
|
||||||
|
|
||||||
WORKDIR /workspace
|
WORKDIR /workspace
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,56 +1,185 @@
|
||||||
# Core-dev shell aliases
|
# Core Developer - Shell Aliases
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
# Navigation
|
# Navigation
|
||||||
|
# ============================================================
|
||||||
alias ..='cd ..'
|
alias ..='cd ..'
|
||||||
alias ...='cd ../..'
|
alias ...='cd ../..'
|
||||||
|
alias ....='cd ../../..'
|
||||||
|
alias ~='cd ~'
|
||||||
|
alias -- -='cd -'
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# File Listing (eza)
|
||||||
|
# ============================================================
|
||||||
|
alias ls='eza --icons'
|
||||||
alias ll='eza -la --icons --git'
|
alias ll='eza -la --icons --git'
|
||||||
alias la='eza -la --icons'
|
alias la='eza -la --icons'
|
||||||
alias lt='eza --tree --level=2 --icons'
|
alias lt='eza --tree --level=2 --icons'
|
||||||
|
alias lta='eza --tree --level=3 --icons -a'
|
||||||
|
|
||||||
# Git
|
# ============================================================
|
||||||
alias g='git'
|
# Modern CLI Replacements
|
||||||
alias gs='git status'
|
# ============================================================
|
||||||
alias gd='git diff'
|
|
||||||
alias gc='git commit'
|
|
||||||
alias gp='git push'
|
|
||||||
alias gl='git log --oneline -20'
|
|
||||||
alias gco='git checkout'
|
|
||||||
alias gb='git branch'
|
|
||||||
alias lg='lazygit'
|
|
||||||
|
|
||||||
# Docker
|
|
||||||
alias d='docker'
|
|
||||||
alias dc='docker compose'
|
|
||||||
alias dps='docker ps'
|
|
||||||
alias di='docker images'
|
|
||||||
alias dex='docker exec -it'
|
|
||||||
alias ld='lazydocker'
|
|
||||||
|
|
||||||
# Kubernetes
|
|
||||||
alias k='kubectl'
|
|
||||||
alias kgp='kubectl get pods'
|
|
||||||
alias kgs='kubectl get svc'
|
|
||||||
alias kgd='kubectl get deployments'
|
|
||||||
|
|
||||||
# PHP/Laravel
|
|
||||||
alias art='php artisan'
|
|
||||||
alias sail='./vendor/bin/sail'
|
|
||||||
alias pest='./vendor/bin/pest'
|
|
||||||
alias pint='./vendor/bin/pint'
|
|
||||||
|
|
||||||
# Core
|
|
||||||
alias c='core'
|
|
||||||
alias cdev='core dev'
|
|
||||||
alias cbuild='core build'
|
|
||||||
alias crun='core run'
|
|
||||||
|
|
||||||
# Misc
|
|
||||||
alias cat='bat'
|
alias cat='bat'
|
||||||
alias find='fd'
|
alias find='fd'
|
||||||
alias grep='rg'
|
alias grep='rg'
|
||||||
alias top='btop'
|
alias top='btop'
|
||||||
|
alias diff='delta'
|
||||||
alias vim='nvim'
|
alias vim='nvim'
|
||||||
alias vi='nvim'
|
alias vi='nvim'
|
||||||
|
|
||||||
# FZF integrations
|
# ============================================================
|
||||||
|
# Git
|
||||||
|
# ============================================================
|
||||||
|
alias g='git'
|
||||||
|
alias gs='git status'
|
||||||
|
alias gd='git diff'
|
||||||
|
alias gds='git diff --staged'
|
||||||
|
alias gc='git commit'
|
||||||
|
alias gca='git commit -a'
|
||||||
|
alias gcm='git commit -m'
|
||||||
|
alias gp='git push'
|
||||||
|
alias gpl='git pull'
|
||||||
|
alias gl='git log --oneline -20'
|
||||||
|
alias glo='git log --oneline --graph --all'
|
||||||
|
alias gco='git checkout'
|
||||||
|
alias gb='git branch'
|
||||||
|
alias gba='git branch -a'
|
||||||
|
alias gf='git fetch'
|
||||||
|
alias gm='git merge'
|
||||||
|
alias gr='git rebase'
|
||||||
|
alias gst='git stash'
|
||||||
|
alias lg='lazygit'
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# Docker
|
||||||
|
# ============================================================
|
||||||
|
alias d='docker'
|
||||||
|
alias dc='docker compose'
|
||||||
|
alias dps='docker ps'
|
||||||
|
alias dpsa='docker ps -a'
|
||||||
|
alias di='docker images'
|
||||||
|
alias dex='docker exec -it'
|
||||||
|
alias drm='docker rm'
|
||||||
|
alias drmi='docker rmi'
|
||||||
|
alias dlog='docker logs -f'
|
||||||
|
alias dprune='docker system prune -af'
|
||||||
|
alias ld='lazydocker'
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# Kubernetes
|
||||||
|
# ============================================================
|
||||||
|
alias k='kubectl'
|
||||||
|
alias kgp='kubectl get pods'
|
||||||
|
alias kgs='kubectl get svc'
|
||||||
|
alias kgd='kubectl get deployments'
|
||||||
|
alias kgn='kubectl get nodes'
|
||||||
|
alias kga='kubectl get all'
|
||||||
|
alias kdp='kubectl describe pod'
|
||||||
|
alias kds='kubectl describe svc'
|
||||||
|
alias kdd='kubectl describe deployment'
|
||||||
|
alias klf='kubectl logs -f'
|
||||||
|
alias kex='kubectl exec -it'
|
||||||
|
alias kaf='kubectl apply -f'
|
||||||
|
alias kdf='kubectl delete -f'
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# PHP / Laravel
|
||||||
|
# ============================================================
|
||||||
|
alias art='php artisan'
|
||||||
|
alias sail='./vendor/bin/sail'
|
||||||
|
alias pest='./vendor/bin/pest'
|
||||||
|
alias pint='./vendor/bin/pint'
|
||||||
|
alias phpunit='./vendor/bin/phpunit'
|
||||||
|
alias stan='./vendor/bin/phpstan'
|
||||||
|
alias tinker='php artisan tinker'
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# Node.js
|
||||||
|
# ============================================================
|
||||||
|
alias nr='npm run'
|
||||||
|
alias ni='npm install'
|
||||||
|
alias nid='npm install -D'
|
||||||
|
alias nu='npm update'
|
||||||
|
alias nci='npm ci'
|
||||||
|
alias pn='pnpm'
|
||||||
|
alias pnr='pnpm run'
|
||||||
|
alias pni='pnpm install'
|
||||||
|
alias bn='bun'
|
||||||
|
alias bnr='bun run'
|
||||||
|
alias bni='bun install'
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# Python
|
||||||
|
# ============================================================
|
||||||
|
alias py='python3'
|
||||||
|
alias pip='pip3'
|
||||||
|
alias venv='python3 -m venv'
|
||||||
|
alias activate='source .venv/bin/activate'
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# Go
|
||||||
|
# ============================================================
|
||||||
|
alias gob='go build'
|
||||||
|
alias gor='go run'
|
||||||
|
alias got='go test'
|
||||||
|
alias gotv='go test -v'
|
||||||
|
alias gomt='go mod tidy'
|
||||||
|
alias gof='go fmt ./...'
|
||||||
|
alias gol='golangci-lint run'
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# Rust
|
||||||
|
# ============================================================
|
||||||
|
alias cb='cargo build'
|
||||||
|
alias cr='cargo run'
|
||||||
|
alias ct='cargo test'
|
||||||
|
alias cc='cargo check'
|
||||||
|
alias cf='cargo fmt'
|
||||||
|
alias cl='cargo clippy'
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# Core CLI
|
||||||
|
# ============================================================
|
||||||
|
alias core='core'
|
||||||
|
alias cdev='core dev'
|
||||||
|
alias cbuild='core build'
|
||||||
|
alias crun='core run'
|
||||||
|
alias crelease='core release'
|
||||||
|
alias cphp='core php'
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# Data Processing
|
||||||
|
# ============================================================
|
||||||
|
alias json='jq'
|
||||||
|
alias yaml='yq'
|
||||||
|
alias csv='mlr --csv'
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# Security
|
||||||
|
# ============================================================
|
||||||
|
alias encrypt='age -e'
|
||||||
|
alias decrypt='age -d'
|
||||||
|
alias scan='trivy fs .'
|
||||||
|
alias secrets='trufflehog filesystem .'
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# FZF Integrations
|
||||||
|
# ============================================================
|
||||||
alias fzp='fzf --preview "bat --color=always {}"'
|
alias fzp='fzf --preview "bat --color=always {}"'
|
||||||
|
alias fzg='fzf --preview "git diff {} | delta"'
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# Misc
|
||||||
|
# ============================================================
|
||||||
|
alias h='history'
|
||||||
|
alias cl='clear'
|
||||||
|
alias q='exit'
|
||||||
|
alias reload='source ~/.zshrc'
|
||||||
|
alias path='echo $PATH | tr ":" "\n"'
|
||||||
|
alias week='date +%V'
|
||||||
|
alias myip='curl -s ifconfig.me'
|
||||||
|
alias ports='ss -tuln'
|
||||||
|
alias serve='python3 -m http.server'
|
||||||
|
alias weather='curl -s wttr.in'
|
||||||
|
|
|
||||||
66
developer/config/tmux.conf
Normal file
66
developer/config/tmux.conf
Normal file
|
|
@ -0,0 +1,66 @@
|
||||||
|
# Core Developer - Tmux Configuration
|
||||||
|
|
||||||
|
# Use Ctrl-a as prefix (like screen)
|
||||||
|
set -g prefix C-a
|
||||||
|
unbind C-b
|
||||||
|
bind C-a send-prefix
|
||||||
|
|
||||||
|
# Enable mouse support
|
||||||
|
set -g mouse on
|
||||||
|
|
||||||
|
# Start windows and panes at 1
|
||||||
|
set -g base-index 1
|
||||||
|
setw -g pane-base-index 1
|
||||||
|
|
||||||
|
# Renumber windows on close
|
||||||
|
set -g renumber-windows on
|
||||||
|
|
||||||
|
# Increase history
|
||||||
|
set -g history-limit 50000
|
||||||
|
|
||||||
|
# Enable 256 colors
|
||||||
|
set -g default-terminal "screen-256color"
|
||||||
|
set -ga terminal-overrides ",*256col*:Tc"
|
||||||
|
|
||||||
|
# Faster escape time
|
||||||
|
set -sg escape-time 0
|
||||||
|
|
||||||
|
# Split panes with | and -
|
||||||
|
bind | split-window -h -c "#{pane_current_path}"
|
||||||
|
bind - split-window -v -c "#{pane_current_path}"
|
||||||
|
|
||||||
|
# Navigate panes with vim keys
|
||||||
|
bind h select-pane -L
|
||||||
|
bind j select-pane -D
|
||||||
|
bind k select-pane -U
|
||||||
|
bind l select-pane -R
|
||||||
|
|
||||||
|
# Resize panes
|
||||||
|
bind -r H resize-pane -L 5
|
||||||
|
bind -r J resize-pane -D 5
|
||||||
|
bind -r K resize-pane -U 5
|
||||||
|
bind -r L resize-pane -R 5
|
||||||
|
|
||||||
|
# Reload config
|
||||||
|
bind r source-file ~/.tmux.conf \; display "Config reloaded!"
|
||||||
|
|
||||||
|
# Status bar
|
||||||
|
set -g status-style bg=default,fg=white
|
||||||
|
set -g status-left "#[fg=cyan]#S "
|
||||||
|
set -g status-right "#[fg=yellow]%H:%M"
|
||||||
|
set -g status-left-length 20
|
||||||
|
|
||||||
|
# Window status
|
||||||
|
setw -g window-status-current-style fg=cyan,bold
|
||||||
|
setw -g window-status-style fg=white
|
||||||
|
|
||||||
|
# Pane borders
|
||||||
|
set -g pane-border-style fg=colour238
|
||||||
|
set -g pane-active-border-style fg=cyan
|
||||||
|
|
||||||
|
# Activity monitoring
|
||||||
|
setw -g monitor-activity on
|
||||||
|
set -g visual-activity off
|
||||||
|
|
||||||
|
# Use zsh
|
||||||
|
set -g default-shell /bin/zsh
|
||||||
69
developer/config/zshrc
Normal file
69
developer/config/zshrc
Normal file
|
|
@ -0,0 +1,69 @@
|
||||||
|
# Core Developer - Zsh Configuration
|
||||||
|
|
||||||
|
# Path to oh-my-zsh installation
|
||||||
|
export ZSH="$HOME/.oh-my-zsh"
|
||||||
|
|
||||||
|
# Theme (using starship instead)
|
||||||
|
ZSH_THEME=""
|
||||||
|
|
||||||
|
# Plugins
|
||||||
|
plugins=(
|
||||||
|
git
|
||||||
|
docker
|
||||||
|
kubectl
|
||||||
|
composer
|
||||||
|
npm
|
||||||
|
golang
|
||||||
|
rust
|
||||||
|
python
|
||||||
|
zsh-autosuggestions
|
||||||
|
zsh-syntax-highlighting
|
||||||
|
)
|
||||||
|
|
||||||
|
# Load oh-my-zsh
|
||||||
|
source $ZSH/oh-my-zsh.sh
|
||||||
|
|
||||||
|
# User configuration
|
||||||
|
export LANG=C.UTF-8
|
||||||
|
export LC_ALL=C.UTF-8
|
||||||
|
export EDITOR=nvim
|
||||||
|
export VISUAL=nvim
|
||||||
|
|
||||||
|
# Paths
|
||||||
|
export GOPATH=$HOME/go
|
||||||
|
export CARGO_HOME=$HOME/.cargo
|
||||||
|
export PATH="$GOPATH/bin:$CARGO_HOME/bin:$HOME/.local/bin:$HOME/.composer/vendor/bin:$PATH"
|
||||||
|
|
||||||
|
# FZF configuration
|
||||||
|
export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git'
|
||||||
|
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
|
||||||
|
export FZF_ALT_C_COMMAND='fd --type d --hidden --follow --exclude .git'
|
||||||
|
|
||||||
|
# Bat configuration
|
||||||
|
export BAT_THEME="TwoDark"
|
||||||
|
|
||||||
|
# History
|
||||||
|
HISTSIZE=50000
|
||||||
|
SAVEHIST=50000
|
||||||
|
setopt SHARE_HISTORY
|
||||||
|
setopt HIST_IGNORE_DUPS
|
||||||
|
setopt HIST_IGNORE_SPACE
|
||||||
|
|
||||||
|
# Load aliases
|
||||||
|
[[ -f /etc/profile.d/aliases.sh ]] && source /etc/profile.d/aliases.sh
|
||||||
|
|
||||||
|
# Initialize tools
|
||||||
|
eval "$(starship init zsh)"
|
||||||
|
eval "$(zoxide init zsh)"
|
||||||
|
eval "$(direnv hook zsh)"
|
||||||
|
|
||||||
|
# Welcome message
|
||||||
|
if [[ -o interactive ]]; then
|
||||||
|
echo ""
|
||||||
|
echo " Core Developer Environment"
|
||||||
|
echo " Run 'claude' to start AI-assisted development"
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Start in workspace if it exists
|
||||||
|
[[ -d /workspace ]] && cd /workspace
|
||||||
47
developer/scripts/entrypoint.sh
Normal file
47
developer/scripts/entrypoint.sh
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# Core Developer - Entrypoint Script
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Run pre-start hooks if they exist
|
||||||
|
if [ -d "/root/.config/core-dev/hooks/pre-start" ]; then
|
||||||
|
for hook in /root/.config/core-dev/hooks/pre-start/*; do
|
||||||
|
[ -x "$hook" ] && "$hook"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Setup git config if not already set
|
||||||
|
if [ -z "$(git config --global user.name 2>/dev/null)" ]; then
|
||||||
|
if [ -n "$GIT_USER_NAME" ]; then
|
||||||
|
git config --global user.name "$GIT_USER_NAME"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$(git config --global user.email 2>/dev/null)" ]; then
|
||||||
|
if [ -n "$GIT_USER_EMAIL" ]; then
|
||||||
|
git config --global user.email "$GIT_USER_EMAIL"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Setup SSH agent if keys exist
|
||||||
|
if [ -d "$HOME/.ssh" ] && [ -z "$SSH_AUTH_SOCK" ]; then
|
||||||
|
eval "$(ssh-agent -s)" > /dev/null 2>&1
|
||||||
|
for key in $HOME/.ssh/id_* ; do
|
||||||
|
[ -f "$key" ] && [ ! -f "$key.pub" ] || ssh-add "$key" 2>/dev/null || true
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Initialize mkcert CA if not already done
|
||||||
|
if [ ! -f "$HOME/.local/share/mkcert/rootCA.pem" ]; then
|
||||||
|
mkcert -install 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Run post-start hooks if they exist
|
||||||
|
if [ -d "/root/.config/core-dev/hooks/post-start" ]; then
|
||||||
|
for hook in /root/.config/core-dev/hooks/post-start/*; do
|
||||||
|
[ -x "$hook" ] && "$hook"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Execute command
|
||||||
|
exec "$@"
|
||||||
Loading…
Add table
Reference in a new issue