baxin commited on
Commit
fb2899e
·
verified ·
1 Parent(s): 7131310

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +8 -17
Dockerfile CHANGED
@@ -4,7 +4,7 @@ FROM ubuntu:22.04
4
  ENV DEBIAN_FRONTEND=noninteractive
5
 
6
  # -----------------------------
7
- # System dependencies
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 (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
  # -----------------------------
@@ -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"]