我有一個 github 作業流,它正在構建 docker 映像、使用 requirements.txt 安裝依賴項并推送到 AWS ECR。當我在本地檢查時一切正常,但是當 github 作業流運行時,它無法訪問 requirements.txt 檔案并顯示以下錯誤
ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt'
下面是我的簡單dockerfile
FROM amazon/aws-lambda-python:3.9
COPY . ${LAMBDA_TASK_ROOT}
RUN pip3 install scipy
RUN pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}"
CMD [ "api.handler" ]
這是 cicd yaml 檔案。
name: Deploy to ECR
on:
push:
branches: [ metrics_handling ]
jobs:
build:
name: Build Image
runs-on: ubuntu-latest
steps:
- name: Check Out Code
uses: actions/checkout@v2
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.REGION }}
- name: Build, Tag, and Push image to Amazon ECR
id: tag
run: |
aws ecr get-login-password --region ${region} | docker login --username AWS --password-stdin ${accountid}.dkr.ecr.${region}.amazonaws.com
docker rmi --force ${accountid}.dkr.ecr.${region}.amazonaws.com/${ecr_repository}:latest
docker build --tag ${accountid}.dkr.ecr.${region}.amazonaws.com/${ecr_repository}:latest -f API/Dockerfile . --no-cache
docker push ${accountid}.dkr.ecr.${region}.amazonaws.com/${ecr_repository}:latest
env:
accountid: ${{ secrets.ACCOUNTID}}
region: ${{ secrets.REGION }}
ecr_repository: ${{ secrets.ECR_REPOSITORY }}
下面是我的目錄結構。requirements.txt 檔案位于 API 目錄中,其中包含構建和運行映像所需的所有相關代碼。

uj5u.com熱心網友回復:
根據問題的評論,Python requirements.txt檔案位于 API 目錄中。此命令使用 API 目錄中的路徑指定 Dockerfile,但在當前目錄中構建容器。
docker build --tag ${accountid}.dkr.ecr.${region}.amazonaws.com/${ecr_repository}:latest -f API/Dockerfile . --no-cache
正確的做法是在API 目錄下構建容器:
docker build --tag ${accountid}.dkr.ecr.${region}.amazonaws.com/${ecr_repository}:latest API --no-cache
注意從 的變化。到API并洗掉 Dockerfile 位置-f API/Dockerfile
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/410678.html
標籤:
上一篇:有沒有辦法在一個Heroku應用程式中部署兩個容器?
下一篇:DockerCMD退出0
