37 lines
800 B
Docker
37 lines
800 B
Docker
FROM python:3.13-alpine
|
|
|
|
# Install system dependencies
|
|
RUN apk add --no-cache \
|
|
git \
|
|
curl \
|
|
wget \
|
|
bash \
|
|
build-base \
|
|
linux-headers \
|
|
fish
|
|
|
|
# Install uv from official image
|
|
COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv
|
|
RUN uv --version
|
|
|
|
# Create non-root user with fish shell
|
|
RUN adduser -D -s /usr/bin/fish vscode
|
|
|
|
# Create workspace and set permissions
|
|
RUN mkdir -p /workspace && chown vscode:vscode /workspace
|
|
|
|
USER vscode
|
|
WORKDIR /workspace
|
|
|
|
# Set fish as default shell
|
|
SHELL ["/usr/bin/fish", "-c"]
|
|
|
|
# Install packages directly to system Python (container-isolated)
|
|
ENV UV_PROJECT_ENVIRONMENT=""
|
|
ENV UV_PYTHON=python
|
|
|
|
# Verify everything works
|
|
RUN echo "Python: $(python --version)" && \
|
|
echo "UV: $(uv --version)" && \
|
|
echo "Fish: $(fish --version)"
|