This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 7f02b47 Add image labels required by ArtifactHub (#21040)
7f02b47 is described below
commit 7f02b4718bc9e282c1d59b0aab5dd46972b6f79c
Author: Kamil BreguĊa <[email protected]>
AuthorDate: Sun Jan 23 14:15:45 2022 +0100
Add image labels required by ArtifactHub (#21040)
---
Dockerfile | 6 +-
docs/docker-stack/README.md | 75 ++++++++++++++++++++++
docs/docker-stack/index.rst | 5 +-
scripts/ci/libraries/_build_images.sh | 1 +
.../ci/pre_commit/pre_commit_update_versions.py | 7 +-
5 files changed, 91 insertions(+), 3 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index 4cd1785..fc3a438 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -48,6 +48,7 @@ ARG PYTHON_BASE_IMAGE="python:3.7-slim-buster"
ARG AIRFLOW_PIP_VERSION=21.3.1
ARG AIRFLOW_IMAGE_REPOSITORY="https://github.com/apache/airflow"
+ARG
AIRFLOW_IMAGE_README_URL="https://raw.githubusercontent.com/apache/airflow/main/docs/docker-stack/README.md"
# By default latest released version of airflow is installed (when empty) but
this value can be overridden
# and we can install version according to specification (For example ==2.0.2
or <3.0.0).
@@ -396,6 +397,7 @@ ARG AIRFLOW_HOME
# production image is prepared from sources rather than from package
ARG AIRFLOW_INSTALLATION_METHOD="apache-airflow"
ARG AIRFLOW_IMAGE_REPOSITORY
+ARG AIRFLOW_IMAGE_README_URL
ENV RUNTIME_APT_DEPS=${RUNTIME_APT_DEPS} \
ADDITIONAL_RUNTIME_APT_DEPS=${ADDITIONAL_RUNTIME_APT_DEPS} \
@@ -524,7 +526,9 @@ LABEL org.apache.airflow.distro="debian" \
org.opencontainers.image.licenses="Apache-2.0" \
org.opencontainers.image.ref.name="airflow" \
org.opencontainers.image.title="Production Airflow Image" \
- org.opencontainers.image.description="Reference, production-ready Apache
Airflow image"
+ org.opencontainers.image.description="Reference, production-ready Apache
Airflow image" \
+ io.artifacthub.package.license='Apache-2.0' \
+ io.artifacthub.package.readme-url='${AIRFLOW_IMAGE_README_URL}'
ENTRYPOINT ["/usr/bin/dumb-init", "--", "/entrypoint"]
CMD []
diff --git a/docs/docker-stack/README.md b/docs/docker-stack/README.md
new file mode 100644
index 0000000..96010fe
--- /dev/null
+++ b/docs/docker-stack/README.md
@@ -0,0 +1,75 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<!--
+This file was created for the purpose of publishing an image to ArtifactHub.
+Please try to keep it in sync with index.rst
+-->
+
+# Docker Image for Apache Airflow
+
+For the ease of deployment in production, the community releases a
production-ready reference container
+image.
+
+The Apache Airflow community, releases Docker Images which are `reference
images` for Apache Airflow.
+Every time a new version of Airflow is released, the images are prepared in the
+[apache/airflow DockerHub](https://hub.docker.com/r/apache/airflow)
+for all the supported Python versions.
+
+You can find the following images there (Assuming Airflow version
`2.3.0.dev0`):
+
+* `apache/airflow:latest` - the latest released Airflow image with default
Python version (3.7 currently)
+* `apache/airflow:latest-pythonX.Y` - the latest released Airflow image with
specific Python version
+* `apache/airflow:2.3.0.dev0` - the versioned Airflow image with default
Python version (3.7 currently)
+* `apache/airflow:2.3.0.dev0-pythonX.Y` - the versioned Airflow image with
specific Python version
+
+Those are "reference" images. They contain the most common set of extras,
dependencies and providers that are
+often used by the users and they are good to "try-things-out" when you want to
just take Airflow for a spin,
+
+The Apache Airflow image provided as convenience package is optimized for
size, and
+it provides just a bare minimal set of the extras and dependencies installed
and in most cases
+you want to either extend or customize the image. You can see all possible
extras in [Reference for package
extras](https://airflow.apache.org/docs/apache-airflow/stable/extra-packages-ref.html).
+The set of extras used in Airflow Production image are available in the
+[Dockerfile](https://github.com/apache/airflow/blob/2c6c7fdb2308de98e142618836bdf414df9768c8/Dockerfile#L37).
+
+However, Airflow has more than 60 community-managed providers (installable via
extras) and some of the
+default extras/providers installed are not used by everyone, sometimes others
extras/providers
+are needed, sometimes (very often actually) you need to add your own custom
dependencies,
+packages or even custom providers. You can learn how to do it in [Building the
image](https://airflow.apache.org/docs/docker-stack/build.html#build-build-image).
+
+The production images are build in DockerHub from released version and release
candidates. There
+are also images published from branches but they are used mainly for
development and testing purpose.
+See [Airflow Git
Branching](https://github.com/apache/airflow/blob/main/CONTRIBUTING.rst#airflow-git-branches)
+for details.
+
+## Usage
+
+The
[`AIRFLOW_HOME`](https://airflow.apache.org/docs/apache-airflow/stable/cli-and-env-variables-ref.html#envvar-AIRFLOW_HOME)
is set by default to ``/opt/airflow/`` - this means that DAGs
+are in default in the ``/opt/airflow/dags`` folder and logs are in the
``/opt/airflow/logs``
+
+The working directory is ``/opt/airflow`` by default.
+
+If no `AIRFLOW__CORE__SQL_ALCHEMY_CONN` variable is set then SQLite database
is created in
+``${AIRFLOW_HOME}/airflow.db``.
+
+For example commands that start Airflow see: [Executing
commands](https://airflow.apache.org/docs/docker-stack/entrypoint.html#entrypoint-commands).
+
+Airflow requires many components to function as it is a distributed
application. You may therefore also be interested
+in launching Airflow in the Docker Compose environment, see: [Quick
Start](https://airflow.apache.org/docs/apache-airflow/stable/start/index.html).
+
+You can use this image in [Helm
Chart](https://airflow.apache.org/docs/helm-chart/stable/index.html) as well.
diff --git a/docs/docker-stack/index.rst b/docs/docker-stack/index.rst
index 7c2fc72..41994d9 100644
--- a/docs/docker-stack/index.rst
+++ b/docs/docker-stack/index.rst
@@ -15,6 +15,9 @@
specific language governing permissions and limitations
under the License.
+ .. WARNING:
+ IF YOU ARE UPDATING THIS FILE, CONSIDER UPDATING README.MD TOO.
+
.. image:: /img/docker-logo.png
:width: 100
@@ -44,7 +47,7 @@ Every time a new version of Airflow is released, the images
are prepared in the
`apache/airflow DockerHub <https://hub.docker.com/r/apache/airflow>`_
for all the supported Python versions.
-You can find the following images there (Assuming Airflow version
|airflow-version|):
+You can find the following images there (Assuming Airflow version
:subst-code:`|airflow-version|`):
* :subst-code:`apache/airflow:latest` - the latest released
Airflow image with default Python version (3.7 currently)
* :subst-code:`apache/airflow:latest-pythonX.Y` - the latest released
Airflow image with specific Python version
diff --git a/scripts/ci/libraries/_build_images.sh
b/scripts/ci/libraries/_build_images.sh
index 89bc453..7eaaeb4 100644
--- a/scripts/ci/libraries/_build_images.sh
+++ b/scripts/ci/libraries/_build_images.sh
@@ -677,6 +677,7 @@ function build_images::build_prod_images() {
--build-arg AIRFLOW_CONSTRAINTS="${AIRFLOW_CONSTRAINTS}" \
--build-arg
AIRFLOW_IMAGE_REPOSITORY="https://github.com/${GITHUB_REPOSITORY}" \
--build-arg AIRFLOW_IMAGE_DATE_CREATED="$(date -u
+'%Y-%m-%dT%H:%M:%SZ')" \
+ --build-arg
AIRFLOW_IMAGE_README_URL="https://raw.githubusercontent.com/apache/airflow/${COMMIT_SHA}/docs/docker-stack/README.md"
\
"${additional_dev_args[@]}" \
"${additional_runtime_args[@]}" \
"${docker_cache_prod_directive[@]}" \
diff --git a/scripts/ci/pre_commit/pre_commit_update_versions.py
b/scripts/ci/pre_commit/pre_commit_update_versions.py
index 2af0698..3898d64 100755
--- a/scripts/ci/pre_commit/pre_commit_update_versions.py
+++ b/scripts/ci/pre_commit/pre_commit_update_versions.py
@@ -30,7 +30,7 @@ from setup import version # isort:skip
def update_version(pattern: re.Pattern, v: str, file_path: str):
- print(f"Replacing {pattern} to {version} in {file_path}")
+ print(f"Checking {pattern} in {file_path}")
with open(file_path, "r+") as f:
file_content = f.read()
if not pattern.search(file_content):
@@ -38,6 +38,7 @@ def update_version(pattern: re.Pattern, v: str, file_path:
str):
new_content = pattern.sub(fr'\g<1>{v}\g<2>', file_content)
if file_content == new_content:
return
+ print(" Updated.")
f.seek(0)
f.truncate()
f.write(new_content)
@@ -46,8 +47,12 @@ def update_version(pattern: re.Pattern, v: str, file_path:
str):
REPLACEMENTS = {
r'^(FROM apache\/airflow:).*($)':
"docs/docker-stack/docker-examples/extending/*/Dockerfile",
r'(apache\/airflow:)[^-]*(\-)': "docs/docker-stack/entrypoint.rst",
+ r'(`apache/airflow:)[0-9].*?((?:-pythonX.Y)?`)':
"docs/docker-stack/README.md",
+ r'(\(Assuming Airflow version `).*(`\))': "docs/docker-stack/README.md",
}
+print(f"Current version: {version}")
+
if __name__ == '__main__':
for regexp, p in REPLACEMENTS.items():
text_pattern = re.compile(regexp, flags=re.MULTILINE)