kolla/docs/image-building.md
Lars Kellogg-Stedman 24b6db92bc introduce a new build mechanism
This patch replaces the collection of individual "build" scripts with a
single script (tools/build-docker-image), made available as "build"
inside each image directory.

The build-docker-image script will, by default, build images tagged with
the current commit id in order to prevent developers from accidentally
stepping on each other or on release images.

Documentation in docs/image-building.md describes the script in more
detail.

Change-Id: I444d5c2256a85223f8750a0904cb4b07f18ab67f
2014-10-04 11:03:39 -04:00

1.9 KiB

Image building

The tools/build-docker-image script in this repository is responsible for building docker images. It is symlinked as ./build inside each Docker image directory.

When creating new image directories, you can run the tools/update-build-links scripts to install the build symlink (this script will install the symlink anywhere it find a file named Dockerfile).

Workflow

In general, you will build images like this:

$ cd docker/keystone
$ ./build

By default, the above command would build kollaglue/fedora-rdo-keystone:CID, where CID is the current short commit ID. That is, given:

$ git rev-parse HEAD
76a16029006a2f5d3b79f1198d81acb6653110e9

The above command would generate kollaglue/fedora-rdo-keystone:76a1602. This tagging is meant to prevent developers from stepping on each other or on release images during the development process.

To push the image after building, add --push:

$ ./build --push

To use these images, you must specify the tag in your docker run commands:

$ docker run kollaglue/fedora-rdo-keystone:76a1602

Or in your kubernetes configurations:

"containers": [{
  "name": "keystone",
  "image": "kollaglue/fedora-rdo-keystone:76a1602",
  "ports": [
    {"containerPort": 5000},
    {"containerPort": 35357}
  ],
  "env": [
    {"name": "DB_ROOT_PASSWORD", "value": "password"},
    {"name": "KEYSTONE_ADMIN_TOKEN", "value": "ADMINTOKEN"}
  ]
}]

Building releases

To build into the latest tag, add --release:

$ ./build --release

Or to build and push:

$ ./build --push --release

Configuration

The build-docker-image script will look for a file named .buildconf in your current directory and in the top level of the repository. You can use this to set defaults, such as:

NAMESPACE=larsks

This setting would cause all images to be tagged into the larsks/ namespace.