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

Dockerfile复制src文件夹失败,构建时ls命令提示目录为空

问题分析与解决

你的Docker构建报错核心是两个问题:

  • 命令顺序颠倒:你在还没复制本地src文件夹到镜像里的时候,就执行了RUN ls -al ./src/,此时镜像里要么没有src目录,要么是空的,必然报错。
  • COPY路径配置错误:原Dockerfile里的COPY ./src/ .会把本地src文件夹内的所有文件直接复制到镜像的/app根目录下,而不是在镜像中创建/app/src目录,这也会导致你后续查看./src/目录时找不到内容。

修正后的Dockerfile

FROM docker-repo.frontiir.net/container-images/py38-poetry:1.3-slim-bullseye

ENV APP_WORKDIR=/app 

WORKDIR ${APP_WORKDIR}

COPY pyproject.toml poetry.lock ./

RUN poetry config virtualenvs.create false \
    && poetry install --quiet --no-root --only=main --no-interaction --no-ansi --no-cache

# 先把本地src文件夹完整复制到镜像的/app/src目录
COPY ./src/ ./src/

# 现在可以正常查看src目录内容
RUN ls -al ./src/

RUN poetry install --only-root --no-interaction --no-ansi --no-cache

CMD ["example", "--version"]

关键调整说明

  1. 调整COPY命令位置:把复制src的操作放到RUN ls之前,确保镜像里已经有了src目录和内容后再执行查看命令。
  2. 修正COPY目标路径:用COPY ./src/ ./src/替代原来的COPY ./src/ .,这样会在镜像的/app目录下创建src子目录,和本地的目录结构保持一致,后续查看./src/就能看到内容。
  3. 如果你的实际需求是把src里的文件直接放到/app根目录下(不需要保留src子目录),可以保留COPY ./src/ .,但要把它移到RUN ls之前,同时把RUN ls -al ./src/改成RUN ls -al ./来验证文件是否复制成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:44:54