Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

cloud build not able to find the DockerFile

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
like image 752
mornindew Avatar asked Oct 26 '25 18:10

mornindew


1 Answers

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]

The issue was that my cloudbuild.yaml assumed the working directory would be the same dir that contains the cloudbuild.yaml and Dockerfile.

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>']
like image 83
derekbaker783 Avatar answered Oct 28 '25 13:10

derekbaker783