You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

M1芯片Mac中Docker构建长期卡在上下文传输的解决求助

解决Docker构建卡在上下文传输/基础镜像拉取的问题

问题场景

在搭载M1芯片的macOS 13.2系统中,使用Docker 20.10.14(build a224086)执行镜像构建命令时,构建进程长期卡在基础镜像拉取和上下文传输阶段,构建日志如下:

➜ docker build -f ./Dockerfile -t=reddwarf-pro/cha-server:v1.0.0 .
[+] Building 318.6s (4/10)
 => [internal] load build definition from Dockerfile                                                                                           0.0s
 => => transferring dockerfile: 671B                                                                                                           0.0s
 => [internal] load .dockerignore                                                                                                              0.0s
 => => transferring context: 2B                                                                                                                0.0s
 => [internal] load metadata for docker.io/library/python:3.10-alpine3.16                                                                      5.7s
 => [1/6] FROM docker.io/library/python:3.10-alpine3.16@sha256:b2d1f7c5ef2aad57f135104240e91c5327d9c414a58517f1080d55ed6a7a591d              312.8s
 => => resolve docker.io/library/python:3.10-alpine3.16@sha256:b2d1f7c5ef2aad57f135104240e91c5327d9c414a58517f1080d55ed6a7a591d                0.0s
 => => sha256:df0ead61b76e5f4e46838cd42d2a8c682d9ee2f368619d1b5f2dccc683f4ceaa 3.15MB / 12.29MB                                              312.8s
 => => sha256:b2d1f7c5ef2aad57f135104240e91c5327d9c414a58517f1080d55ed6a7a591d 1.65kB / 1.65kB                                                 0.0s
 => => sha256:33733c1204f5f1619290fe3a4d4bbcb28574c7df61ccf0048f46d04c29e0ad21 1.37kB / 1.37kB                                                 0.0s
 => => sha256:fb50eb7b018f767e9df8538552d47a2ddd135622357afeb6f78a2ce0515f429c 6.33kB / 6.33kB                                                 0.0s
 => => sha256:547446be3368f442c50ff95e2a2a9c85110b6b41bbb3c75b7e5ebb115f478b57 2.71MB / 2.71MB                                               227.6s
 => => sha256:fc7cc9366210bf87382129b842210a5f3b868c4400e56cfbae81b0cbaad66492 662.28kB / 662.28kB                                            51.9s
 => => sha256:1205151c85319d9ca7046006cce9419f2516d28daebd1839d5ee1eda18f21f13 240B / 240B                                                    53.3s
 => => sha256:d8f3c223bf9d2d03b40f67b94f7baa7b292e319f8c520f566cb9cbe28056a15e 3.08MB / 3.08MB                                               290.0s
 => => extracting sha256:547446be3368f442c50ff95e2a2a9c85110b6b41bbb3c75b7e5ebb115f478b57                                                      0.1s
 => => extracting sha256:fc7cc9366210bf87382129b842210a5f3b868c4400e56cfbae81b0cbaad66492                                                      0.1s
 => [internal] load build context                                                                                                             21.6s
 => => transferring context: 564.82MB                                                                                                         21.6s

使用的Dockerfile内容:

FROM python:3.10-alpine3.16

LABEL jiangxiaoqiang (xiaoqiang@mail.com)

ENV LANG=en_US.UTF-8 \
    LC_ALL=en_US.UTF-8 \
    TZ=Asia/Shanghai

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
    && echo $TZ > /etc/timezone \
    && mkdir -p /root/chat-server 

# upgrade pip
RUN pip install --upgrade pip && apk add curl

ADD . /root/chat-server/

EXPOSE 8001

RUN pip3 install -r /root/chat-server/requirements.txt
WORKDIR /root/chat-server/
ENTRYPOINT exec python3 -m uvicorn main:app --port 8001 --host 0.0.0.0 --reload

解决方案

1. 优化构建上下文大小

从日志看,构建上下文传输了564.82MB,这会大幅拖慢构建速度。创建或完善.dockerignore文件,排除不需要加入构建上下文的文件:

# Python相关缓存和虚拟环境
__pycache__/
*.pyc
*.pyo
*.pyd
venv/
.venv/

# 版本控制目录
.git/
.gitignore

# IDE配置
.idea/
.vscode/

# 构建产物和临时文件
dist/
build/
*.log
*.tmp
*.bak

# 操作系统文件
.DS_Store

2. 指定适配ARM64的基础镜像

M1是ARM架构,默认拉取的python:3.10-alpine3.16可能是AMD64版本,导致拉取缓慢或兼容性问题。修改Dockerfile的FROM行,指定ARM平台:

FROM --platform=linux/arm64 python:3.10-alpine3.16

3. 配置Docker镜像加速

在Docker Desktop中添加国内镜像源,加速基础镜像拉取:

  • 打开Docker Desktop偏好设置 -> Docker Engine
  • 在配置中添加镜像源,示例:
    {
      "registry-mirrors": [
        "https://hub-mirror.c.163.com",
        "https://mirror.baidubce.com"
      ]
    }
    
  • 应用配置并重启Docker Desktop

4. 缩小构建上下文范围

如果项目目录中有大量无关文件,不要用.作为构建上下文,而是指定必要的目录。比如只传递代码目录和requirements.txt:

docker build -f ./Dockerfile -t=reddwarf-pro/cha-server:v1.0.0 ./src

注意需同步调整Dockerfile中的路径,确保ADD、RUN pip install等命令能正确找到文件。

内容的提问来源于stack exchange,提问作者Dolphin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 15:57:07