blob: 2f73ba9f334a22ba482c1b89b3d71dae368a199c [file] [log] [blame]
Search.setIndex({"docnames": ["build", "build-arg-ref", "changelog", "entrypoint", "index", "recipes"], "filenames": ["build.rst", "build-arg-ref.rst", "changelog.rst", "entrypoint.rst", "index.rst", "recipes.rst"], "titles": ["Building the image", "Image build arguments reference", "Dockerfile Changelog", "Entrypoint", "Docker Image for Apache Airflow", "Recipes"], "terms": {"befor": [0, 1, 2], "dive": 0, "deepli": 0, "wai": [0, 1, 2, 3, 4, 5], "how": [0, 2, 3, 4], "built": [0, 1, 2], "let": 0, "u": [0, 2, 3, 5], "first": [0, 2, 3, 4], "explain": [0, 4], "might": [0, 1, 2, 3, 4], "contain": [0, 1, 2, 4, 5], "we": [0, 1, 2, 3, 4, 5], "show": [0, 3], "few": [0, 3, 4], "typic": 0, "can": [0, 1, 2, 3, 4, 5], "do": [0, 1, 2, 3], "most": [0, 1, 4], "common": [0, 1, 4, 5], "where": [0, 1, 2, 3, 4], "your": [0, 1, 2, 3, 4, 5], "ar": [0, 1, 2, 3, 4, 5], "depend": [0, 2, 3, 4], "either": [0, 1, 2, 3, 4, 5], "via": [0, 1, 2, 3, 4], "those": [0, 1, 2, 3, 4], "below": [0, 1, 2, 3, 4, 5], "read": [0, 3], "further": 0, "complex": 0, "case": [0, 1, 2, 3, 4, 5], "which": [0, 1, 2, 3, 4], "involv": [0, 3], "find": [0, 2, 4], "inform": [0, 3, 4, 5], "about": [0, 3, 4], "goal": 0, "quickli": [0, 4], "etc": [0, 2, 3, 5], "here": [0, 2], "follow": [0, 1, 2, 3, 4], "vim": 0, "should": [0, 1, 2, 3], "switch": [0, 2], "root": [0, 2, 3, 5], "user": [0, 1, 2, 4, 5], "run": [0, 2, 4, 5], "command": [0, 1, 2, 4, 5], "forget": 0, "back": [0, 4], "after": [0, 3, 4], "complet": [0, 3, 5], "doc": [0, 5], "stack": 0, "apach": [0, 1, 2, 3], "2": [0, 1, 3, 4, 5], "9": [0, 1, 3, 4, 5], "0": [0, 1, 3, 4, 5], "get": [0, 3, 4, 5], "updat": [0, 2, 3, 4, 5], "y": [0, 4, 5], "recommend": [0, 5], "autoremov": [0, 5], "yqq": [0, 5], "purg": [0, 5], "clean": [0, 5], "rm": [0, 5], "rf": [0, 5], "var": [0, 5], "lib": [0, 5], "list": [0, 1, 2, 3, 4, 5], "lxml": [0, 3], "python": [0, 1, 2, 3, 4], "rather": [0, 2, 3, 4], "than": [0, 1, 2, 3, 4], "attempt": [0, 3, 4], "fail": [0, 1, 2, 3], "an": [0, 1, 2, 3, 4, 5], "appropri": [0, 1], "error": [0, 2, 3, 4], "messag": [0, 3], "In": [0, 1, 2, 3, 4], "also": [0, 1, 2, 3, 4, 5], "veri": [0, 2, 3, 4], "same": [0, 1, 2, 3], "version": [0, 1, 2, 3, 4, 5], "thi": [0, 1, 2, 3, 4, 5], "strictli": [0, 2], "necessari": [0, 3], "good": [0, 3, 4], "practic": [0, 3], "alwai": [0, 1, 2], "one": [0, 1, 2, 3, 4, 5], "sure": [0, 1, 2, 3], "some": [0, 1, 2, 3, 4, 5], "have": [0, 1, 2, 3, 4], "conflict": [0, 4], "decid": 0, "downgrad": [0, 2], "upgrad": [0, 1, 2, 4], "so": [0, 1, 2, 3, 4], "explicitli": 0, "surpris": 0, "If": [0, 1, 3, 4], "match": [0, 3], "creat": [0, 2, 4, 5], "mean": [0, 2, 3, 4], "maintain": [0, 4], "level": [0, 1, 2], "autom": [0, 1], "re": [0, 2], "pleas": [0, 4], "keep": [0, 4], "script": [0, 3, 4], "mind": 0, "pure": [0, 1], "task": [0, 3, 5], "virtualenv": [0, 1, 2], "function": [0, 1, 3, 4], "dynam": [0, 2, 3], "dure": [0, 1, 2, 3], "runtim": [0, 1, 2, 3, 5], "With": [0, 2], "8": [0, 1, 3, 4, 5], "dir": 0, "airflow_vers": [0, 1], "similarli": [0, 3], "copi": [0, 1, 2, 3, 4, 5], "r": 0, "beautifulsoup4": 0, "test_dag": 0, "py": 0, "opt": [0, 1, 4, 5], "folder": [0, 1, 2, 3, 4], "chown": 0, "datetim": 0, "pendulum": 0, "model": 0, "oper": [0, 3, 5], "empti": [0, 1, 3], "emptyoper": 0, "now": [0, 2], "tz": 0, "utc": 0, "now_to_the_hour": 0, "timedelta": 0, "3": [0, 1, 3, 4, 5], "replac": [0, 2], "minut": 0, "second": [0, 1], "microsecond": 0, "start_dat": 0, "dag_nam": 0, "test_dag_v1": 0, "schedul": [0, 2, 3], "10": [0, 2, 5], "default_arg": 0, "depends_on_past": 0, "true": [0, 1, 2, 3], "2021": [0, 2], "1": [0, 3, 5], "catchup": 0, "fals": [0, 1, 5], "run_this_1": 0, "task_id": 0, "run_this_2": 0, "set_upstream": 0, "run_this_3": 0, "cfg": 0, "airflow_hom": [0, 1, 4], "": [0, 1, 3, 4, 5], "option": [0, 2, 4], "format": [0, 3], "airflow__": 0, "section": [0, 5], "__": 0, "kei": [0, 2, 3, 5], "doubl": 0, "underscor": 0, "env": [0, 1, 3, 5], "airflow__core__load_exampl": 0, "airflow__database__sql_alchemy_conn": [0, 4], "my_conn_str": 0, "know": [0, 1, 3, 4], "whether": [0, 1, 4], "exist": [0, 3], "chapter": [0, 3], "give": [0, 2, 3, 4], "short": 0, "answer": [0, 4], "question": [0, 4], "comparison": 0, "two": 0, "approach": [0, 2], "familiar": 0, "pattern": 0, "ye": [0, 4], "No": [0, 2], "onli": [0, 1, 2, 3, 4], "basic": 0, "knowledg": [0, 5], "produc": [0, 1], "heavili": 0, "size": [0, 4], "fork": [0, 1], "air": 0, "gap": 0, "system": [0, 2, 3, 4], "tl": [0, 2], "dr": 0, "easier": [0, 4], "howev": [0, 2, 3, 4], "step": [0, 3, 5], "vet": 0, "much": [0, 1, 4], "For": [0, 3, 4], "compar": 0, "equival": 0, "thei": [0, 1, 2, 3, 4, 5], "end": [0, 2], "up": [0, 1, 2, 3, 4], "being": [0, 2, 3], "1gb": 0, "874mb": 0, "respect": [0, 2], "20": [0, 2], "improv": [0, 2], "combin": [0, 2, 4], "both": [0, 2, 3], "method": [0, 3], "admin": [0, 2], "team": [0, 2, 4], "all": [0, 1, 2, 3, 4], "heavi": 0, "publish": [0, 4], "registri": [0, 3], "other": [0, 1, 2, 3, 4, 5], "lightweight": 0, "reflect": 0, "well": [0, 4], "split": 0, "casual": 0, "power": 0, "summit": 0, "2020": 0, "product": [0, 1, 2, 3, 4], "talk": [0, 4], "extens": 0, "commun": [0, 2, 4, 5], "releas": [0, 1, 2, 5], "ha": [0, 1, 2, 3, 4], "60": [0, 4], "manag": [0, 3, 4], "extra": [0, 1, 3, 4], "default": [0, 1, 2, 3, 4], "everyon": [0, 4], "sometim": [0, 4, 5], "often": [0, 4, 5], "actual": [0, 2, 4], "even": [0, 3, 4], "kubernet": [0, 1, 3], "term": 0, "anoth": [0, 1, 3], "specif": [0, 1, 2, 4, 5], "learn": [0, 4], "properli": [0, 3], "tempt": 0, "while": [0, 2], "bad": [0, 3], "idea": [0, 3], "multipl": [0, 4], "reason": [0, 2, 3], "fragil": 0, "time": [0, 1, 3], "happen": [0, 2, 3], "everi": [0, 3, 4], "viabl": 0, "deal": 0, "hobbyist": 0, "iter": [0, 1], "try": [0, 3, 4], "thing": [0, 4], "out": [0, 2, 4], "later": [0, 3], "doe": [0, 2, 3, 4], "semver": [0, 2], "come": [0, 2, 3, 4], "featur": [0, 1, 2, 3, 4, 5], "backward": [0, 2], "compat": [0, 2, 3], "code": [0, 2], "realli": [0, 2, 4], "conveni": [0, 2, 3, 4], "standard": [0, 2], "occasion": [0, 2], "process": [0, 2, 3, 4], "entrypoint": [0, 2], "slight": [0, 2], "adapt": [0, 2], "found": [0, 2, 4], "changelog": 0, "There": [0, 2, 3, 4], "sever": [0, 3], "encount": 0, "recip": 0, "achiev": [0, 3], "order": [0, 1, 2, 3, 4], "understand": [0, 4], "simpl": 0, "tool": [0, 3, 5], "simplest": 0, "consist": 0, "name": 0, "what": [0, 1], "python3": [0, 2, 3], "addit": [0, 1, 2, 5], "execut": [0, 1, 4], "form": 0, "done": [0, 2, 3, 4], "cli": [0, 2], "assum": [0, 4], "like": [0, 2, 3, 4, 5], "kaniko": 0, "podman": 0, "allow": [0, 1, 2, 4], "far": [0, 4], "popular": 0, "develop": [0, 1, 2, 3, 4], "friendli": 0, "look": [0, 4], "my": [0, 3, 5], "tag": [0, 1, 3, 5], "kind": [0, 4, 5], "usual": [0, 1, 2, 3], "deploy": [0, 4], "deploi": 0, "helm": [0, 4], "chart": [0, 4], "f": 0, "pull": [0, 1, 2, 3, 5], "test": [0, 2, 4], "local": [0, 1, 2, 3, 5], "check": [0, 2, 3], "extract": 0, "output": [0, 3, 5], "tell": 0, "go": [0, 2, 4], "ci": [0, 1], "verify_docker_imag": 0, "sh": [0, 1, 3, 5], "onc": 0, "make": [0, 1, 2, 3, 4], "them": [0, 2, 3, 4], "avail": [0, 2, 3, 4], "compos": [0, 2, 3, 4], "ve": [0, 4], "alreadi": [0, 1, 2, 3, 4], "continu": [0, 3], "manual": [0, 2, 3, 4], "edit": 0, "yaml": [0, 3], "just": [0, 2, 4], "engin": [0, 2, 3], "simpli": [0, 3], "airflow_image_nam": 0, "point": [0, 1, 2, 3, 4], "automat": [0, 2, 3, 4], "without": [0, 2, 3, 4, 5], "deleg": 0, "To": [0, 3, 5], "open": [0, 3, 4], "search": 0, "phrase": 0, "instruct": [0, 1, 2, 3], "comment": [0, 4], "line": [0, 2], "uncom": 0, "previou": [0, 2], "store": [0, 1, 3], "under": [0, 5], "hood": 0, "target": [0, 1], "load": [0, 3], "directli": [0, 1], "cluster": [0, 3, 5], "minikub": 0, "dedic": 0, "last": [0, 3], "least": [0, 2, 3], "push": 0, "remot": 0, "expos": 0, "portabl": 0, "easiest": 0, "framework": 0, "linux": [0, 3, 5], "call": [0, 3], "essenti": 0, "pretti": [0, 4], "big": 0, "factor": 0, "our": [0, 2, 3, 4], "gcc": 0, "g": 0, "cmake": 0, "rout": 0, "instead": 0, "someth": [0, 4], "direct": 0, "whatev": 0, "Then": [0, 3, 5], "ani": [0, 1, 2, 3, 4, 5], "stuff": 0, "type": [0, 1, 2, 3], "regular": [0, 1, 2, 3, 4], "support": [0, 2, 3], "backend": [0, 2, 3], "databas": [0, 1, 3, 4], "amd64": [0, 2, 5], "platform": [0, 2], "postgr": [0, 1, 3, 4], "arm64": [0, 2, 5], "slim": [0, 1, 2, 4], "minim": [0, 4], "except": [0, 1, 4, 5], "4": [0, 3, 5], "preinstal": 0, "includ": [0, 1, 2, 3, 4, 5], "still": [0, 2, 3], "differ": [0, 2, 3, 4], "small": 0, "500": [0, 2], "mb": 0, "lot": [0, 3], "subset": 0, "becaus": [0, 1, 2, 3, 4], "core": [0, 4], "less": 0, "limit": [0, 1, 3, 4, 5], "its": [0, 3], "convent": 0, "latest": [0, 2, 4], "x": [0, 3, 5], "z": 0, "11": [0, 2], "pythonn": 0, "m": 0, "stabl": 0, "awar": [0, 3], "rememb": [0, 3, 4], "best": [0, 1, 3], "lean": 0, "experiment": [0, 1, 2, 3, 4, 5], "avoid": [0, 2], "accident": 0, "As": [0, 2], "home": [0, 1, 2, 3], "flag": [0, 1, 2, 3], "wa": [0, 2], "specifi": [0, 1, 2, 3], "effect": [0, 2], "site": [0, 2], "help": [0, 2, 3, 4], "smaller": 0, "choic": 0, "highli": [0, 1, 4], "part": 0, "It": [0, 1, 3, 5], "enough": 0, "place": [0, 1], "separ": [0, 4], "must": [0, 2, 3], "umask": [0, 2, 3], "0002": [0, 3], "accommod": [0, 2, 3], "arbitrari": 0, "Such": [0, 3], "gid": [0, 3], "prevent": [0, 4], "non": [0, 1, 2, 3, 4], "document": [0, 2, 5], "enter": [0, 2, 3], "group": [0, 2, 3], "independ": [0, 3], "fix": [0, 2], "problem": [0, 2, 3, 4], "5": [0, 3, 5], "spark": [0, 5], "java": [0, 5], "openjdk": 0, "17": [0, 2], "jre": [0, 5], "headless": 0, "java_hom": [0, 5], "usr": [0, 3, 5], "jvm": [0, 5], "were": [0, 2, 4], "given": 0, "potenti": [0, 2, 3], "newer": [0, 1, 2, 4], "fast": [0, 2], "ecosystem": [0, 2], "rust": 0, "faster": [0, 1, 2], "suppos": [0, 3], "mkdir": [0, 5], "p": [0, 3, 5], "writeabl": 0, "mpi4pi": 0, "mpi": 0, "libopenmpi": 0, "dev": [0, 1, 2], "gb": 0, "see": [0, 1, 2, 3, 4, 5], "reduct": 0, "bookworm": [0, 1, 2, 4], "seri": 0, "choos": 0, "deprec": [0, 2], "possibl": [0, 2, 3, 4], "remov": [0, 1, 2, 3, 4], "behav": 0, "slightli": 0, "each": [0, 2], "prerequisit": 0, "enabl": [0, 2, 3], "buildkit": [0, 2], "docker_buildkit": [0, 2], "buildx": [0, 2], "plugin": [0, 2, 3], "desktop": 0, "handl": [0, 2, 3, 4], "syntax": 0, "23": 0, "abov": [0, 3, 4], "known": 0, "work": [0, 2, 3, 4, 5], "download": [0, 1, 5], "flexibl": [0, 3, 4], "customiz": 0, "offici": 0, "save": 0, "present": [0, 1, 2, 3], "wish": 0, "docker_context_fil": [0, 1], "better": [0, 2], "suit": 0, "prepar": [0, 1, 4], "especi": 0, "sophist": 0, "usag": [0, 3, 5], "advantag": [0, 1], "final": [0, 1, 2, 3], "disadvantag": 0, "take": [0, 2, 4, 5], "longer": [0, 2], "quit": [0, 4], "That": [0, 4], "flow": 0, "who": [0, 2, 3], "layer": 0, "rebuild": [0, 1], "earli": 0, "stage": [0, 1], "number": [0, 2, 3, 4], "origin": [0, 2], "repositori": [0, 1, 2], "mostli": [0, 3, 4], "branch": [0, 1, 4], "commit": 0, "particularli": 0, "binari": [0, 1, 2, 4], "privat": [0, 4], "artifact": 0, "gape": 0, "side": 0, "sound": 0, "funni": 0, "doesn": 0, "t": 0, "rang": 0, "explan": 0, "predict": 0, "accompani": 0, "determin": 0, "right": [0, 2, 3], "otherwis": [0, 1, 3, 4], "declar": 0, "someon": [0, 2, 4], "account": [0, 3], "pass": [0, 1, 2, 3], "subdirectori": 0, "map": 0, "purpos": [0, 3, 4], "cat": 0, "eof": 0, "dev0": [0, 3], "export": [0, 3, 5], "c": [0, 3, 5], "bs4": 0, "sy": 0, "exit": [0, 3], "echo": [0, 3, 5], "success": [0, 3], "conf": [0, 2], "legaci": 0, "piprc": [0, 2], "authent": 0, "mechan": 0, "global": 0, "verbos": 0, "whl": [0, 1], "install_packages_from_context": [0, 1, 2], "restricted_environ": 0, "tar": [0, 1, 5], "gz": [0, 1, 5], "curl": [0, 5], "lo": 0, "http": [0, 1, 2, 5], "raw": 0, "githubusercont": 0, "com": [0, 2, 3, 5], "dest": 0, "async": [0, 1], "celeri": [0, 1, 2], "elasticsearch": [0, 1], "redi": [0, 1, 2, 3], "ssh": [0, 1], "statsd": [0, 1], "main": [0, 1, 3, 5], "sub": 0, "host": [0, 3], "Of": 0, "cours": [0, 4], "whole": [0, 3], "sent": 0, "segment": 0, "unnecessarili": 0, "increas": [0, 3], "invalid": [0, 1, 2], "break": [0, 2], "previous": [0, 1, 2], "unfortun": 0, "standalon": [0, 2], "togeth": [0, 2], "select": [0, 2, 3], "python_base_imag": [0, 1], "mssql": [0, 1, 2, 4], "hdf": 0, "oauth2client": 0, "dep": [0, 1], "additional_airflow_extra": [0, 1], "additional_python_dep": [0, 1], "additional_dev_apt_dep": [0, 1], "additional_runtime_apt_dep": [0, 1], "openmpi": 0, "874": 0, "230": 0, "recompil": 0, "thu": [0, 1], "panda": [0, 1, 2], "jdbc": 0, "By": [0, 1, 2], "airflow_use_uv": [0, 1, 2], "mariadb": [0, 1, 2, 4], "x86_64": [0, 2, 5], "install_mysql_client_typ": [0, 1, 2], "But": [0, 4], "url": [0, 1, 2, 3], "taken": [0, 1], "airflow_installation_method": [0, 1], "archiv": [0, 5], "airflow_constraints_refer": [0, 1], "v2": 0, "guarante": [0, 2], "constraints_github_repositori": 0, "potiuk": 0, "aspect": 0, "argument": [0, 2, 3], "describ": [0, 2, 3], "index": 0, "gitignor": 0, "therefor": [0, 2, 3, 4], "safe": 0, "usernam": [0, 3], "password": [0, 2, 3], "older": [0, 2], "put": [0, 3], "similar": [0, 3], "result": [0, 1, 2, 4], "could": [0, 3, 4], "inject": 0, "synchron": 0, "futur": 0, "modif": 0, "od": 0, "paramet": [0, 1, 2, 3], "proof": 0, "capabl": 0, "slack": [0, 1], "odbc": [0, 1], "azur": [0, 1, 2], "storag": [0, 5], "blob": 0, "datepars": 0, "rocketchat_api": 0, "typeform": 0, "accept_eula": 0, "msodbcsql17": 0, "unixodbc": 0, "git": [0, 4], "procp": 0, "12": [0, 2, 3], "additional_dev_apt_command": [0, 1], "microsoft": [0, 1], "asc": [0, 5], "tty": 0, "config": [0, 3], "d": [0, 2, 5], "additional_dev_apt_env": [0, 1], "additional_runtime_apt_command": [0, 1], "additional_runtime_apt_env": [0, 1], "wheel": 0, "enterpris": 0, "verifi": [0, 3, 5], "expert": 0, "disabl": [0, 1, 3], "extern": [0, 3], "intern": [0, 3], "airflow_version_specif": [0, 1], "cannot": [0, 2, 4], "subsequ": [0, 1], "mysqlclient": 0, "oracl": [0, 2], "librari": [0, 1, 2, 3, 4], "finish": [0, 3], "pre": 0, "machin": [0, 3], "submit": [0, 4, 5], "On": 0, "airflow_pre_cached_pip_packag": [0, 1], "airflow_constraints_loc": [0, 1], "your_constraint_fil": 0, "install_mysql_cli": [0, 1], "install_mssql_cli": [0, 1], "install_postgres_cli": [0, 1], "solut": 0, "solv": [0, 2, 4], "node": 0, "modul": 0, "transpar": [0, 4], "proxi": 0, "reach": [0, 2], "appli": [0, 2], "techniqu": 0, "pypirc": 0, "fulfil": 0, "criteria": 0, "abl": [0, 1, 3, 5], "box": 0, "worri": 0, "fit": 0, "rebas": 0, "whenev": [0, 3], "resolv": 0, "wide": 0, "dockerignor": [0, 1], "everyth": [0, 3], "ignor": [0, 2], "through": [0, 2, 3, 4], "exclus": [0, 4], "mani": [0, 3, 4], "gener": [0, 4], "would": [0, 2, 3, 4], "significantli": 0, "lead": [0, 2, 4], "structur": 0, "been": [0, 1, 2, 3, 4], "id": [0, 1, 2, 3], "four": [0, 4], "share": [0, 4, 5], "o": [0, 5], "airflow_pip_vers": [0, 1], "targetarch": 0, "pip_cache_epoch": [0, 1], "devel": [0, 1, 2, 3, 4, 5], "The": [1, 2, 3, 4, 5], "arg": [1, 2, 5], "docker": [1, 2, 3, 5], "when": [1, 2, 3, 4], "you": [1, 2, 3, 4, 5], "want": [1, 2, 3, 4], "custom": [1, 2, 4], "exampl": [1, 3, 4], "from": [1, 2, 3, 4, 5], "pypi": [1, 3], "packag": [1, 2, 3, 4], "valu": [1, 3], "descript": 1, "base": [1, 2, 4], "airflow_extra": 1, "tabl": [1, 3], "i": [1, 2, 3, 5], "log": [1, 3, 4, 5], "sqlite": [1, 3, 4], "airflow_user_home_dir": 1, "directori": [1, 2, 3, 4], "latest_available_in_pypi": 1, "airflow_uv_vers": 1, "uv": [1, 2], "uv_http_timeout": 1, "300": 1, "timeout": 1, "request": [1, 2, 4, 5], "additional_pip_install_flag": [1, 2], "reinstal": 1, "itself": [1, 4], "pip_progress_bar": 1, "progress": 1, "bar": 1, "airflow_uid": [1, 3, 5], "50000": [1, 3], "uid": [1, 3], "airflow_constraint": 1, "constraint": [1, 2], "provid": [1, 2, 3, 4, 5], "github": [1, 2, 4], "file": [1, 2, 3, 5], "auto": [1, 2], "detect": [1, 2, 3], "had": [1, 2], "airflow_gid": [1, 2], "did": [1, 4], "ad": [1, 2], "confus": 1, "dockerfil": [1, 4, 5], "aiobotocor": 1, "amazon": 1, "cncf": 1, "io": [1, 5], "ftp": 1, "googl": 1, "auth": 1, "graphviz": 1, "grpc": 1, "hashicorp": 1, "ldap": 1, "mysql": [1, 2, 3, 4], "openlineag": 1, "sendgrid": 1, "sftp": 1, "snowflak": [1, 2], "need": [1, 2, 3, 4, 5], "control": [1, 2, 3, 4], "more": [1, 2, 3, 4, 5], "upgrade_invalidation_str": 1, "set": [1, 2, 3, 4], "random": [1, 3], "reus": 1, "extend": [1, 2, 3, 4], "dev_apt_command": 1, "apt": [1, 2, 5], "start": [1, 2, 3, 4], "dev_apt_dep": 1, "install_os_depend": 1, "variabl": [1, 2, 3, 4], "defin": 1, "runtime_apt_command": 1, "runtime_apt_dep": 1, "client": [1, 2, 4], "regardless": 1, "arm": [1, 2], "own": [1, 3, 4], "sourc": [1, 2, 5], "environ": [1, 2, 3, 4, 5], "requir": [1, 2, 4, 5], "high": 1, "secur": [1, 2, 3], "restrict": 1, "airflow_sources_from": 1, "airflow_sources_to": 1, "overrid": 1, "note": [1, 2, 3, 4], "context": [1, 2], "insid": [1, 3], "speed": [1, 2], "increment": 1, "pyproject": 1, "toml": 1, "chang": [1, 3, 4], "airflow_branch": 1, "initi": [1, 2, 3], "airflow_repo": 1, "new": [1, 2, 3, 4, 5], "us": [2, 3, 4, 5], "build": [2, 3, 4, 5], "introduc": [2, 3], "concern": 2, "dockerhub": [2, 4], "free": [2, 4], "e": [2, 5], "newest": 2, "refer": [2, 3, 4], "easi": [2, 4], "behaviour": 2, "pip_us": 2, "virtual_env": 2, "instal": [2, 4], "treat": [2, 3], "virtual": 2, "unlik": 2, "seen": [2, 4], "worker": [2, 3], "moment": [2, 3, 4], "pip": 2, "perform": [2, 3], "txt": 2, "add": [2, 3, 4, 5], "libev": 2, "cassandra": 2, "driver": 2, "robust": 2, "event": [2, 3], "gosu": 2, "reli": 2, "vulner": [2, 3], "link": 2, "against": [2, 3], "smtp": 2, "discrep": 2, "x86": 2, "compil": 2, "libxmlsec1": 2, "prod": 2, "saml": 2, "debian": [2, 4], "bullsey": 2, "caus": [2, 4], "advis": [2, 3], "drop": [2, 3], "vast": 2, "major": 2, "anyth": 2, "A": [2, 3], "quick": 2, "guid": [2, 3], "bump": [2, 4], "24": 2, "cach": [2, 3], "ensur": 2, "libgeo": 2, "bigqueri": 2, "path": [2, 5], "buster": 2, "life": 2, "optim": [2, 4], "multi": 2, "maco": 2, "m1": 2, "unifi": 2, "install_from_pypi": 2, "install_from_docker_context_fil": 2, "artifacthub": 2, "label": 2, "discoveri": 2, "text": 2, "busi": 2, "workaround": 2, "libstdcpp": 2, "5000": 2, "warn": [2, 3], "warm": [2, 3], "shutdown": [2, 3], "signal": 2, "propag": 2, "oauth": 2, "sign": 2, "feb": 2, "2022": 2, "18": [2, 3], "subtl": 2, "due": 2, "detail": [2, 3, 4], "issu": [2, 3, 4], "valid": 2, "refresh": 2, "sinc": [2, 3, 4], "port": [2, 3], "connect": 2, "creation": [2, 3], "user_cr": 2, "wait": [2, 4], "flower": 2, "upgradedb": 2, "failur": 2, "lack": 2, "_pip_additional_requir": [2, 3], "unset": 2, "pythonvirtualenv": 2, "regener": 2, "hardli": 2, "miss": 2, "correct": 2, "pythonpath": 2, "openshift": [2, 3], "anywai": 2, "cryptic": 2, "002": 2, "skip": 2, "db": [2, 4], "connection_check_max_count": [2, 3], "equal": [2, 3], "revers": 2, "ip": 2, "lookup": 2, "long": 2, "delai": 2, "misconfigur": 2, "amqp": [2, 3], "broker": 2, "exec": [2, 3], "bash": [2, 3, 5], "usabl": 2, "again": [2, 4], "assur": 2, "100": 2, "affect": [2, 4], "date": 2, "june": 2, "authlib": 2, "15": 2, "flask": 2, "app": 2, "builder": 2, "24516": 2, "jan": 2, "20912": 2, "16": [2, 3, 5], "dec": 2, "2023": 2, "expiri": 2, "fiasco": 2, "36231": 2, "mar": 2, "2024": 2, "37748": 2, "37701": 2, "action": [3, 4], "trigger": 3, "_airflow": 3, "distinguish": 3, "shift": 3, "randomli": 3, "assign": 3, "utilis": 3, "mount": 3, "dag": [3, 4], "variou": [3, 4], "entri": 3, "quickstart": 3, "project": [3, 4], "passwd": 3, "3rd": [3, 4], "parti": [3, 4], "write": [3, 5], "certain": 3, "access": [3, 4], "guidelin": 3, "concept": [3, 5], "writabl": 3, "volum": 3, "front": 3, "do_someth": 3, "do_otherth": 3, "stabil": 3, "is_al": 3, "statement": 3, "loop": 3, "until": 3, "tri": 3, "sleep": 3, "connection_check_sleep_tim": 3, "between": 3, "celeryexecutor": 3, "schema": 3, "establish": 3, "scheme": 3, "rabbitmq": 3, "5672": 3, "6379": 3, "5432": 3, "3306": 3, "deriv": 3, "configur": 3, "shell": [3, 5], "l": 3, "la": 3, "total": 3, "drwxr": 3, "xr": 3, "4096": 3, "jun": 3, "print": 3, "rest": 3, "webserv": 3, "h": 3, "group_or_command": 3, "posit": 3, "compon": [3, 4, 5], "view": 3, "job": 3, "kubernetesexecutor": 3, "pool": 3, "displai": 3, "role": 3, "cheat": 3, "sheet": 3, "info": 3, "current": [3, 4], "kerbero": 3, "ticket": 3, "renew": 3, "dump": 3, "rotat": 3, "fernet": 3, "encrypt": 3, "credenti": 3, "instanc": 3, "sync": 3, "perm": 3, "permiss": [3, 5], "dumb": 3, "init": 3, "proper": 3, "next": 3, "my_entrypoint": 3, "bin": [3, 5], "modifi": [3, 4], "fly": 3, "max": 3, "count": 3, "bit": 3, "useless": 3, "reader": 3, "secret": 3, "anyon": 3, "yet": [3, 4], "emb": 3, "setup": 3, "my_after_entrypoint_script": 3, "reap": 3, "child": 3, "handler": 3, "kill": 3, "gracefulli": 3, "termin": 3, "dumb_init_setsid": 3, "singl": 3, "summar": 3, "spawn": 3, "receiv": 3, "offlin": 3, "mode": 3, "overhead": 3, "realiz": 3, "mainten": 3, "embed": [3, 4], "_airflow_db_migr": 3, "migrat": 3, "immedi": [3, 4], "intend": 3, "never": [3, 4], "concurr": 3, "_airflow_www_user_cr": 3, "_airflow_www_user_password": 3, "_airflow_www_user_password_cmd": 3, "_cmd": 3, "content": 3, "evalu": 3, "none": 3, "_airflow_www_user_usernam": 3, "firstnam": 3, "_airflow_www_user_firstnam": 3, "lastnam": 3, "_airflow_www_user_lastnam": 3, "email": [3, 4], "airflowadmin": 3, "_airflow_www_user_email": 3, "_airflow_www_user_rol": 3, "8080": 3, "forward": 3, "debug": 3, "trick": 3, "ever": 3, "deliber": 3, "chose": 3, "inher": 3, "relat": 3, "liter": 3, "restart": 3, "k8": 3, "seriou": 3, "brought": 3, "down": 3, "servic": 3, "hand": 3, "At": 3, "weekend": 3, "holidai": 3, "bring": [3, 4], "infam": 3, "leftpad": 3, "fulli": 3, "protect": 3, "immut": 3, "bake": 3, "addition": 3, "slow": 3, "huge": 3, "6": [3, 5], "charset": 3, "normal": [3, 4], "eas": 4, "readi": 4, "pythonx": 4, "spin": 4, "half": 4, "bare": 4, "candid": 4, "mainli": 4, "circumst": 4, "import": [4, 5], "design": 4, "around": 4, "applic": [4, 5], "hear": 4, "scanner": 4, "expect": 4, "precis": 4, "NOT": 4, "over": 4, "recent": 4, "send": 4, "ask": 4, "care": 4, "undisclos": 4, "report": [4, 5], "exploit": 4, "nice": 4, "polici": 4, "reproduc": 4, "scenario": 4, "ONE": 4, "per": 4, "reject": 4, "harder": 4, "bug": 4, "possibli": 4, "greatest": 4, "strategi": 4, "regularli": 4, "inspir": 4, "research": 4, "impact": 4, "public": [4, 5], "discuss": 4, "indic": 4, "publicli": 4, "cve": 4, "explor": 4, "valuabl": 4, "contribut": [4, 5], "appreci": 4, "commerci": 4, "volunt": 4, "compani": 4, "spend": 4, "skill": 4, "fantast": 4, "mention": 4, "ideal": 4, "strong": 4, "suggest": 4, "post": 4, "bulk": 4, "meaning": 4, "thread": 4, "past": 4, "silenc": 4, "selfish": 4, "tap": 4, "focu": 4, "particular": 4, "analyz": 4, "exactli": 4, "homework": 4, "great": 4, "revert": 4, "mail": 4, "serv": 4, "pr": 4, "mayb": 4, "altogeth": 4, "mitig": 4, "nor": 4, "distribut": [4, 5], "mai": [4, 5], "interest": [4, 5], "launch": 4, "imag": 5, "encourag": 5, "prove": 5, "member": 5, "captur": 5, "gkestartpodoper": 5, "dataflowstartsqljoboper": 5, "gcloud": 5, "bashoper": 5, "shown": 5, "licens": 5, "softwar": 5, "foundat": 5, "asf": 5, "contributor": 5, "agreement": 5, "notic": 5, "regard": 5, "copyright": 5, "ownership": 5, "complianc": 5, "obtain": 5, "www": 5, "org": 5, "unless": 5, "law": 5, "agre": 5, "AS": 5, "basi": 5, "warranti": 5, "OR": 5, "condit": 5, "OF": 5, "express": 5, "impli": 5, "languag": 5, "govern": 5, "base_airflow_imag": 5, "pipefail": 5, "cloud_sdk_vers": 5, "322": 5, "gcloud_hom": 5, "download_url": 5, "dl": 5, "cloudsdk": 5, "channel": 5, "rapid": 5, "tmp_dir": 5, "mktemp": 5, "fl": 5, "xzf": 5, "strip": 5, "alpha": 5, "beta": 5, "kubectl": 5, "quiet": 5, "backup": 5, "airflow": 5, "frequent": 5, "world": 5, "hive": 5, "connector": 5, "pv": 5, "man": 5, "man1": 5, "man7": 5, "fssl": 5, "adoptopenjdk": 5, "jfrog": 5, "api": 5, "gpg": 5, "deb": 5, "lsb_releas": 5, "hotspot": 5, "jar": 5, "hadoop_vers": 5, "hadoop_hom": 5, "hadoop_conf_dir": 5, "multihomed_network": 5, "hadoop_url": 5, "dist": 5, "repo": 5, "fsl": 5, "tmp": 5, "xvf": 5, "ln": 5, "data": 5, "hive_vers": 5, "7": 5, "hive_hom": 5, "hive_conf_dir": 5, "hive_url": 5, "xf": 5, "gc": 5, "dataproc": 5, "gcs_variant": 5, "hadoop2": 5, "gcs_version": 5, "gcs_jar_path": 5, "gcs_jar_url": 5, "googleapi": 5, "hadoop_classpath": 5, "pipelin": 5, "beamrungopipelineoper": 5, "go_vers": 5, "go_install_dir": 5, "unam": 5, "arch": 5, "els": 5, "fi": 5, "goroot": 5}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"build": [0, 1], "imag": [0, 1, 2, 3, 4], "quick": [0, 3], "start": 0, "scenario": 0, "extend": 0, "ad": [0, 3], "new": 0, "apt": 0, "packag": 0, "pypi": 0, "individu": 0, "from": 0, "requir": [0, 3], "txt": 0, "embed": 0, "dag": 0, "add": 0, "airflow": [0, 1, 2, 3, 4], "configur": 0, "environ": 0, "variabl": 0, "v": 0, "custom": [0, 3], "why": 0, "primer": 0, "base": 0, "import": 0, "note": 0, "exampl": 0, "set": 0, "own": 0, "provid": 0, "constraint": 0, "uv": 0, "when": 0, "writabl": 0, "directori": 0, "i": [0, 4], "need": 0, "you": 0, "compil": 0, "want": 0, "emb": 0, "chang": [0, 2], "us": [0, 1], "docker": [0, 4], "context": 0, "file": 0, "optim": [0, 1], "debian": 0, "bullsey": 0, "prod": 0, "instal": [0, 1, 3, 5], "mysql": 0, "client": 0, "github": 0, "sourc": 0, "secur": [0, 4], "restrict": 0, "modifi": 0, "dockerfil": [0, 2], "more": 0, "detail": 0, "arg": 0, "refer": [0, 1], "The": 0, "architectur": 0, "pip": [0, 1], "cach": [0, 1], "argument": 1, "basic": 1, "option": [1, 3], "differ": 1, "method": 1, "pre": 1, "depend": 1, "changelog": 2, "2": 2, "9": 2, "8": 2, "7": 2, "6": 2, "5": 2, "4": 2, "3": 2, "1": 2, "0": 2, "after": 2, "publish": 2, "entrypoint": 3, "allow": 3, "arbitrari": 3, "user": 3, "run": 3, "contain": 3, "wait": 3, "db": 3, "connect": 3, "celeri": 3, "broker": 3, "execut": 3, "command": 3, "code": 3, "befor": 3, "behaviour": 3, "signal": 3, "propag": 3, "addit": 3, "test": 3, "upgrad": 3, "creat": 3, "admin": 3, "apach": [4, 5], "fix": 4, "releas": 4, "time": 4, "what": 4, "should": 4, "do": 4, "my": 4, "scan": 4, "show": 4, "critic": 4, "high": 4, "vulner": 4, "support": 4, "intel": 4, "platform": 4, "x86_64": 4, "arm": 4, "aarch64": 4, "usag": 4, "recip": 5, "googl": 5, "cloud": 5, "sdk": 5, "hadoop": 5, "stack": 5, "beam": 5, "go": 5}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx.ext.intersphinx": 1, "sphinx": 57}, "alltitles": {"Building the image": [[0, "building-the-image"]], "Quick start scenarios of image extending": [[0, "quick-start-scenarios-of-image-extending"]], "Adding new apt package": [[0, "adding-new-apt-package"]], "Adding new PyPI packages individually": [[0, "adding-new-pypi-packages-individually"]], "Adding packages from requirements.txt": [[0, "adding-packages-from-requirements-txt"]], "Embedding DAGs": [[0, "embedding-dags"]], "Add Airflow configuration with environment variables": [[0, "add-airflow-configuration-with-environment-variables"]], "Extending vs. customizing the image": [[0, "extending-vs-customizing-the-image"]], "Why customizing the image ?": [[0, "why-customizing-the-image"]], "Building images primer": [[0, "building-images-primer"]], "Extending the image": [[0, "extending-the-image"]], "Base images": [[0, "base-images"]], "Important notes for the base images": [[0, "important-notes-for-the-base-images"]], "Examples of image extending": [[0, "examples-of-image-extending"]], "Example of setting own Airflow Provider packages": [[0, "example-of-setting-own-airflow-provider-packages"]], "Example of adding Airflow Provider package and apt package": [[0, "example-of-adding-airflow-provider-package-and-apt-package"]], "Example of adding apt package": [[0, "example-of-adding-apt-package"]], "Example of adding PyPI package": [[0, "example-of-adding-pypi-package"]], "Example of adding PyPI package with constraints": [[0, "example-of-adding-pypi-package-with-constraints"]], "Example of adding PyPI package with uv": [[0, "example-of-adding-pypi-package-with-uv"]], "Example of adding packages from requirements.txt": [[0, "example-of-adding-packages-from-requirements-txt"]], "Example when writable directory is needed": [[0, "example-when-writable-directory-is-needed"]], "Example when you add packages requiring compilation": [[0, "example-when-you-add-packages-requiring-compilation"]], "Example when you want to embed DAGs": [[0, "example-when-you-want-to-embed-dags"]], "Example of changing airflow configuration using environment variables": [[0, "example-of-changing-airflow-configuration-using-environment-variables"]], "Customizing the image": [[0, "customizing-the-image"]], "Using docker-context-files": [[0, "using-docker-context-files"]], "Examples of image customizing": [[0, "examples-of-image-customizing"]], "Building from PyPI packages": [[0, "building-from-pypi-packages"]], "Building optimized images": [[0, "building-optimized-images"]], "Building Debian Bullseye-based images": [[0, "building-debian-bullseye-based-images"]], "Building prod images using UV as the package installer": [[0, "building-prod-images-using-uv-as-the-package-installer"]], "Building images with MySQL client": [[0, "building-images-with-mysql-client"]], "Building from GitHub": [[0, "building-from-github"]], "Using custom installation sources": [[0, "using-custom-installation-sources"]], "Build images in security restricted environments": [[0, "build-images-in-security-restricted-environments"]], "Modifying the Dockerfile": [[0, "modifying-the-dockerfile"]], "More details": [[0, "more-details"]], "Build Args reference": [[0, "build-args-reference"]], "The architecture of the images": [[0, "the-architecture-of-the-images"]], "Pip packages caching": [[0, "pip-packages-caching"]], "Image build arguments reference": [[1, "image-build-arguments-reference"]], "Basic arguments": [[1, "basic-arguments"]], "Image optimization options": [[1, "image-optimization-options"]], "Installing Airflow using different methods": [[1, "installing-airflow-using-different-methods"]], "Pre-caching PIP dependencies": [[1, "pre-caching-pip-dependencies"]], "Dockerfile Changelog": [[2, "dockerfile-changelog"]], "Airflow 2.9": [[2, "airflow-2-9"]], "Airflow 2.8": [[2, "airflow-2-8"]], "Airflow 2.7": [[2, "airflow-2-7"]], "Airflow 2.6": [[2, "airflow-2-6"]], "Airflow 2.5": [[2, "airflow-2-5"]], "Airflow 2.4": [[2, "airflow-2-4"]], "Airflow 2.3": [[2, "airflow-2-3"]], "Airflow 2.2": [[2, "airflow-2-2"]], "Airflow 2.1": [[2, "airflow-2-1"]], "Airflow 2.0": [[2, "airflow-2-0"]], "Changes after publishing the images": [[2, "changes-after-publishing-the-images"]], "Entrypoint": [[3, "entrypoint"]], "Allowing arbitrary user to run the container": [[3, "allowing-arbitrary-user-to-run-the-container"]], "Waits for Airflow DB connection": [[3, "waits-for-airflow-db-connection"]], "Waits for Celery broker connection": [[3, "waits-for-celery-broker-connection"]], "Executing commands": [[3, "executing-commands"]], "Execute custom code before the Airflow entrypoint": [[3, "execute-custom-code-before-the-airflow-entrypoint"]], "Adding custom image behaviour": [[3, "adding-custom-image-behaviour"]], "Signal propagation": [[3, "signal-propagation"]], "Additional quick test options": [[3, "additional-quick-test-options"]], "Upgrading Airflow DB": [[3, "upgrading-airflow-db"]], "Creating admin user": [[3, "creating-admin-user"]], "Installing additional requirements": [[3, "installing-additional-requirements"]], "Docker Image for Apache Airflow": [[4, "docker-image-for-apache-airflow"]], "Fixing images at release time": [[4, "fixing-images-at-release-time"]], "What should I do if my security scan shows critical and high vulnerabilities in the image?": [[4, "what-should-i-do-if-my-security-scan-shows-critical-and-high-vulnerabilities-in-the-image"]], "Support": [[4, "support"]], "Intel platform (x86_64)": [[4, "intel-platform-x86-64"]], "ARM platform (aarch64)": [[4, "arm-platform-aarch64"]], "Usage": [[4, "usage"]], "Recipes": [[5, "recipes"]], "Google Cloud SDK installation": [[5, "google-cloud-sdk-installation"]], "Apache Hadoop Stack installation": [[5, "apache-hadoop-stack-installation"]], "Apache Beam Go Stack installation": [[5, "apache-beam-go-stack-installation"]]}, "indexentries": {"airflow__{section}__{key}": [[0, "index-0"]], "environment variable": [[0, "index-0"], [3, "index-0"], [3, "index-1"], [3, "index-2"], [3, "index-3"], [3, "index-4"], [3, "index-5"], [3, "index-6"], [4, "index-0"], [4, "index-1"]], "connection_check_max_count": [[3, "index-0"], [3, "index-2"]], "connection_check_sleep_time": [[3, "index-1"], [3, "index-3"]], "_airflow_db_migrate": [[3, "index-4"]], "_airflow_www_user_create": [[3, "index-5"]], "_airflow_www_user_password_cmd": [[3, "index-6"]], "airflow_home": [[4, "index-0"]], "airflow__database__sql_alchemy_conn": [[4, "index-1"]]}})