I am attempting to use google cloud build triggers build my docker containers. Unfortunately the build is not finding my docker file. It isn't at the root of my repository but I thought that I could specify a relative path. Clearly I misconfigured something. Below is my cloudbuild.yaml and the output logs.
And if it matters - my code is in github but I configured the trigger to pull from that repo.
steps:
- name: 'gcr.io/cloud-builders/docker'
  args:
  - 'build'
  - '--tag=gcr.io/$PROJECT_ID/domain-session-test:$TAG_NAME'
  - '--file=session_server/deployments/DockerFiles/minimal.Dockerfile'
  - '.'
- name: 'gcr.io/cloud-builders/docker'
  args: ['run', 'gcr.io/$PROJECT_ID/domain-session-test:$TAG_NAME', 'go', 'test']
- name: 'gcr.io/cloud-builders/gsutil'
  args: ['cp', '-r', 'k8s/*', 'gs://$PROJECT_ID-kubernetes-manifests']
images: ['gcr.io/$PROJECT_ID/domain-session-test:$TAG_NAME']
Logs:
starting build "1c4ee154-2c29-4e81-b884-d64c54841d71"    
    FETCHSOURCE
    Initialized empty Git repository in /workspace/.git/
    From https://source.developers.google.com/p/MYURL
    * branch c2d8260a49d9972d1b0882c1676184be35b4c33c -> FETCH_HEAD
    HEAD is now at c2d8260 triggering a build
    BUILD
    Starting Step #0
    Step #0: Already have image (with digest): gcr.io/cloud-builders/docker
    Step #0: unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /workspace/Dockerfile: no such file or directory
    Finished Step #0
    ERROR
    ERROR: build step 0 "gcr.io/cloud-builders/docker" failed: exit status 1
I ran into something similar when using a . for the Docker context.
I was getting this error...
unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /workspace/Dockerfile: no such file or directory
...when using a cloudbuild.yaml similar to this:
steps:
# Build the container image
- name: 'gcr.io/cloud-builders/docker'
  args: ['build', '-t', 'gcr.io/[PROJECT_ID]/[IMAGE]', '.']
# Push the image to Container Registry
- name: 'gcr.io/cloud-builders/docker'
  args: ['push', 'gcr.io/[PROJECT_ID]/[IMAGE]']
# Deploy image to Cloud Run
- name: 'gcr.io/cloud-builders/gcloud'
  args:
  - 'run'
  - 'deploy'
  - '[SERVICE_NAME]'
  - '--image'
  - 'gcr.io/[PROJECT_ID]/[IMAGE]'
  - '--region'
  - '[REGION]'
  - '--platform'
  - 'managed'
images:
- gcr.io/[PROJECT_ID]/[IMAGE]
While my Cloud Build Trigger definition knew where to find the cloudbuild.yaml file, it apparently executes that with a working dir that is in the root of the repo, and the root of the repo doesn't contain the Dockerfile.
If I use a build step similar to the one below, the issue is resolved.
# Build the container image
- name: 'gcr.io/cloud-builders/docker'
  args: ['build', '-t', 'gcr.io/[PROJECT_ID]/[IMAGE]', '<DIR_CONTAINING_DOCKERFILE>']
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With