[Pipelines] Build docker image in bitbucket-pipelines.yml

Heyy,

In my bitbucket-pipelines.yml, I want to be able to build a docker image in my step/script (docker build -t myTag .). To do that I use an image allowing me to do docker in docker (jeroenknoops/docker-docker-dind-bash). However, to build the image, I need the container to be started with the option "-v /var/run/docker.sock:/var/run/docker.sock". Is there a way to do that ? Is there another way to build a docker image from the script?

Thanks for your help!

3 answers

1 vote

Hi Matthieu,

It is possible to build a docker image externally and reference it by adding 

image: yourdockerusername/imagename

with the appropriate values to your yaml file (as specified here https://answers.atlassian.com/questions/39140980). Unfortunately there is no way of running docker in docker regardless of image used. This means it is not possible to build docker images from the script.

Hello Thomas,

I believe what Matthieu is looking to do (and I am as well) is what is described in the last section of this article. The hope is that this would actually allow the creation of a docker image from within the script (which could then be pushed to a docker registry, deployed, etc.). I did a little testing locally, and running the docker image as follows did allow me to create docker images from within docker.

docker run -v /var/run/docker.sock:/var/run/docker.sock -ti docker

I'm just starting to experiment with docker deployment strategies, but I am curious if there is any way to add the ability to bind the docker socket on the image used by Pipelines?

Thanks for your help!

Justin

Hey Justin,

unfortunately Bitbucket Pipelines doesn't support yet the building of Docker images as part of your build. 

We do however hope to get this functionality added soon. You can find the open feature request here: https://bitbucket.org/site/master/issues/12790/building-and-pushing-docker-images

Hi Jeroen,

 

Alright, thanks for pointing out the feature request! I'll keep an eye on that.

 

Justin

This is kind of a late comment from me, but you can ln -s the docker socket to inside your $BITBUCKET_CLONE_DIR and refer to that as a volume.

Also an update: Docker build and push (and other operations) are now supported by Pipelines: https://blog.bitbucket.org/2017/04/18/bitbucket-pipelines-supports-building-docker-images-and-service-containers/ 

For weird reason, the forum won't let me post my question; so posting a link to my question in StackOverflow:

https://stackoverflow.com/questions/44146389/bitbucket-pipelines-docker-unauthorized-authentication-required-docker-push

This issue is really puzzling and I wonder if anyone can drop in an insight. Thanks!

 

Suggest an answer

Log in or Sign up to answer
How to earn badges on the Atlassian Community

How to earn badges on the Atlassian Community

Badges are a great way to show off community activity, whether you’re a newbie or a Champion.

Learn more
Community showcase
Posted Jun 12, 2018 in Bitbucket

Do you use any Atlassian products for your personal projects?

After spinning my wheels trying to get organized enough to write a book for National Novel Writing Month (NaNoWriMo) I took my affinity for Atlassian products from my work life and decided to tr...

23,258 views 26 12
Join discussion

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you