baxin commited on
Commit
14a7de5
·
verified ·
1 Parent(s): a0358a8

Update Dockerfile

Browse files
Files changed (1) hide show
  1. 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
- # ---- install uv (system-wide) ----
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
- # ---- clone Opentrons repo ----
 
 
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
- # ---- app user ----
 
 
37
  RUN useradd -m -u 1000 user
38
  USER user
39
 
40
  ENV HOME=/home/user
41
- # cache goes to a writable location
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
- # ---- entrypoint ----
 
 
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", "source /entrypoint.sh && exec \"$@\""]
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"]