Spaces:
Running
Running
File size: 3,779 Bytes
b0512cf e520895 b0512cf bf5aec6 b0512cf e520895 e1b2bfb 2b16ade e1b2bfb b0512cf e520895 bf5aec6 2b16ade ecb3d7d 2b16ade e520895 2b16ade b0512cf e520895 bf5aec6 2b16ade e520895 e1b2bfb e520895 e1b2bfb e520895 e1b2bfb e520895 e1b2bfb e520895 2b16ade b0512cf bf5aec6 c3bd350 2b16ade e1b2bfb e520895 ecb3d7d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | FROM python:3.11-slim-bookworm
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Etc/UTC
ENV PORT=7860
ENV HOME=/home/coder
ENV PIP_DISABLE_PIP_VERSION_CHECK=1
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
ARG CODE_SERVER_VERSION=4.109.2
ARG KOTLIN_VERSION=1.9.25
ARG ANDROID_CMDLINE_TOOLS_VERSION=11076708
ARG ANDROID_PLATFORM=34
ARG ANDROID_BUILD_TOOLS=34.0.0
ENV KOTLIN_HOME=/opt/kotlin
ENV ANDROID_SDK_ROOT=/opt/android-sdk
ENV ANDROID_HOME=/opt/android-sdk
ENV PATH="${PATH}:${KOTLIN_HOME}/bin:${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin:${ANDROID_SDK_ROOT}/platform-tools"
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates curl git bash sudo tini jq procps unzip \
# C/C++ toolchain + headers
build-essential gcc g++ make cmake ninja-build gdb clang clangd \
libc6-dev linux-libc-dev pkg-config \
# Java + Node
openjdk-17-jdk-headless maven \
nodejs npm \
# Databases
default-mysql-server default-mysql-client \
postgresql postgresql-client \
redis-server redis-tools \
# Rust + Go
rustc cargo rustfmt \
golang-go \
&& rm -rf /var/lib/apt/lists/*
# Install code-server (pinned version)
RUN curl -fsSL "https://github.com/coder/code-server/releases/download/v${CODE_SERVER_VERSION}/code-server_${CODE_SERVER_VERSION}_amd64.deb" -o /tmp/code-server.deb \
&& dpkg -i /tmp/code-server.deb \
&& rm -f /tmp/code-server.deb
# Kotlin compiler
RUN curl -fsSL "https://github.com/JetBrains/kotlin/releases/download/v${KOTLIN_VERSION}/kotlin-compiler-${KOTLIN_VERSION}.zip" -o /tmp/kotlin.zip \
&& unzip -q /tmp/kotlin.zip -d /opt \
&& mv /opt/kotlinc "${KOTLIN_HOME}" \
&& ln -s "${KOTLIN_HOME}/bin/kotlin" /usr/local/bin/kotlin \
&& ln -s "${KOTLIN_HOME}/bin/kotlinc" /usr/local/bin/kotlinc \
&& rm -f /tmp/kotlin.zip
# Android SDK command-line tools + common packages
RUN mkdir -p "${ANDROID_SDK_ROOT}/cmdline-tools" \
&& curl -fsSL "https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_CMDLINE_TOOLS_VERSION}_latest.zip" -o /tmp/android-tools.zip \
&& unzip -q /tmp/android-tools.zip -d "${ANDROID_SDK_ROOT}/cmdline-tools" \
&& mv "${ANDROID_SDK_ROOT}/cmdline-tools/cmdline-tools" "${ANDROID_SDK_ROOT}/cmdline-tools/latest" \
&& rm -f /tmp/android-tools.zip \
&& yes | "${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager" --sdk_root="${ANDROID_SDK_ROOT}" --licenses \
&& "${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager" --sdk_root="${ANDROID_SDK_ROOT}" \
"platform-tools" "platforms;android-${ANDROID_PLATFORM}" "build-tools;${ANDROID_BUILD_TOOLS}"
# Python core deps
RUN pip install --no-cache-dir --upgrade pip setuptools wheel && \
pip install --no-cache-dir \
numpy pandas scipy scikit-learn matplotlib \
jupyterlab ipykernel notebook \
requests httpx aiohttp pyyaml python-dotenv tqdm rich \
fastapi uvicorn[standard] pydantic flask \
sqlalchemy alembic psycopg2-binary redis \
pytest black isort ruff mypy
# Codex CLI
RUN npm install -g @openai/codex && npm cache clean --force
# Create user
RUN useradd -m -u 1000 -s /bin/bash coder \
&& echo "coder ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers \
&& mkdir -p /home/coder/.config/code-server /home/coder/.codex \
&& chown -R coder:coder /home/coder /opt/kotlin /opt/android-sdk
# Quick C build check (build-time)
RUN printf '#include <stdio.h>\nint main(){puts("ok");return 0;}\n' > /tmp/t.c \
&& gcc /tmp/t.c -o /tmp/t \
&& /tmp/t | grep -q ok \
&& rm -f /tmp/t.c /tmp/t
COPY --chown=coder:coder start.sh /usr/local/bin/start.sh
RUN chmod +x /usr/local/bin/start.sh
USER coder
WORKDIR /home/coder
EXPOSE 7860
ENTRYPOINT ["/usr/bin/tini", "--"]
CMD ["/usr/local/bin/start.sh"]
|