Spaces:
Paused
Paused
Update Dockerfile
Browse files- Dockerfile +46 -7
Dockerfile
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
|
|
| 1 |
FROM ubuntu:22.04
|
| 2 |
|
| 3 |
ENV DEBIAN_FRONTEND=noninteractive
|
| 4 |
|
|
|
|
|
|
|
|
|
|
| 5 |
RUN apt-get update \
|
| 6 |
&& apt-get install -y --no-install-recommends \
|
| 7 |
build-essential \
|
|
@@ -14,7 +18,30 @@ RUN apt-get update \
|
|
| 14 |
libsystemd-dev \
|
| 15 |
&& rm -rf /var/lib/apt/lists/*
|
| 16 |
|
| 17 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18 |
RUN curl -LsSf https://astral.sh/uv/install.sh | sh \
|
| 19 |
&& install -m 0755 /root/.local/bin/uv /usr/local/bin/uv
|
| 20 |
|
|
@@ -23,40 +50,52 @@ ENV UV_PYTHON_INSTALL_DIR=/opt/uv/python
|
|
| 23 |
RUN mkdir -p /opt/uv/python \
|
| 24 |
&& chmod -R 755 /opt/uv
|
| 25 |
|
|
|
|
|
|
|
|
|
|
| 26 |
ARG PYTHON_VERSION=3.12.12
|
| 27 |
RUN uv python install ${PYTHON_VERSION}
|
| 28 |
|
| 29 |
-
#
|
|
|
|
|
|
|
| 30 |
ARG OPENTRONS_REF=edge
|
| 31 |
RUN git clone --depth 1 --branch ${OPENTRONS_REF} https://github.com/Opentrons/opentrons.git /root/opentrons
|
| 32 |
|
| 33 |
WORKDIR /root/opentrons
|
|
|
|
|
|
|
| 34 |
RUN uv run --python ${PYTHON_VERSION} make -C robot-server setup
|
| 35 |
|
| 36 |
-
#
|
|
|
|
|
|
|
| 37 |
RUN useradd -m -u 1000 user
|
| 38 |
USER user
|
| 39 |
|
| 40 |
ENV HOME=/home/user
|
| 41 |
-
#
|
| 42 |
ENV UV_CACHE_DIR=/home/user/.cache/uv
|
| 43 |
|
| 44 |
WORKDIR $HOME/app
|
| 45 |
-
|
| 46 |
RUN mkdir -p $UV_CACHE_DIR
|
| 47 |
|
|
|
|
| 48 |
COPY --chown=user requirements.txt $HOME/app/requirements.txt
|
| 49 |
|
| 50 |
RUN uv venv --python ${PYTHON_VERSION} .venv \
|
| 51 |
&& uv pip install --python .venv/bin/python -r requirements.txt
|
| 52 |
|
|
|
|
| 53 |
COPY --chown=user . $HOME/app
|
| 54 |
|
| 55 |
-
#
|
|
|
|
|
|
|
| 56 |
USER root
|
| 57 |
COPY entrypoint.sh /entrypoint.sh
|
| 58 |
RUN chmod +x /entrypoint.sh
|
| 59 |
|
| 60 |
WORKDIR /root/opentrons
|
| 61 |
-
ENTRYPOINT ["/bin/bash", "-lc", "
|
| 62 |
CMD ["bash"]
|
|
|
|
| 1 |
+
# syntax=docker/dockerfile:1
|
| 2 |
FROM ubuntu:22.04
|
| 3 |
|
| 4 |
ENV DEBIAN_FRONTEND=noninteractive
|
| 5 |
|
| 6 |
+
# -----------------------------
|
| 7 |
+
# System dependencies
|
| 8 |
+
# -----------------------------
|
| 9 |
RUN apt-get update \
|
| 10 |
&& apt-get install -y --no-install-recommends \
|
| 11 |
build-essential \
|
|
|
|
| 18 |
libsystemd-dev \
|
| 19 |
&& rm -rf /var/lib/apt/lists/*
|
| 20 |
|
| 21 |
+
# -----------------------------
|
| 22 |
+
# Node.js (v22.21.1) via nvm
|
| 23 |
+
# - npx needed by `make -C robot-server dev`
|
| 24 |
+
# -----------------------------
|
| 25 |
+
ENV NVM_DIR=/opt/nvm
|
| 26 |
+
RUN mkdir -p ${NVM_DIR} \
|
| 27 |
+
&& curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
|
| 28 |
+
|
| 29 |
+
# Install & activate Node 22.21.1 (system-wide usable via PATH)
|
| 30 |
+
ARG NODE_VERSION=22.21.1
|
| 31 |
+
RUN bash -lc ". ${NVM_DIR}/nvm.sh \
|
| 32 |
+
&& nvm install ${NODE_VERSION} \
|
| 33 |
+
&& nvm alias default ${NODE_VERSION} \
|
| 34 |
+
&& nvm use default \
|
| 35 |
+
&& node -v \
|
| 36 |
+
&& npm -v \
|
| 37 |
+
&& npx -v"
|
| 38 |
+
|
| 39 |
+
# Make node/npm/npx available in non-interactive shells too
|
| 40 |
+
ENV PATH=${NVM_DIR}/versions/node/v${NODE_VERSION}/bin:$PATH
|
| 41 |
+
|
| 42 |
+
# -----------------------------
|
| 43 |
+
# uv (system-wide)
|
| 44 |
+
# -----------------------------
|
| 45 |
RUN curl -LsSf https://astral.sh/uv/install.sh | sh \
|
| 46 |
&& install -m 0755 /root/.local/bin/uv /usr/local/bin/uv
|
| 47 |
|
|
|
|
| 50 |
RUN mkdir -p /opt/uv/python \
|
| 51 |
&& chmod -R 755 /opt/uv
|
| 52 |
|
| 53 |
+
# -----------------------------
|
| 54 |
+
# Python via uv
|
| 55 |
+
# -----------------------------
|
| 56 |
ARG PYTHON_VERSION=3.12.12
|
| 57 |
RUN uv python install ${PYTHON_VERSION}
|
| 58 |
|
| 59 |
+
# -----------------------------
|
| 60 |
+
# Clone Opentrons monorepo (default branch is edge)
|
| 61 |
+
# -----------------------------
|
| 62 |
ARG OPENTRONS_REF=edge
|
| 63 |
RUN git clone --depth 1 --branch ${OPENTRONS_REF} https://github.com/Opentrons/opentrons.git /root/opentrons
|
| 64 |
|
| 65 |
WORKDIR /root/opentrons
|
| 66 |
+
|
| 67 |
+
# robot-server setup using uv-managed python
|
| 68 |
RUN uv run --python ${PYTHON_VERSION} make -C robot-server setup
|
| 69 |
|
| 70 |
+
# -----------------------------
|
| 71 |
+
# App user
|
| 72 |
+
# -----------------------------
|
| 73 |
RUN useradd -m -u 1000 user
|
| 74 |
USER user
|
| 75 |
|
| 76 |
ENV HOME=/home/user
|
| 77 |
+
# Put uv cache in a writable location for non-root user
|
| 78 |
ENV UV_CACHE_DIR=/home/user/.cache/uv
|
| 79 |
|
| 80 |
WORKDIR $HOME/app
|
|
|
|
| 81 |
RUN mkdir -p $UV_CACHE_DIR
|
| 82 |
|
| 83 |
+
# Cache-friendly install of Python deps for your app
|
| 84 |
COPY --chown=user requirements.txt $HOME/app/requirements.txt
|
| 85 |
|
| 86 |
RUN uv venv --python ${PYTHON_VERSION} .venv \
|
| 87 |
&& uv pip install --python .venv/bin/python -r requirements.txt
|
| 88 |
|
| 89 |
+
# Copy the rest of your app
|
| 90 |
COPY --chown=user . $HOME/app
|
| 91 |
|
| 92 |
+
# -----------------------------
|
| 93 |
+
# Entrypoint
|
| 94 |
+
# -----------------------------
|
| 95 |
USER root
|
| 96 |
COPY entrypoint.sh /entrypoint.sh
|
| 97 |
RUN chmod +x /entrypoint.sh
|
| 98 |
|
| 99 |
WORKDIR /root/opentrons
|
| 100 |
+
ENTRYPOINT ["/bin/bash", "-lc", "/entrypoint.sh"]
|
| 101 |
CMD ["bash"]
|