guohanghui commited on
Commit
b5df2c7
·
verified ·
1 Parent(s): 3337e6d

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +52 -14
Dockerfile CHANGED
@@ -1,32 +1,70 @@
1
  FROM python:3.10
2
 
3
- # 基础依赖
4
  RUN apt-get update && apt-get install -y \
5
  git \
6
- && rm -rf /var/lib/apt/lists/* && \
7
- python -m pip install --upgrade pip
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
 
9
  # 创建非 root 用户
10
  RUN useradd -m -u 1000 user
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  USER user
12
  ENV PATH="/home/user/.local/bin:$PATH"
13
 
14
  WORKDIR /app
15
 
16
- # 复制并安装依赖
17
  COPY --chown=user ./requirements.txt requirements.txt
18
-
19
- # 先从 PyPI 安装 medpy(可能有预编译的 wheel)
20
- RUN pip install --no-cache-dir medpy
21
-
22
- # 再安装其他依赖
23
  RUN pip install --no-cache-dir --upgrade -r requirements.txt
24
 
25
- # 复制代码(但不用 medpy/source,使用已安装的)
26
- COPY --chown=user . /app
27
-
28
- # 不设置 PYTHONPATH 到 source,使用系统安装的 medpy
29
- # ENV PYTHONPATH=/app/medpy/source:$PYTHONPATH
30
 
31
  # 端口与环境变量
32
  EXPOSE 7860
 
1
  FROM python:3.10
2
 
3
+ # 安装完整的构建依赖
4
  RUN apt-get update && apt-get install -y \
5
  git \
6
+ build-essential \
7
+ cmake \
8
+ g++ \
9
+ gcc \
10
+ libboost-all-dev \
11
+ libboost-python-dev \
12
+ python3-dev \
13
+ && rm -rf /var/lib/apt/lists/*
14
+
15
+ # 升级 pip 和构建工具
16
+ RUN python -m pip install --upgrade pip setuptools wheel
17
+
18
+ # 安装编译依赖
19
+ RUN pip install --no-cache-dir Cython numpy scipy
20
+
21
+ # 创建符号链接以修复 boost_python 库名称问题(Python 3.10)
22
+ # 这是关键修复!
23
+ RUN ln -s /usr/lib/x86_64-linux-gnu/libboost_python3.so /usr/lib/x86_64-linux-gnu/libboost_python-py310.so || true
24
+ RUN ln -s /usr/lib/x86_64-linux-gnu/libboost_python310.so /usr/lib/x86_64-linux-gnu/libboost_python-py310.so || true
25
 
26
  # 创建非 root 用户
27
  RUN useradd -m -u 1000 user
28
+
29
+ WORKDIR /app
30
+
31
+ # 复制代码
32
+ COPY --chown=user . /app
33
+
34
+ # 以 root 身份编译 medpy(需要权限)
35
+ USER root
36
+ WORKDIR /app/medpy/source
37
+
38
+ # 强制重新编译
39
+ RUN rm -rf build/ dist/ *.egg-info medpy/graphcut/*.so
40
+
41
+ # 详细编译日志
42
+ RUN python setup.py build_ext --inplace --force 2>&1 | tee /tmp/medpy_build.log
43
+
44
+ # 验证编译结果
45
+ RUN if python -c "from medpy.graphcut.maxflow import GraphDouble; print('✓ maxflow SUCCESS')" 2>&1; then \
46
+ echo "=== maxflow compiled successfully ==="; \
47
+ else \
48
+ echo "=== maxflow compilation failed, showing build log ==="; \
49
+ cat /tmp/medpy_build.log; \
50
+ exit 1; \
51
+ fi
52
+
53
+ # 安装编译好的 medpy
54
+ RUN pip install -e .
55
+
56
+ # 切换回用户
57
  USER user
58
  ENV PATH="/home/user/.local/bin:$PATH"
59
 
60
  WORKDIR /app
61
 
62
+ # 安装其他依赖
63
  COPY --chown=user ./requirements.txt requirements.txt
 
 
 
 
 
64
  RUN pip install --no-cache-dir --upgrade -r requirements.txt
65
 
66
+ # 设置 Python 路径
67
+ ENV PYTHONPATH=/app/medpy/source:$PYTHONPATH
 
 
 
68
 
69
  # 端口与环境变量
70
  EXPOSE 7860