FROM python:3.11.10-bookworm ARG USER=vscode ARG USER_UID=1000 ARG USER_GID=1000 ARG DEBIAN_FRONTEND=noninteractive # 1) Toolchain + utilities for building libpostal, plus LazyVim deps RUN apt-get update && apt-get install -y --no-install-recommends \ sudo jq vim curl git ca-certificates wget \ build-essential pkg-config automake autoconf libtool \ ripgrep fd-find make unzip bash-completion \ && rm -rf /var/lib/apt/lists/* # Neovim latest (LazyVim needs >=0.9) RUN curl -fsSL https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.tar.gz \ | tar -xz -C /opt \ && ln -s /opt/nvim-linux-x86_64/bin/nvim /usr/local/bin/nvim # 3) Create the user and grant sudo privileges RUN groupadd -g ${USER_GID} ${USER} \ && useradd -m -u ${USER_UID} -g ${USER_GID} -s /usr/bin/bash ${USER} \ && echo "${USER} ALL=(ALL) NOPASSWD: ALL" >/etc/sudoers.d/${USER} \ && chmod 0440 /etc/sudoers.d/${USER} # ENV PIP_NO_CACHE_DIR=1 PIP_DISABLE_PIP_VERSION_CHECK=1 ADD backend/engine/requirements.txt requirements1.txt ADD backend/app/requirements/requirements.txt requirements2.txt ADD .devcontainer/backend/requirements.txt requirements3.txt ADD etl/hubspot/requirements.txt requirements4.txt RUN cat requirements1.txt requirements2.txt requirements3.txt requirements4.txt > requirements.txt RUN pip install -r requirements.txt # 5) Workdir WORKDIR /workspaces/model # 6) Make Python find your package # Add project root to PYTHONPATH for all processes ENV PYTHONPATH=/workspaces/model:${PYTHONPATH} # Install terraform RUN apt-get update && sudo apt-get install -y gnupg software-properties-common RUN wget -O- https://apt.releases.hashicorp.com/gpg | \ gpg --dearmor | \ sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg > /dev/null RUN echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \ https://apt.releases.hashicorp.com $(lsb_release -cs) main" | \ tee /etc/apt/sources.list.d/hashicorp.list RUN apt update RUN apt-get install -y terraform RUN terraform -install-autocomplete || true # Install postgres RUN apt install -y wget gnupg2 lsb-release RUN echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list RUN wget -qO - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - RUN apt update RUN apt install -y postgresql-14 # Install Node.js RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \ && apt-get install -y nodejs \ && rm -rf /var/lib/apt/lists/* # GitHub CLI — used by the postCreate skill installer to authenticate against # private Hestia-Homes repos via the host's mounted ~/.config/gh. RUN curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg \ | dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \ && chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \ && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" \ > /etc/apt/sources.list.d/github-cli.list \ && apt update && apt install -y gh \ && rm -rf /var/lib/apt/lists/* USER ${USER} # Bootstrap LazyVim starter config RUN git clone https://github.com/LazyVim/starter /home/${USER}/.config/nvim \ && rm -rf /home/${USER}/.config/nvim/.git # Install Claude Code CLI (skills are installed via postCreate from Hestia-Homes/agentic-toolkit) RUN curl -fsSL https://claude.ai/install.sh | bash ENV PATH="/home/vscode/.local/bin:${PATH}" USER root