# Apache Airflow CI Docker Repository

**Do not use this image for production**

The main purpose of this repository is to provide a number of Docker containers, being built by the Docker Hub service: https://hub.docker.com/r/airflowci/incubator-airflow-ci/builds/

The container contains a couple of the dependencies that are used for running tests against Apache Airflow.

- For more information, please refer to the Apache Airflow repository itself: https://github.com/apache/incubator-airflow
- For the specifics on the CI process, please refer to https://github.com/apache/incubator-airflow/pull/3393
