Spaces:
Paused
Paused
Update Dockerfile
Browse files- Dockerfile +8 -17
Dockerfile
CHANGED
|
@@ -4,7 +4,7 @@ FROM ubuntu:22.04
|
|
| 4 |
ENV DEBIAN_FRONTEND=noninteractive
|
| 5 |
|
| 6 |
# -----------------------------
|
| 7 |
-
# System
|
| 8 |
# -----------------------------
|
| 9 |
RUN apt-get update \
|
| 10 |
&& apt-get install -y --no-install-recommends \
|
|
@@ -20,13 +20,11 @@ RUN apt-get update \
|
|
| 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} \
|
|
@@ -36,7 +34,6 @@ RUN bash -lc ". ${NVM_DIR}/nvm.sh \
|
|
| 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 |
# -----------------------------
|
|
@@ -45,48 +42,40 @@ ENV PATH=${NVM_DIR}/versions/node/v${NODE_VERSION}/bin:$PATH
|
|
| 45 |
RUN curl -LsSf https://astral.sh/uv/install.sh | sh \
|
| 46 |
&& install -m 0755 /root/.local/bin/uv /usr/local/bin/uv
|
| 47 |
|
| 48 |
-
# Put uv-managed python somewhere world-readable
|
| 49 |
ENV UV_PYTHON_INSTALL_DIR=/opt/uv/python
|
| 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
|
| 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 |
-
#
|
| 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 |
-
#
|
| 90 |
COPY --chown=user . $HOME/app
|
| 91 |
|
| 92 |
# -----------------------------
|
|
@@ -97,5 +86,7 @@ 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"]
|
|
|
|
| 4 |
ENV DEBIAN_FRONTEND=noninteractive
|
| 5 |
|
| 6 |
# -----------------------------
|
| 7 |
+
# System deps
|
| 8 |
# -----------------------------
|
| 9 |
RUN apt-get update \
|
| 10 |
&& apt-get install -y --no-install-recommends \
|
|
|
|
| 20 |
|
| 21 |
# -----------------------------
|
| 22 |
# Node.js (v22.21.1) via nvm
|
|
|
|
| 23 |
# -----------------------------
|
| 24 |
ENV NVM_DIR=/opt/nvm
|
| 25 |
RUN mkdir -p ${NVM_DIR} \
|
| 26 |
&& curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
|
| 27 |
|
|
|
|
| 28 |
ARG NODE_VERSION=22.21.1
|
| 29 |
RUN bash -lc ". ${NVM_DIR}/nvm.sh \
|
| 30 |
&& nvm install ${NODE_VERSION} \
|
|
|
|
| 34 |
&& npm -v \
|
| 35 |
&& npx -v"
|
| 36 |
|
|
|
|
| 37 |
ENV PATH=${NVM_DIR}/versions/node/v${NODE_VERSION}/bin:$PATH
|
| 38 |
|
| 39 |
# -----------------------------
|
|
|
|
| 42 |
RUN curl -LsSf https://astral.sh/uv/install.sh | sh \
|
| 43 |
&& install -m 0755 /root/.local/bin/uv /usr/local/bin/uv
|
| 44 |
|
|
|
|
| 45 |
ENV UV_PYTHON_INSTALL_DIR=/opt/uv/python
|
| 46 |
RUN mkdir -p /opt/uv/python \
|
| 47 |
&& chmod -R 755 /opt/uv
|
| 48 |
|
|
|
|
|
|
|
|
|
|
| 49 |
ARG PYTHON_VERSION=3.12.12
|
| 50 |
RUN uv python install ${PYTHON_VERSION}
|
| 51 |
|
| 52 |
# -----------------------------
|
| 53 |
+
# Clone Opentrons monorepo
|
| 54 |
# -----------------------------
|
| 55 |
ARG OPENTRONS_REF=edge
|
| 56 |
RUN git clone --depth 1 --branch ${OPENTRONS_REF} https://github.com/Opentrons/opentrons.git /root/opentrons
|
| 57 |
|
| 58 |
WORKDIR /root/opentrons
|
|
|
|
|
|
|
| 59 |
RUN uv run --python ${PYTHON_VERSION} make -C robot-server setup
|
| 60 |
|
| 61 |
# -----------------------------
|
| 62 |
+
# App user + deps
|
| 63 |
# -----------------------------
|
| 64 |
RUN useradd -m -u 1000 user
|
| 65 |
USER user
|
| 66 |
|
| 67 |
ENV HOME=/home/user
|
|
|
|
| 68 |
ENV UV_CACHE_DIR=/home/user/.cache/uv
|
| 69 |
|
| 70 |
WORKDIR $HOME/app
|
| 71 |
RUN mkdir -p $UV_CACHE_DIR
|
| 72 |
|
| 73 |
+
# install python deps (fastapi/uvicorn含む)
|
| 74 |
COPY --chown=user requirements.txt $HOME/app/requirements.txt
|
|
|
|
| 75 |
RUN uv venv --python ${PYTHON_VERSION} .venv \
|
| 76 |
&& uv pip install --python .venv/bin/python -r requirements.txt
|
| 77 |
|
| 78 |
+
# copy app code (api.py / entrypoint.sh など)
|
| 79 |
COPY --chown=user . $HOME/app
|
| 80 |
|
| 81 |
# -----------------------------
|
|
|
|
| 86 |
RUN chmod +x /entrypoint.sh
|
| 87 |
|
| 88 |
WORKDIR /root/opentrons
|
| 89 |
+
ENV PORT=7860
|
| 90 |
+
EXPOSE 7860
|
| 91 |
+
|
| 92 |
ENTRYPOINT ["/bin/bash", "-lc", "/entrypoint.sh"]
|
|
|