Using Quay as your Container Registry in Travis


In some cases, I prefer using as my container registry instead of Dockerhub. If this is the case for you and want to learn how to switch between the two keep reading, Quay and Docker both have their upsides and downsides depending on what type of project you’re doing. In this post, I’m going to show you how to implement Travis into your Quay build, and of course this means you’ll know how to switch between container registries.

This is just one of many things you can do with Quay/Travis powerhouse duo that a lot of users are just learning about, but don’t worry I’ve been using this duo for a while now, so I’ll let you in on all my secrets, ways to do things quicker, etc. So stay tuned as I will be putting out more of these weekly.

Using Travis CI with

I’ve setup a tutorial repository, so fork the tutorial repository, Next, you’ll need to edit the .travis.yml and docker_push files in your repo, replacing [yourusername] with the username of your quay account.

Creating your Quay repository

When signed into Quay, in the upper right-hand corner, you’ll see a + Create New Repository button. Click the button.

Plus button

Make sure you select Public instead of Private this is a mistake I made when first starting out with Quay. I made a repo entitled montana-s390x.


Creating your Quay robot account

Click the + button to create your robot account. Give the Robot admin privileges, you’ll then see where you can expand on your account name, here will be the secrets you want to use as env vars in Travis.


The Dockerfile that I made for this example is as follows:

FROM alpine:3.8
LABEL LABEL Author="Montana Mendy"
CMD ["echo", "Hello", "Montana", "and Travis"]

My docker_push file reads as follows:

echo "$QUAY_BOT_PASSWORD" | docker login -u "$QUAY_BOT_USERNAME" --password-stdin
docker push

Remember in Travis to name the env vars, QUAY_BOT_USERNAME and QUAY_BOT_PASSWORD, also important you store the token or your password as well as an env var. It’s also important you make this file exectuable, you can do this by running:

chmod u+x docker_push

You can set env vars two ways, from the CLI, if you want to do it this way run:

travis encrypt

The simpler way is to do it through the UI, and it looks like this:

Env Vars

Make sure you have all your env vars correct in the Robots page on Quay, this meaning username, password. Copy and paste them into the Travis UI, or run encrypt and invoke the variables like that.



Now that you’ve set everything Quay up, you can commit your changes to .travis.yml and docker_push, then push your changes to your fork. This should trigger a build with Travis, which will build the container, and instead of pushing it to Dockerhub, it will push it to Quay.


As you can see I’ve successfully pushed to Quay, and in turn am now using Quay as my container registry. As stated in the beginning this is just one of many things you can do with Quay/Travis duo that users are just learning about. Stay tuned as I will be putting out more of these weekly.

Happy Building!