# hadolint ignore=DL3007 FROM mcr.microsoft.com/devcontainers/base:alpine ARG CLUSTERTOOL_VERSION=2.0.0 ARG CONTAINER_NAME # hadolint ignore=DL3008,DL3015,SC2086,SC2155 RUN apk update && \ apk --no-cache add \ age bash bind-tools ca-certificates curl direnv fish fzf \ gettext git github-cli helm iputils jq k9s kubectl kustomize \ python3 py3-pip moreutils openssh-client openssl starship yq \ sshfs libc6-compat fuse && \ rm -rf /var/cache/apk/* /tmp/* /var/tmp/* # Install CLI tools via jpillora scripts RUN for app in \ "budimanjojo/talhelper!!?as=talhelper&type=script" \ "fluxcd/flux2!!?as=flux&type=script" \ "helmfile/helmfile!!?as=helmfile&type=script" \ "kubecolor/kubecolor!!?as=kubecolor&type=script" \ "kubernetes-sigs/krew!!?as=krew&type=script" \ "siderolabs/talos!!?as=talosctl&type=script"; \ do \ echo "=== Installing ${app} ==="; \ curl -fsSL "https://i.jpillora.com/${app}" | bash; \ done # Create the completions and conf.d directories explicitly RUN mkdir -p /home/vscode/.config/fish/completions && \ mkdir -p /home/vscode/.config/fish/conf.d # Add completions only if the command exists RUN for tool in cilium flux helm helmfile k9s kubectl kustomize talhelper talosctl; do \ if command -v "$tool" >/dev/null 2>&1; then \ mkdir -p /home/vscode/.config/fish/completions && \ $tool completion fish > "/home/vscode/.config/fish/completions/${tool}.fish" || true; \ fi; \ done && \ gh completion --shell fish > /home/vscode/.config/fish/completions/gh.fish || true && \ stern --completion fish > /home/vscode/.config/fish/completions/stern.fish || true && \ yq shell-completion fish > /home/vscode/.config/fish/completions/yq.fish || true RUN mkdir -p /home/vscode/.config/fish/conf.d && \ printf '%s\n' \ "if status is-interactive" \ " direnv hook fish | source" \ " starship init fish | source" \ "end" \ > /home/vscode/.config/fish/conf.d/hooks.fish # Add aliases to fish config RUN mkdir -p /home/vscode/.config/fish/conf.d && \ printf '%s\n' \ "alias kubectl kubecolor" \ "alias k kubectl" \ > /home/vscode/.config/fish/conf.d/aliases.fish # Custom fish prompt RUN mkdir -p /home/vscode/.config/fish/conf.d && \ echo "set fish_greeting" > /home/vscode/.config/fish/conf.d/fish_greeting.fish # Setup direnv whitelist RUN mkdir -p /home/vscode/.config/direnv && \ tee /home/vscode/.config/direnv/direnv.toml > /dev/null <