| FROM ubuntu:22.04 |
|
|
| ENV DEBIAN_FRONTEND=noninteractive |
| ENV XDG_DATA_HOME=/data |
| ENV OPENCODE_DATA_DIR=/data |
|
|
| RUN apt-get update && apt-get install -y --no-install-recommends \ |
| curl \ |
| ca-certificates \ |
| git \ |
| python3 \ |
| python3-pip \ |
| && rm -rf /var/lib/apt/lists/* |
|
|
| RUN pip3 install --no-cache-dir huggingface_hub |
|
|
| RUN useradd -m -u 1000 -s /bin/bash user && \ |
| mkdir -p /data && chown -R user:user /data |
|
|
| USER user |
| WORKDIR /home/user |
|
|
| |
| RUN ARCH=$(uname -m) && \ |
| if [ "$ARCH" = "x86_64" ]; then ARCH="x64"; elif [ "$ARCH" = "aarch64" ]; then ARCH="arm64"; fi && \ |
| OS=$(uname -s | tr '[:upper:]' '[:lower:]') && \ |
| FILENAME="opencode-${OS}-${ARCH}.tar.gz" && \ |
| URL="https://github.com/anomalyco/opencode/releases/latest/download/${FILENAME}" && \ |
| curl --retry 3 --retry-delay 2 --max-time 60 -fsSL -o /tmp/opencode.tar.gz "${URL}" && \ |
| tar -xzf /tmp/opencode.tar.gz -C /tmp && \ |
| mkdir -p /home/user/.opencode/bin && \ |
| mv /tmp/opencode /home/user/.opencode/bin/ && \ |
| chmod +x /home/user/.opencode/bin/opencode && \ |
| rm /tmp/opencode.tar.gz |
|
|
| ENV PATH="/home/user/.opencode/bin:${PATH}" |
|
|
| COPY --chown=user sync_to_dataset.py /home/user/sync_to_dataset.py |
| COPY --chown=user entrypoint.sh /home/user/entrypoint.sh |
|
|
| RUN chmod +x /home/user/sync_to_dataset.py /home/user/entrypoint.sh |
|
|
| EXPOSE 7860 |
|
|
| CMD ["/home/user/entrypoint.sh"] |