Spaces:
Paused
Paused
File size: 2,351 Bytes
14a7de5 a6561fb 8f22300 a20ad5f 6751543 14a7de5 fb2899e 14a7de5 a20ad5f a6561fb a20ad5f 51a9c73 a6561fb a20ad5f bee3f8a 14a7de5 df7d9dd 8b3e169 df7d9dd bee3f8a 98ecc08 a20ad5f 2efee4c 14a7de5 fb2899e 14a7de5 e8eeb0f df7d9dd 51a9c73 a20ad5f 16a9021 14a7de5 fb2899e 14a7de5 4afed9d 30ea8d8 8b3e169 df7d9dd 8b3e169 30ea8d8 8b3e169 fb2899e a20ad5f fb2899e 30ea8d8 ac3964b 14a7de5 a20ad5f 5231d74 a20ad5f 2694bf1 fb2899e 14a7de5 |
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 |
# syntax=docker/dockerfile:1
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
# -----------------------------
# System deps
# -----------------------------
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
build-essential \
git \
make \
curl \
ca-certificates \
pkg-config \
libudev-dev \
libsystemd-dev \
&& rm -rf /var/lib/apt/lists/*
# -----------------------------
# Node.js (v22.21.1) via nvm
# -----------------------------
ENV NVM_DIR=/opt/nvm
RUN mkdir -p ${NVM_DIR} \
&& curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
ARG NODE_VERSION=22.21.1
RUN bash -lc ". ${NVM_DIR}/nvm.sh \
&& nvm install ${NODE_VERSION} \
&& nvm alias default ${NODE_VERSION} \
&& nvm use default \
&& node -v \
&& npm -v \
&& npx -v"
ENV PATH=${NVM_DIR}/versions/node/v${NODE_VERSION}/bin:$PATH
# -----------------------------
# uv (system-wide)
# -----------------------------
RUN curl -LsSf https://astral.sh/uv/install.sh | sh \
&& install -m 0755 /root/.local/bin/uv /usr/local/bin/uv
ENV UV_PYTHON_INSTALL_DIR=/opt/uv/python
RUN mkdir -p /opt/uv/python \
&& chmod -R 755 /opt/uv
ARG PYTHON_VERSION=3.12.12
RUN uv python install ${PYTHON_VERSION}
# -----------------------------
# Clone Opentrons monorepo
# -----------------------------
ARG OPENTRONS_REF=edge
RUN git clone --depth 1 --branch ${OPENTRONS_REF} https://github.com/Opentrons/opentrons.git /root/opentrons
WORKDIR /root/opentrons
RUN uv run --python ${PYTHON_VERSION} make -C robot-server setup
# -----------------------------
# App user + deps
# -----------------------------
RUN useradd -m -u 1000 user
USER user
ENV HOME=/home/user
ENV UV_CACHE_DIR=/home/user/.cache/uv
WORKDIR $HOME/app
RUN mkdir -p $UV_CACHE_DIR
# install python deps (fastapi/uvicorn含む)
COPY --chown=user requirements.txt $HOME/app/requirements.txt
RUN uv venv --python ${PYTHON_VERSION} .venv \
&& uv pip install --python .venv/bin/python -r requirements.txt
# copy app code (api.py / entrypoint.sh など)
COPY --chown=user . $HOME/app
# -----------------------------
# Entrypoint
# -----------------------------
USER root
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
WORKDIR /root/opentrons
ENV PORT=7860
EXPOSE 7860
ENTRYPOINT ["/bin/bash", "-lc", "/entrypoint.sh"]
|