FROM ubuntu:24.04

ENV DEBIAN_FRONTEND=noninteractive
ENV HOME=/root
ENV PATH="/usr/local/bin:/root/.bun/bin:$PATH"

# Base tools
RUN apt-get update && apt-get install -y --no-install-recommends \
    curl wget git openssh-server ca-certificates gnupg \
    build-essential unzip zip jq tmux zsh ripgrep \
    postgresql-client redis-tools haproxy \
    nano vim htop netcat-openbsd dnsutils iputils-ping \
    && rm -rf /var/lib/apt/lists/*

# Bun — install then move to /usr/local/bin so it's on the image filesystem, not the /root PVC
RUN curl -fsSL https://bun.sh/install | bash \
    && mv /root/.bun/bin/bun /usr/local/bin/bun \
    && ln -sf /usr/local/bin/bun /usr/local/bin/bunx \
    && rm -rf /root/.bun

# code-server (VS Code in browser)
RUN curl -fsSL https://code-server.dev/install.sh | sh

# kubectl
RUN curl -fsSL "https://dl.k8s.io/release/$(curl -fsSL https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" \
    -o /usr/local/bin/kubectl && chmod +x /usr/local/bin/kubectl

# doctl
RUN curl -fsSL https://github.com/digitalocean/doctl/releases/download/v1.119.0/doctl-1.119.0-linux-amd64.tar.gz \
    | tar xz -C /usr/local/bin

# helm
RUN curl -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

# k9s
RUN curl -fsSL https://github.com/derailed/k9s/releases/latest/download/k9s_Linux_amd64.tar.gz \
    | tar xz -C /usr/local/bin k9s

# SSH setup — host keys generated at runtime via entrypoint
RUN mkdir -p /run/sshd /root/.ssh && chmod 700 /root/.ssh

COPY entrypoint-devpod.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

WORKDIR /root
EXPOSE 8080 22
ENTRYPOINT ["/entrypoint.sh"]
