| FROM ghcr.io/astral-sh/uv:python3.12-bookworm | |
| # Set default shell to bash for all subsequent RUN commands | |
| SHELL ["/bin/bash", "-c"] | |
| # Create non-root user with UID/GID typically used by VS Code (1000:1000) | |
| RUN useradd -ms /bin/bash -u 1000 non-root-user \ | |
| && apt-get update && apt-get install -y sudo \ | |
| && echo "non-root-user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers | |
| USER non-root-user | |
| WORKDIR /workspaces | |
| # Copy only dependency files first (for better caching) | |
| COPY --chown=non-root-user:non-root-user pyproject.toml ./ | |
| # Create venv and install dependencies | |
| RUN uv venv && \ | |
| echo '. $PWD/.venv/bin/activate' >> /home/non-root-user/.bashrc | |
| # Copy the rest of the project | |
| COPY --chown=non-root-user:non-root-user . ./ | |
| # Install the package in editable mode (now using bash by default) | |
| RUN source .venv/bin/activate && uv pip install -e . | |
| EXPOSE 7860 | |
| ENTRYPOINT ["source .venv/bin/activate && python -m ai_agent.app"] |