You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Drone.io CI流水线步骤间文件共享失败,Docker构建报错求助

解决Drone CI流水线中步骤间文件共享的问题

你遇到的核心问题是Drone CI的各个流水线步骤默认运行在独立的Docker容器中,容器间的文件系统是完全隔离的——test步骤生成的build文件夹只存在于它自己的容器环境里,publish步骤的容器根本访问不到这个目录,所以Docker构建时才会报找不到文件的错误。

下面是具体的解决方案:

1. 配置共享工作区(Workspace)

Drone提供了workspace配置项,让你可以指定一个所有步骤共用的目录,这样步骤间生成的文件就能被互相访问到。修改你的.drone.yml,添加共享工作区配置:

workspace:
  path: /app

pipeline:
  test:
    image: node:10
    commands:
      - npm install --production
      - npm run build --production
    # 该步骤会在共享的/app目录下执行,build文件夹将生成在/app/build路径

  publish:
    image: plugins/docker
    repo: myhub/image_name
    context: /app  # 指定Docker构建的上下文为共享工作区
    when:
      event: push
      branch: master

2. 确认Dockerfile的位置与COPY路径

请确保你的Dockerfile放在项目根目录下(也就是共享工作区/app内),这样plugins/docker插件构建时,会以/app为上下文目录,此时Dockerfile里的COPY build build就能找到/app/build目录了。

如果你的Dockerfile不在根目录,需要在publish步骤中用dockerfile参数指定具体路径:

publish:
  image: plugins/docker
  repo: myhub/image_name
  context: /app
  dockerfile: /app/your/path/Dockerfile
  when:
    event: push
    branch: master

验证逻辑

修改后,test步骤会在共享的/app目录下执行构建,生成的build文件夹会保留在共享工作区中;publish步骤的docker插件以/app为构建上下文,此时Docker构建就能正常访问到build文件夹,COPY命令也就不会报错了。

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

火山引擎 最新活动