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

构建rust-backend-image镜像时Postgres.rs出现文件找不到错误

解决Docker构建Rust镜像时include_str!找不到migrations文件的问题
  • 先确认构建上下文和文件复制逻辑:

    • 必须在项目根目录执行docker build -t rust-backend-image .,如果误在src目录下运行命令,Docker构建上下文里没有migrations文件夹,编译时自然找不到文件。
    • 打开Dockerfile检查COPY指令,确保migrations目录被复制到容器工作目录中。比如需要添加:
      COPY migrations/ migrations/
      
      保证它和src/、Cargo.toml等文件处于容器内的同一层级。
  • 验证容器内的文件结构(可选调试步骤):
    在Dockerfile的RUN cargo build指令前添加临时命令,查看容器内的文件布局:

    RUN ls -la  # 若WORKDIR是/app,此命令会列出/app下的所有文件,确认migrations存在
    

    运行构建命令后就能看到容器内的文件情况,排查路径是否正确。

  • 不要随意修改include_str!的路径:
    你本地终端能通过相对路径找到文件,说明代码里的../migrations/xxx.sql写法是对的。Docker容器内的工作目录如果和项目根目录对应(比如WORKDIR设为/app,复制后/app下有src和migrations),这个路径在容器内同样有效,改了反而会出错。

  • 清理构建缓存重试:
    旧的Docker构建缓存可能残留错误的文件结构,执行以下命令强制重新构建:

    docker build --no-cache -t rust-backend-image .
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 07:52:14