无法复制在 github 操作中下载的 docker 文件中的文件

Pyt*_*der 4 python docker github-actions fastapi

我可以看到.pkl使用actions/download-artifact@v3工作目录中的操作下载的内容Dockerfile,如下所示,

在此输入图像描述

当我尝试COPY在 Dockefile 中归档时,出现文件未找到错误。

在此输入图像描述

在构建 docker 镜像之前,如何复制下载的 docker 镜像内的文件(通过 github actions)?

这是github 上关于 docker 支持的文档,但我没有确切地知道如何解决我的问题。任何帮助将非常感激!!

Dockerfile:

name: Docker - GitHub workflow

env:
  CONTAINER_NAME: xxx-xxx

on:
  workflow_dispatch:
  push:
    branches: ["main"]
  pull_request:
    branches: ["main"]


permissions:
  id-token: write
  contents: read

jobs:
  load-artifacts:
    runs-on: ubuntu-latest
    environment: dev
    env:
      output_path: ./xxx/xxx_model.pkl
    
    steps:
      - uses: actions/checkout@v3

      - name: Download PPE model file
        run: |
            az storage blob download --container-name ppe-container --name xxx_model.pkl -f "${{ env.output_path }}"
            
      - name: View output - after
        run: |
          ls -lhR
      
      - name: 'Upload Artifact'
        uses: actions/upload-artifact@v3
        with:
          name: ppe_model
          path: ${{ env.output_path }}

  
  build:
    needs: load-artifacts
    runs-on: ubuntu-latest
    env:
      ACR: xxxx
      
    steps:
      - uses: actions/checkout@v3

      - uses: actions/download-artifact@v3
        id: download
        with:
          name: ppe_model
          # path: ${{ env.model_path }}

      - name: Echo download path
        run: echo ${{steps.download.outputs.download-path}}
      
      - name: View directory files
        run: |
          ls -lhR -a

      - name: Build container image
        uses: docker/build-push-action@v2
        with:
          push: false
          tags: ${{ env.ACR }}.azurecr.io/${{ env.CONTAINER_NAME }}:${{ github.run_number }}
          file: ./Dockerfile
Run Code Online (Sandbox Code Playgroud)

Nic*_*ell 6

在您的工作流程文件中,您没有指定上下文:

      - name: Build container image
        uses: docker/build-push-action@v2
        with:
          push: false
          tags: ${{ env.ACR }}.azurecr.io/${{ env.CONTAINER_NAME }}:${{ github.run_number }}
          file: ./Dockerfile
Run Code Online (Sandbox Code Playgroud)

默认情况下,这意味着docker/build-push-action使用git context。这将重新克隆您的存储库......没有您的模型。

那么,修复方法是指定一个路径 context,如下所示:

      - name: Build container image
        uses: docker/build-push-action@v2
        with:
          context: .
          push: false
          tags: ${{ env.ACR }}.azurecr.io/${{ env.CONTAINER_NAME }}:${{ github.run_number }}
          file: ./Dockerfile
Run Code Online (Sandbox Code Playgroud)