This repo contains Dockerfiles for building Docker images for Apache Flink, and are used to build the “official” flink
images hosted on Docker Hub (reviewed and build by Docker), as well as the images published on apache/flink
DockerHub (maintained by Flink committers).
These Dockerfiles are maintained by the Apache Flink community, but the Docker community is responsible for building and hosting the images on Docker Hub.
official-images
repositorylibrary/flink
file in the official-images
repository.The master
branch of this repository serves as a pure publishing area for releases.
Development happens on the various dev-X
branches.
Pull requests for a specific version should be opened against the respective dev-<version>
branch. Pull requests for all versions, or for the next major Flink release, should be opened against the dev-master
branch.
The dev-master
branch is tested against nightly Flink snapshots for the next major Flink version. This allows us to develop features in tandem with Flink.
The dev-1.x
branches are tested against the latest corresponding minor Flink release, to ensure any changes we make are compatible with the currently used Flink version.
There are additional steps required when a new Flink major version (x.y.0) is released.
latest
tag, so the aliases
array in generate-stackbrew-library.sh
must be updatedWhen a new release of Flink is available, the Dockerfiles in the master
branch should be updated and a new manifest sent to the Docker Library official-images
repo.
The Dockerfiles are generated on the respective dev-<version>
branches, and copied over to the master
branch for publishing.
Updating the Dockerfiles involves the following steps:
dev-x.y
(minor release)/dev-master
(major release) branch of the respective release, e.g., dev-1.9add-version.sh
with the GPG key ID of the key used to sign the new releaseAdd GPG key for x.y.z release
[example]testing/run_travis_tests.sh
to test against the new minor version.dev-x.y
/dev-master
branch containing these commits.add-version.sh
with the appropriate arguments (-r flink-major-version -f flink-full-version
)./add-version.sh -r 1.2 -f 1.2.1
master
branchrm -r 1.2
, if the new Flink version is 1.2.1
dev-x.y
/dev-master
branch to master
Update Dockerfiles for x.y.z release
[example]master
branch containing this commit.Once the pull request has been merged, we can release the new docker images:
For publishing to DockerHub: apache/flink , you need to perform the following steps:
apache/flink
: docker login -u <username>
./publish-to-dockerhub.sh
. (Do not execute on the arm platform machine, such as Apple Silicon)For publishing as an official image, a new manifest should be generated and a pull request opened on the Docker Library official-images
repo.
./generate-stackbrew-library.sh
to output the new manifest (see note below regarding usage of this script)official-images
repo, overwrite the file library/flink
with the new manifestUpdate to Flink x.y.z
[example]A pull request can then be opened on the official-images
repo with the new manifest. [example]
Once the pull request has been merged (often within 1 business day), the new images will be available shortly thereafter.
For new major Flink releases, once the new image is available, the dev-x.y
branch must be created:
dev-master
testing/run_travis_tests.sh
:./add-custom.sh
with ./add-version.sh -r x.y -f x.y.0
dev-master
with dev-x.y
Checklist for the dev
branch:
add-version.sh
and committed with the message Add GPG key for x.y.z release
./add-version.sh -r x.y -f x.y.z
has been run on the respective dev branchChecklist for the master
branch:
x.y/
directories should be present)Update Dockerfiles for x.y.z release
aliases
array in generate-stackbrew-library.sh
has been updated with [x.y]='latest'
and committed with the message Update latest image tag to x.y
generate-stackbrew-library.sh
and a pull request opened on the official-images
repo with commit message Update to Flink x.y.z
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 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
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.