Come for the products,
stay for the community

The Atlassian Community can help you and your team get more value out of Atlassian products and practices.

Atlassian Community about banner
4,361,190
Community Members
 
Community Events
168
Community Groups

Bitbucket pipelines: does Docker volume mounting work yet?

I have a similar issue to this question but I have tried the suggested solutions and volume mounting still does not work.

  • I have verified that the directory I am trying to mount as a volume does exist within my build directory
  • I have run the `docker run ...` bare command with my container, which downloads and runs the container with no problems
  • I have tried using a volume mount with the environment variable, e.g. `docker run -v="$BITBUCKET_CLONE_DIR/dist:/dist" 18fgsa/html-proofer /dist`
  • I have also tried using a volume mount with the absolute path, e.g. `docker run -v="/opt/atlassian/pipelines/agent/build/dist:/dist" 18fgsa/html-proofer /dist`
  • I have also tried the volume mount option in the other format, e.g. `docker run -v "$BITBUCKET_CLONE_DIR/dist:/dist" 18fgsa/html-proofer /dist`

All of these permutations have resulted in the same error:

`docker: Error response from daemon: authorization denied by plugin pipelines: Command not supported.`

Is there some permission which has not been enabled for Docker volume mounts??

3 answers

1 accepted

3 votes
Answer accepted

Ok, for anyone reading this, as per the reply linked above, the answer is that you can currently only mount the bare $BITBUCKET_CLONE_DIR itself as the source for a volume. Any paths below it must be accounted for in your parameters passed to the run command.

So I changed my first example above to:

docker run -v="$BITBUCKET_CLONE_DIR:/app" 18fgsa/html-proofer /app/dist

... and then it worked.

Thanks @Philip Hodder 

I've tried this solution but still running into the error. I'm running

docker-compose run -d -v="$BITBUCKET_CLONE_DIR:/my_app_name" service_name

What am I missing here?

What’s your exact error Chris? Because you’re using `docker-compose` instead of Docker as I was, you may be subject to different permissions. 

Hey Drew, I'm getting this error:

ERROR: for app_name_postgres Cannot create container for service db: authorization denied by plugin pipelines: -v only supports $BITBUCKET_CLONE_DIR and its subdirectories

The “-v” option for mounting volumes doesn’t exist on docker-compose, only on docker itself. 

Check your docker-compose.yml file for other volume mounting directives which may be clashing with the Bitbucket limitations.

https://confluence.atlassian.com/bitbucket/run-docker-commands-in-bitbucket-pipelines-879254331.html

I can't recall the docker-compose CLI reference from 2019 but I'd swear the -v was already valid just as it is now!

https://docs.docker.com/compose/reference/run/

Additionally to only mounting BITBUCKET_CLONE_DIR, beware that files should be world-readable (I guess). That is chmod o+r.

In my case I was creating files with the mktemp tool and they would have 0600 permissions by default. They are fully operable from the pipeline script and permissions are not distinguishable once inside the subcontainer, but they will fail to be read!

Aha, I've just seen this reply to a similar question, I'll try that and see if it works for my issue.

Suggest an answer

Log in or Sign up to answer
TAGS
Community showcase
Published in Bitbucket

Git push size limits are coming to Bitbucket Cloud starting April 4th, 2022

Beginning on April 4th, we will be implementing push limits. This means that your push cannot be completed if it is over 3.5 GB. If you do attempt to complete a push that is over 3.5 GB, it will fail...

3,491 views 3 10
Read article

Atlassian Community Events