(question moved from the Bitbucket section)
We have a simple app we're trying to build in much the same vein as this article:
We have everything the app needs except the repo on a private image in GCR. We've set up a pipelines yml as close to the example as we can get, but when it gets to the docker build portion, it throws this error:
unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /opt/atlassian/pipelines/agent/build/Dockerfile: no such file or directory
What we want to happen here is for Pipelines to take our base image (image A), clone the repo into a folder on that image, and then push the resulting image back up as a production-ready image (image B, which is just image A with our repo in it)
I'd like to confirm my understanding of how this would occur:
- the Pipelines Docker build environment is pulling our image and (as the build setup process) creating a container from that image and cloning the repo into that container in $BITBUCKET_CLONE_DIR
- the build environment (not our container) is then building (or committing?) the container that now has our repo and pushing it up
options: docker: true
image: name: us.gcr.io/our-project/ourImage:buildTag
username: _json_key
password: '$GCLOUD_API_KEY'
pipelines:
branches:
Production:
- step:
name: Build Production Image
deployment: production
caches: - docker
script:
- docker build -t us.gcr.io/$GCLOUD_PROJECT/$IMAGE_NAME:$IMAGE_TAG .
- docker push us.gcr.io/$GCLOUD_PROJECT/$IMAGE_NAME:$IMAGE_TAG
I think what I'm confused about is the Dockerfile: am I meant to supply a Dockerfile in that path on my image? Or is docker build not even what I'm after here since I just want to commit the environment as I have it?
Thanks for your help!
Hi Samuel,
What is the location of your Dockerfile? The error is indicating that Docker can't find a Dockerfile in the current directory.
If you need to specific the path of the Dockerfile, you can use the `-f` flag
docker build -f <path_to_docker_file> -t us.gcr.io/$GCLOUD_PROJECT/$IMAGE_NAME:$IMAGE_TAG .
Thanks,
Phil
Hi Phil,
I know that I can supply a Dockerfile, but the example (in the link in my post) didn't reference doing that -- I figured out from the error that I could just add the folder /opt/atlassian/pipelines/agent/build/ to my build image and put a Dockerfile in it, but the help article didn't say anything about that.
So while on the one hand it's obvious that you need a Dockerfile for docker build to do anything -- the Atlassian page says "just do this and Pipelines will build your app" while running their code exactly will produce the error. I wasn't sure when I wrote this post what all was going on in Pipelines (since it has its own Docker environment) and at first it seemed like they were injecting a Dockerfile based on Pipelines environment variables. That made less sense as I got into it.
Thanks for your assistance!
Sam
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Any one got solution?
Do we need add our own Docker file ?
Thanks
Murali
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
sure you need to create and commit Dockerfile, as only you knows how image should be build.
Bitbucket only a scheduler who executes predefined script, nothing more.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Any one got solution?
Do we need add our own Docker file ?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Yes, you need to have your own Dockerfile. You just need to run docker commands in the same way you would locally.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I do have a Dockerfile and I have the same issue:
unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /opt/atlassian/pipelines/agent/build/Dockerfile
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You either have no Dockerfile in the current directory or your Dockerfile is called something else. You can specify the docker file with the -f option.
$ docker build -f Dockerfile.debug .
For more info
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.