vitess-gh/docker
Daniël van Eeden dde7979b28 Remove references to mercurial 2017-05-07 10:20:03 -07:00
..
base Re-add "Dockerfile" for base image in the root of our repository. 2017-04-14 15:18:09 -07:00
bootstrap Remove references to mercurial 2017-05-07 10:20:03 -07:00
etcd license: BSD->Apache v2.0 2017-05-06 00:38:56 -07:00
etcd-lite license: BSD->Apache v2.0 2017-05-06 00:38:56 -07:00
lite license: BSD->Apache v2.0 2017-05-06 00:38:56 -07:00
orchestrator license: BSD->Apache v2.0 2017-05-06 00:38:56 -07:00
publish-site
root
test license: BSD->Apache v2.0 2017-05-06 00:38:56 -07:00
README.md docker: Move Dockerfile files for "base" image from the root of the repository to docker/base. 2017-04-13 09:47:31 -07:00

README.md

Vitess Docker Images

The Vitess Project publishes several Docker images in the Docker Hub "vitess" repository. This file describes the purpose of the different images.

TL;DR: Use the vitess/lite image for running Vitess. Our Kubernetes Tutorial uses it as well. Instead of using the latest tag, you can pin it to a known stable version e.g. v2.0.

Principles

The structure of this directory and our Dockerfile files is guided by the following principles:

  • The configuration of each Vitess image is in the directory docker/<image>/.
  • Configurations for other images e.g. our internal tool Keytar (see below), can be in a different location.
  • Images with more complex build steps have a build.sh script e.g. see lite/build.sh.
  • Tags are used to provide (stable) versions e.g. see tag v2.0 for the image vitess/lite.
  • Where applicable, we provide a latest tag to reference the latest build of an image.

Images

Our list of images can be grouped into:

  • published Vitess code
  • dependencies for our Kubernetes tutorial
  • internally used tools

Vitess

Image How (When) Updated Description
bootstrap manual (after incompatible changes are made to bootstrap.sh or vendor/vendor.json Basis for all Vitess images. It is a snapshot of the checked out repository after running ./bootstrap.sh. Used to cache dependencies. Avoids lengthy recompilation of dependencies if they did not change. Our internal test runner test.go uses it to test the code against different MySQL versions.
base automatic (after every GitHub push to the master branch) Contains all Vitess server binaries. Snapshot after running make build.
root automatic (after every GitHub push to the master branch) Same as base but with the default user set to "root". Required for Kubernetes.
lite manual (updated with every Vitess release) Stripped down version of base e.g. source code and build dependencies are removed. Default image in our Kubernetes templates for minimized startup time.

All these Vitess images include a specific MySQL/MariaDB version ("flavor").

  • We provide Dockerfile files for multiple flavors (Dockerfile.<flavor>).
  • As of April 2017, the following flavors are supported: mariadb, mysql56, mysql57, percona(56), percona57
  • On Docker Hub we publish only images with MySQL 5.7 to minimize maintenance overhead and avoid confusion.
  • If you need an image for a different flavor, it is very easy to build it yourself. See the Custom Docker Build instructions.

If you are looking for a stable version of Vitess, use the lite image with a fixed version. If you are looking for the latest Vitess code in binary form, use the "latest" tag of the base image.

Kubernetes Tutorial Dependencies

Image How (When) Updated Description
etcd-lite manual Our Kubernetes tutorial uses etcd as Vitess topology backing store and runs this image. It is a stripped version of the etcd image for faster Kubernetes startup times. Published as vitess/etcd:<version>-lite e.g. v2.0.13-lite.
etcd manual Basis for etcd-lite.
guestbook manual (updated with every Vitess release) Vitess adaption of the Kubernetes guestbook example. Used to showcase sharding in Vitess. Dockerfile is located in examples/kubernetes/guestbook/.
orchestrator manual Binaries for Orchestrator. It can be used with Vitess for automatic failovers. Currently not part of the Kubernetes Tutorial and only used in tests.

Internal Tools

These images are used by the Vitess project for internal workflows and testing infrastructure and can be ignored by users.

Image How (When) Updated Description
publish-site manual Contains Jekyll which we use to generate our vitess.io website from the Markdown files located in doc/.
keytar manual Keytar is a Vitess testing framework to run our Kubernetes cluster tests. Dockerfile is located in test/cluster/keytar/.