复制失败:stat /var/lib/docker/tmp/docker-builder /server/requirements.txt:无此类文件或目录

问题描述 投票:0回答:1

似乎是某种上下文问题。我试图弄清楚为什么在用Skaffold旋转本地Kubernetes cluser时此方法能很好地工作,但是在推送到Azure时却无法正确地构建映像。

基本结构是:

test-app/
  server/
    requirements.txt
    Dockerfile
azure-pipeline.yml
skaffold.yaml

我的生产server/Dockerfile如下:

FROM python:3.7-slim
ENV PYTHONUNBUFFERED 1
WORKDIR '/app'
EXPOSE 5000
COPY ./server/requirements.txt .
RUN pip install -r requirements.txt
COPY ./server .
CMD ["python", "manage.py", "collectstatic"]
CMD ["gunicorn", "-b", ":5000", "--log-level", "info", "config.wsgi:application"]

我正在使用在Azure DevOps的Pipelines部分中为我生成的azure-pipelines.yml

# Docker
# Build and push an image to Azure Container Registry
# https://docs.microsoft.com/azure/devops/pipelines/languages/docker

trigger:
- master

resources:
- repo: self

variables:
  # Container registry service connection established during pipeline creation
  dockerRegistryServiceConnection: '<connection-string>'
  imageRepository: 'testapp'
  containerRegistry: 'testappcontainers.azurecr.io'
  dockerfilePath: '$(Build.SourcesDirectory)/server/Dockerfile'
  tag: '$(Build.BuildId)'

  # Agent VM image name
  vmImageName: 'ubuntu-latest'

stages:
- stage: Build
  displayName: Build and push stage
  jobs:  
  - job: Build
    displayName: Build
    pool:
      vmImage: $(vmImageName)
    steps:
    - task: Docker@2
      displayName: Build and push an image to container registry
      inputs:
        command: buildAndPush
        repository: $(imageRepository)
        dockerfile: $(dockerfilePath)
        containerRegistry: $(dockerRegistryServiceConnection)
        tags: |
          $(tag)

在自动构建期间,它到达COPY ./server/requirements.txt .并在标题中引发错误。

阅读this question,我尝试了许多没有分辨率的建议解决方案,例如:

COPY ./server/requirements.txt /app
COPY server/requirements.txt /app

此外,我也尝试过:

COPY requirements.txt /app

仍然得到错误。

所以,有点困惑:

  1. 如何解决此问题,使其在管道中正确构建并推送到CRS ...
  2. 如果是上下文问题,为什么在使用Skaffold时本地开发人员不会出现问题

实际上,example project具有类似的项目结构:

pipelines-javascript-docker/
  app/
    Dockerfile

并且运行正常...有些我可能显然忽略了某些东西。

django azure docker azure-devops azure-container-service
1个回答
0
投票

[仔细查看示例项目后,它的结构与我尝试执行的结构相同,我最终复制了其Dockerfile格式。我最终得到了很好的效果:

FROM python:3.7-slim
ENV PYTHONUNBUFFERED 1
WORKDIR /app
EXPOSE 5000
COPY requirements*.txt ./
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "manage.py", "collectstatic"]
CMD ["gunicorn", "-b", ":5000", "--log-level", "info", "config.wsgi:application"]
© www.soinside.com 2019 - 2024. All rights reserved.