blob: 626e01f370483b7078f354d6d807e3580c11a2b7 [file] [log] [blame] [view]
Apache Flink Docker Images
==========================
This repo contains Dockerfiles for building Docker images for Apache Flink, and are used to build
the "official" [`flink`](https://hub.docker.com/_/flink) images hosted on Docker Hub.
These Dockerfiles are maintained by the Apache Flink community, but the Docker community is
responsible for building and hosting the images on Docker Hub.
[![Build Status](https://travis-ci.org/apache/flink-docker.svg?branch=master)](https://travis-ci.org/apache/flink-docker)
Flink Docker image lifecycle
----------------------------
* For more information about how changes in this repo are reflected on Docker Hub, see [the "An
image's source changed in Git, now what?" FAQ entry](
https://github.com/docker-library/faq#an-images-source-changed-in-git-now-what)
* For outstanding changes to the Apache Flink images on Docker Hub, see [PRs with the
"library/flink" label on the `official-images` repository](
https://github.com/docker-library/official-images/labels/library%2Fflink)
* For the "source of truth" for which Dockerfile and revision is reflected in the Apache Flink
images on Docker Hub, see [the `library/flink` file in the `official-images` repository](
https://github.com/docker-library/official-images/blob/master/library/flink).
Workflow for new Flink releases
-------------------------------
### Note for new Flink minor (x.y.0) releases
When a new Flink minor version (x.y.0) is released, the `aliases` array in
`generate-stackbrew-library.sh` must be updated so that the images for the new release are tagged
`latest`.
### Release workflow
When a new release of Flink is available, the Dockerfiles in this repo should be updated and a new
manifest sent to the Docker Library [`official-images`](
https://github.com/docker-library/official-images) repo.
Updating the Dockerfiles involves 3 steps:
1. Update `add-version.sh` with the GPG key ID of the key used to sign the new release
* Commit this change with message `Add GPG key for x.y.z release` <sup>\[[example](
https://github.com/apache/flink-docker/commit/94845f46c0f0f2de80d4a5ce309db49aff4655d0)]</sup>
2. Remove any existing Dockerfiles from the same minor version
* e.g. `rm -r 1.2`, if the new Flink version is `1.2.1`
3. Run `add-version.sh` with the appropriate arguments (`-r flink-minor-version -f
flink-full-version`)
* e.g. `./add-version.sh -r 1.2 -f 1.2.1`
* Commit these changes with message `Update Dockerfiles for x.y.z release` <sup>\[[example](
https://github.com/apache/flink-docker/commit/5920fd775ca1a8d03ee959d79bceeb5d6e8f35a1)]</sup>
A pull request can then be opened on this repo with the changes.
Once the pull request has been merged, a new manifest should be generated and a pull request opened
on the Docker Library [`official-images`](https://github.com/docker-library/official-images) repo.
1. Run `./generate-stackbrew-library.sh` to output the new manifest (see note [below](
#stackbrew-manifest) regarding usage of this script)
2. In a clone of the [`official-images`](https://github.com/docker-library/official-images) repo,
overwrite the file `library/flink` with the new manifest
3. Commit this change with message `Update to Flink x.y.z` <sup>\[[example](
https://github.com/docker-library/official-images/commit/396d6cfa03c4e6b41d3ba5b7c402d7b25f1db415
)]</sup>
A pull request can then be opened on the [`official-images`](
https://github.com/docker-library/official-images) repo with the new manifest. <sup>\[[example](
https://github.com/docker-library/official-images/pull/7378)]</sup>
Once the pull request has been merged (often within 1 business day), the new images will be
available shortly thereafter.
### Release checklist
- [ ] The GPG key ID of the key used to sign the release has been added to `add-version.sh` and
committed with the message `Add GPG key for x.y.z release`
- [ ] For new patch version releases (`x.y.z`), any existing generated files for the same minor
version have been removed with `rm -r x.y/`
- [ ] `./add-version.sh -r x.y -f x.y.z` has been run, and the newly-generated files committed with
the message `Update Dockerfiles for x.y.z release`
- [ ] For new minor version releases (`x.y.0`), the `aliases` array in
`generate-stackbrew-library.sh` has been updated with `[x.y]='latest'`
- [ ] A pull request with the above changes has been opened on this repo and merged
- [ ] The new library manifest has been generated with `generate-stackbrew-library.sh` and a pull
request opened on the `official-images` repo with commit message `Update to Flink x.y.z`
### Stackbrew Manifest
`generate-stackbrew-library.sh` is used to generate the library manifest file required for official
Docker Hub images.
When the Dockerfiles in this repo are updated, the output of this script should replace the contents
of `library/flink` in the Docker [official-images](https://github.com/docker-library/official-images
) repo via a pull request.
Note: Since this script requires the `bashbrew` binary and a compatible version of Bash, the script
`generate-stackbrew-library-docker.sh` can be used to invoke the script in a Docker container with
the necessary dependencies.
Example:
./generate-stackbrew-library-docker.sh > /path/to/official-images/library/flink
License
-------
Licensed under the Apache License, Version 2.0: https://www.apache.org/licenses/LICENSE-2.0
Apache Flink, Flink®, Apache®, the squirrel logo, and the Apache feather logo are either
registered trademarks or trademarks of The Apache Software Foundation.