| |
| <!DOCTYPE html> |
| |
| |
| <html lang="en" data-content_root="../../" > |
| |
| <head> |
| <meta charset="utf-8" /> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> |
| |
| <title>Running Docker Builds — Apache Arrow v23.0.0.dev39</title> |
| |
| |
| |
| <script data-cfasync="false"> |
| document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; |
| document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; |
| </script> |
| <!-- |
| this give us a css class that will be invisible only if js is disabled |
| --> |
| <noscript> |
| <style> |
| .pst-js-only { display: none !important; } |
| |
| </style> |
| </noscript> |
| |
| <!-- Loaded before other Sphinx assets --> |
| <link href="../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> |
| <link href="../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> |
| |
| <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=03e43079" /> |
| <link rel="stylesheet" type="text/css" href="../../_static/copybutton.css?v=76b2166b" /> |
| <link rel="stylesheet" type="text/css" href="../../_static/sphinx-design.min.css?v=95c83b7e" /> |
| <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=8dcd28dc" /> |
| |
| <!-- So that users can add custom icons --> |
| <script src="../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> |
| <!-- Pre-loaded scripts that we'll load fully later --> |
| <link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> |
| <link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> |
| |
| <script src="../../_static/documentation_options.js?v=d3a452a1"></script> |
| <script src="../../_static/doctools.js?v=9bcbadda"></script> |
| <script src="../../_static/sphinx_highlight.js?v=dc90522c"></script> |
| <script src="../../_static/clipboard.min.js?v=a7894cd8"></script> |
| <script src="../../_static/copybutton.js?v=3bb21c8c"></script> |
| <script src="../../_static/design-tabs.js?v=f930bc37"></script> |
| <script>DOCUMENTATION_OPTIONS.pagename = 'developers/continuous_integration/docker';</script> |
| <script> |
| DOCUMENTATION_OPTIONS.theme_version = '0.16.1'; |
| DOCUMENTATION_OPTIONS.theme_switcher_json_url = '/docs/_static/versions.json'; |
| DOCUMENTATION_OPTIONS.theme_switcher_version_match = 'dev/'; |
| DOCUMENTATION_OPTIONS.show_version_warning_banner = |
| true; |
| </script> |
| <link rel="canonical" href="https://arrow.apache.org/docs/developers/continuous_integration/docker.html" /> |
| <link rel="icon" href="../../_static/favicon.ico"/> |
| <link rel="index" title="Index" href="../../genindex.html" /> |
| <link rel="search" title="Search" href="../../search.html" /> |
| <link rel="next" title="Daily Development using Archery" href="archery.html" /> |
| <link rel="prev" title="Continuous Integration" href="overview.html" /> |
| |
| <meta name="viewport" content="width=device-width, initial-scale=1"/> |
| <meta name="docsearch:language" content="en"/> |
| <meta name="docsearch:version" content="23.0.0.dev39" /> |
| |
| <!-- Matomo --> |
| <script> |
| var _paq = window._paq = window._paq || []; |
| /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ |
| /* We explicitly disable cookie tracking to avoid privacy issues */ |
| _paq.push(['disableCookies']); |
| _paq.push(['trackPageView']); |
| _paq.push(['enableLinkTracking']); |
| (function() { |
| var u="https://analytics.apache.org/"; |
| _paq.push(['setTrackerUrl', u+'matomo.php']); |
| _paq.push(['setSiteId', '20']); |
| var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; |
| g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); |
| })(); |
| </script> |
| <!-- End Matomo Code --> |
| |
| </head> |
| |
| |
| <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> |
| |
| |
| |
| <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> |
| |
| <div id="pst-scroll-pixel-helper"></div> |
| |
| <button type="button" class="btn rounded-pill" id="pst-back-to-top"> |
| <i class="fa-solid fa-arrow-up"></i>Back to top</button> |
| |
| |
| <dialog id="pst-search-dialog"> |
| |
| <form class="bd-search d-flex align-items-center" |
| action="../../search.html" |
| method="get"> |
| <i class="fa-solid fa-magnifying-glass"></i> |
| <input type="search" |
| class="form-control" |
| name="q" |
| placeholder="Search the docs ..." |
| aria-label="Search the docs ..." |
| autocomplete="off" |
| autocorrect="off" |
| autocapitalize="off" |
| spellcheck="false"/> |
| <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> |
| </form> |
| </dialog> |
| |
| <div class="pst-async-banner-revealer d-none"> |
| <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> |
| </div> |
| |
| |
| <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> |
| <div class="bd-header__inner bd-page-width"> |
| <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> |
| <span class="fa-solid fa-bars"></span> |
| </button> |
| |
| |
| <div class=" navbar-header-items__start"> |
| |
| <div class="navbar-item"> |
| |
| |
| |
| |
| |
| <a class="navbar-brand logo" href="../../index.html"> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <img src="../../_static/arrow.png" class="logo__image only-light" alt="Apache Arrow v23.0.0.dev39 - Home"/> |
| <img src="../../_static/arrow-dark.png" class="logo__image only-dark pst-js-only" alt="Apache Arrow v23.0.0.dev39 - Home"/> |
| |
| |
| </a></div> |
| |
| </div> |
| |
| <div class=" navbar-header-items"> |
| |
| <div class="me-auto navbar-header-items__center"> |
| |
| <div class="navbar-item"> |
| <nav> |
| <ul class="bd-navbar-elements navbar-nav"> |
| |
| <li class="nav-item "> |
| <a class="nav-link nav-internal" href="../../format/index.html"> |
| Specifications |
| </a> |
| </li> |
| |
| |
| <li class="nav-item current active"> |
| <a class="nav-link nav-internal" href="../index.html"> |
| Development |
| </a> |
| </li> |
| |
| |
| <li class="nav-item "> |
| <a class="nav-link nav-internal" href="../../implementations.html"> |
| Implementations |
| </a> |
| </li> |
| |
| </ul> |
| </nav></div> |
| |
| </div> |
| |
| |
| <div class="navbar-header-items__end"> |
| |
| <div class="navbar-item navbar-persistent--container"> |
| |
| |
| <button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> |
| <i class="fa-solid fa-magnifying-glass"></i> |
| <span class="search-button__default-text">Search</span> |
| <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> |
| </button> |
| </div> |
| |
| |
| <div class="navbar-item"><div class="kapa-ai-bot"> |
| <script |
| async |
| src="https://widget.kapa.ai/kapa-widget.bundle.js" |
| data-website-id="9db461d5-ac77-4b3f-a5c5-75efa78339d2" |
| data-project-name="Apache Arrow" |
| data-project-color="#000000" |
| data-project-logo="https://arrow.apache.org/img/arrow-logo_chevrons_white-txt_black-bg.png" |
| data-modal-disclaimer="This is a custom LLM with access to all [Arrow documentation](https://arrow.apache.org/docs/). Please include the language you are using in your question, e.g., Python, C++, Java, R, etc." |
| data-consent-required="true" |
| data-user-analytics-cookie-enabled="false" |
| data-consent-screen-disclaimer="By clicking "I agree, let's chat", you consent to the use of the AI assistant in accordance with kapa.ai's [Privacy Policy](https://www.kapa.ai/content/privacy-policy). This service uses reCAPTCHA, which requires your consent to Google's [Privacy Policy](https://policies.google.com/privacy) and [Terms of Service](https://policies.google.com/terms). By proceeding, you explicitly agree to both kapa.ai's and Google's privacy policies." |
| ></script> |
| |
| </div> |
| |
| </div> |
| |
| <div class="navbar-item"> |
| <div class="version-switcher__container dropdown pst-js-only"> |
| <button id="pst-version-switcher-button-2" |
| type="button" |
| class="version-switcher__button btn btn-sm dropdown-toggle" |
| data-bs-toggle="dropdown" |
| aria-haspopup="listbox" |
| aria-controls="pst-version-switcher-list-2" |
| aria-label="Version switcher list" |
| > |
| Choose version <!-- this text may get changed later by javascript --> |
| <span class="caret"></span> |
| </button> |
| <div id="pst-version-switcher-list-2" |
| class="version-switcher__menu dropdown-menu list-group-flush py-0" |
| role="listbox" aria-labelledby="pst-version-switcher-button-2"> |
| <!-- dropdown will be populated by javascript on page load --> |
| </div> |
| </div></div> |
| |
| <div class="navbar-item"> |
| |
| <button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> |
| <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> |
| <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> |
| <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> |
| </button></div> |
| |
| <div class="navbar-item"><ul class="navbar-icon-links" |
| aria-label="Icon Links"> |
| <li class="nav-item"> |
| |
| |
| |
| |
| |
| |
| |
| |
| <a href="https://github.com/apache/arrow" title="GitHub" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-square-github fa-lg" aria-hidden="true"></i> |
| <span class="sr-only">GitHub</span></a> |
| </li> |
| <li class="nav-item"> |
| |
| |
| |
| |
| |
| |
| |
| |
| <a href="https://www.linkedin.com/company/apache-arrow/" title="LinkedIn" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-linkedin fa-lg" aria-hidden="true"></i> |
| <span class="sr-only">LinkedIn</span></a> |
| </li> |
| <li class="nav-item"> |
| |
| |
| |
| |
| |
| |
| |
| |
| <a href="https://bsky.app/profile/arrow.apache.org" title="BlueSky" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-bluesky fa-lg" aria-hidden="true"></i> |
| <span class="sr-only">BlueSky</span></a> |
| </li> |
| </ul></div> |
| |
| </div> |
| |
| </div> |
| |
| |
| <div class="navbar-persistent--mobile"> |
| |
| <button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> |
| <i class="fa-solid fa-magnifying-glass"></i> |
| <span class="search-button__default-text">Search</span> |
| <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> |
| </button> |
| </div> |
| |
| |
| |
| <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> |
| <span class="fa-solid fa-outdent"></span> |
| </button> |
| |
| </div> |
| |
| </header> |
| |
| |
| <div class="bd-container"> |
| <div class="bd-container__inner bd-page-width"> |
| |
| |
| |
| <dialog id="pst-primary-sidebar-modal"></dialog> |
| <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> |
| |
| |
| |
| <div class="sidebar-header-items sidebar-primary__section"> |
| |
| |
| <div class="sidebar-header-items__center"> |
| |
| |
| |
| <div class="navbar-item"> |
| <nav> |
| <ul class="bd-navbar-elements navbar-nav"> |
| |
| <li class="nav-item "> |
| <a class="nav-link nav-internal" href="../../format/index.html"> |
| Specifications |
| </a> |
| </li> |
| |
| |
| <li class="nav-item current active"> |
| <a class="nav-link nav-internal" href="../index.html"> |
| Development |
| </a> |
| </li> |
| |
| |
| <li class="nav-item "> |
| <a class="nav-link nav-internal" href="../../implementations.html"> |
| Implementations |
| </a> |
| </li> |
| |
| </ul> |
| </nav></div> |
| |
| |
| </div> |
| |
| |
| |
| <div class="sidebar-header-items__end"> |
| |
| <div class="navbar-item"><div class="kapa-ai-bot"> |
| <script |
| async |
| src="https://widget.kapa.ai/kapa-widget.bundle.js" |
| data-website-id="9db461d5-ac77-4b3f-a5c5-75efa78339d2" |
| data-project-name="Apache Arrow" |
| data-project-color="#000000" |
| data-project-logo="https://arrow.apache.org/img/arrow-logo_chevrons_white-txt_black-bg.png" |
| data-modal-disclaimer="This is a custom LLM with access to all [Arrow documentation](https://arrow.apache.org/docs/). Please include the language you are using in your question, e.g., Python, C++, Java, R, etc." |
| data-consent-required="true" |
| data-user-analytics-cookie-enabled="false" |
| data-consent-screen-disclaimer="By clicking "I agree, let's chat", you consent to the use of the AI assistant in accordance with kapa.ai's [Privacy Policy](https://www.kapa.ai/content/privacy-policy). This service uses reCAPTCHA, which requires your consent to Google's [Privacy Policy](https://policies.google.com/privacy) and [Terms of Service](https://policies.google.com/terms). By proceeding, you explicitly agree to both kapa.ai's and Google's privacy policies." |
| ></script> |
| |
| </div> |
| |
| </div> |
| |
| <div class="navbar-item"> |
| <div class="version-switcher__container dropdown pst-js-only"> |
| <button id="pst-version-switcher-button-3" |
| type="button" |
| class="version-switcher__button btn btn-sm dropdown-toggle" |
| data-bs-toggle="dropdown" |
| aria-haspopup="listbox" |
| aria-controls="pst-version-switcher-list-3" |
| aria-label="Version switcher list" |
| > |
| Choose version <!-- this text may get changed later by javascript --> |
| <span class="caret"></span> |
| </button> |
| <div id="pst-version-switcher-list-3" |
| class="version-switcher__menu dropdown-menu list-group-flush py-0" |
| role="listbox" aria-labelledby="pst-version-switcher-button-3"> |
| <!-- dropdown will be populated by javascript on page load --> |
| </div> |
| </div></div> |
| |
| <div class="navbar-item"> |
| |
| <button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> |
| <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> |
| <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> |
| <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> |
| </button></div> |
| |
| <div class="navbar-item"><ul class="navbar-icon-links" |
| aria-label="Icon Links"> |
| <li class="nav-item"> |
| |
| |
| |
| |
| |
| |
| |
| |
| <a href="https://github.com/apache/arrow" title="GitHub" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-square-github fa-lg" aria-hidden="true"></i> |
| <span class="sr-only">GitHub</span></a> |
| </li> |
| <li class="nav-item"> |
| |
| |
| |
| |
| |
| |
| |
| |
| <a href="https://www.linkedin.com/company/apache-arrow/" title="LinkedIn" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-linkedin fa-lg" aria-hidden="true"></i> |
| <span class="sr-only">LinkedIn</span></a> |
| </li> |
| <li class="nav-item"> |
| |
| |
| |
| |
| |
| |
| |
| |
| <a href="https://bsky.app/profile/arrow.apache.org" title="BlueSky" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-bluesky fa-lg" aria-hidden="true"></i> |
| <span class="sr-only">BlueSky</span></a> |
| </li> |
| </ul></div> |
| |
| </div> |
| |
| </div> |
| |
| <div class="sidebar-primary-items__start sidebar-primary__section"> |
| <div class="sidebar-primary-item"> |
| <nav class="bd-docs-nav bd-links" |
| aria-label="Section Navigation"> |
| <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> |
| <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> |
| <li class="toctree-l1"><a class="reference internal" href="../bug_reports.html">Bug reports and feature requests</a></li> |
| <li class="toctree-l1 has-children"><a class="reference internal" href="../guide/index.html">New Contributor’s Guide</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l2"><a class="reference internal" href="../guide/architectural_overview.html">Architectural Overview</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../guide/communication.html">Communication</a></li> |
| <li class="toctree-l2 has-children"><a class="reference internal" href="../guide/step_by_step/index.html">Steps in making your first PR</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l3"><a class="reference internal" href="../guide/step_by_step/set_up.html">Set up</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../guide/step_by_step/building.html">Building the Arrow libraries 🏋🏿♀️</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../guide/step_by_step/finding_issues.html">Finding good first issues 🔎</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../guide/step_by_step/arrow_codebase.html">Working on the Arrow codebase 🧐</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../guide/step_by_step/testing.html">Testing 🧪</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../guide/step_by_step/styling.html">Styling 😎</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../guide/step_by_step/pr_lifecycle.html">Lifecycle of a pull request</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l2"><a class="reference internal" href="../guide/documentation.html">Helping with documentation</a></li> |
| <li class="toctree-l2 has-children"><a class="reference internal" href="../guide/tutorials/index.html">Tutorials</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l3"><a class="reference internal" href="../guide/tutorials/python_tutorial.html">Python tutorial</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../guide/tutorials/r_tutorial.html">R tutorials</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l2"><a class="reference internal" href="../guide/resources.html">Additional information and resources</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l1"><a class="reference internal" href="../overview.html">Contributing Overview</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../reviewing.html">Reviewing contributions</a></li> |
| <li class="toctree-l1 has-children"><a class="reference internal" href="../cpp/index.html">C++ Development</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l2"><a class="reference internal" href="../cpp/building.html">Building Arrow C++</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../cpp/development.html">Development Guidelines</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../cpp/windows.html">Developing on Windows</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../cpp/emscripten.html">Cross compiling for WebAssembly with Emscripten</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../cpp/conventions.html">Conventions</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../cpp/fuzzing.html">Fuzzing Arrow C++</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../cpp/compute.html">Developing Arrow C++ Compute</a></li> |
| <li class="toctree-l2 has-children"><a class="reference internal" href="../cpp/acero.html">Developing Acero</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/acero/swiss_table.html">Swiss Table</a></li> |
| </ul> |
| </details></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l1 has-children"><a class="reference internal" href="../java/index.html">Java Development</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l2"><a class="reference internal" href="../java/building.html">Building Arrow Java</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../java/development.html">Development Guidelines</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l1 has-children"><a class="reference internal" href="../python/index.html">Python Development</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l2"><a class="reference internal" href="../python/building.html">Building PyArrow</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../python/development.html">Developing PyArrow</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l1 current active has-children"><a class="reference internal" href="index.html">Continuous Integration</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> |
| <li class="toctree-l2"><a class="reference internal" href="overview.html">Continuous Integration</a></li> |
| <li class="toctree-l2 current active"><a class="current reference internal" href="#">Running Docker Builds</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="archery.html">Daily Development using Archery</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="crossbow.html">Packaging and Testing with Crossbow</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l1"><a class="reference internal" href="../benchmarks.html">Benchmarks</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../documentation.html">Building the Documentation</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../release.html">Release Management Guide</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../release_verification.html">Release Verification Process</a></li> |
| </ul> |
| </div> |
| </nav></div> |
| </div> |
| |
| |
| <div class="sidebar-primary-items__end sidebar-primary__section"> |
| <div class="sidebar-primary-item"> |
| <div id="ethical-ad-placement" |
| class="flat" |
| data-ea-publisher="readthedocs" |
| data-ea-type="readthedocs-sidebar" |
| data-ea-manual="true"> |
| </div></div> |
| </div> |
| |
| |
| </div> |
| |
| <main id="main-content" class="bd-main" role="main"> |
| |
| |
| <div class="bd-content"> |
| <div class="bd-article-container"> |
| |
| <div class="bd-header-article d-print-none"> |
| <div class="header-article-items header-article__inner"> |
| |
| <div class="header-article-items__start"> |
| |
| <div class="header-article-item"> |
| |
| <nav aria-label="Breadcrumb" class="d-print-none"> |
| <ul class="bd-breadcrumbs"> |
| |
| <li class="breadcrumb-item breadcrumb-home"> |
| <a href="../../index.html" class="nav-link" aria-label="Home"> |
| <i class="fa-solid fa-home"></i> |
| </a> |
| </li> |
| |
| <li class="breadcrumb-item"><a href="../index.html" class="nav-link">Development</a></li> |
| |
| |
| <li class="breadcrumb-item"><a href="index.html" class="nav-link">Continuous Integration</a></li> |
| |
| <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Running Docker Builds</span></li> |
| </ul> |
| </nav> |
| </div> |
| |
| </div> |
| |
| |
| </div> |
| </div> |
| |
| |
| |
| |
| <div id="searchbox"></div> |
| <article class="bd-article"> |
| |
| <section id="running-docker-builds"> |
| <span id="docker-builds"></span><h1>Running Docker Builds<a class="headerlink" href="#running-docker-builds" title="Link to this heading">#</a></h1> |
| <p>Most of our Linux based Continuous Integration tasks are decoupled from public |
| CI services using <a class="reference external" href="https://docs.docker.com/">Docker</a> and |
| <a class="reference external" href="https://docs.docker.com/compose/">Docker Compose</a>. Keeping the CI configuration |
| minimal makes local reproducibility possible.</p> |
| <section id="usage"> |
| <h2>Usage<a class="headerlink" href="#usage" title="Link to this heading">#</a></h2> |
| <p>There are multiple ways to execute the Docker based builds. |
| The recommended way is to use the <a class="reference internal" href="archery.html#archery"><span class="std std-ref">Archery</span></a> tool:</p> |
| <section id="examples"> |
| <h3>Examples<a class="headerlink" href="#examples" title="Link to this heading">#</a></h3> |
| <p><strong>List the available images:</strong></p> |
| <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>archery<span class="w"> </span>docker<span class="w"> </span>images |
| </pre></div> |
| </div> |
| <p><strong>Execute a build:</strong></p> |
| <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>archery<span class="w"> </span>docker<span class="w"> </span>run<span class="w"> </span>conda-python |
| </pre></div> |
| </div> |
| <p>Archery calls the following docker compose commands:</p> |
| <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>docker<span class="w"> </span>compose<span class="w"> </span>pull<span class="w"> </span>--ignore-pull-failures<span class="w"> </span>conda-cpp |
| docker<span class="w"> </span>compose<span class="w"> </span>pull<span class="w"> </span>--ignore-pull-failures<span class="w"> </span>conda-python |
| docker<span class="w"> </span>compose<span class="w"> </span>build<span class="w"> </span>conda-cpp |
| docker<span class="w"> </span>compose<span class="w"> </span>build<span class="w"> </span>conda-python |
| docker<span class="w"> </span>compose<span class="w"> </span>run<span class="w"> </span>--rm<span class="w"> </span>conda-python |
| </pre></div> |
| </div> |
| <p><strong>Show the Docker Compose commands instead of executing them:</strong></p> |
| <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>archery<span class="w"> </span>docker<span class="w"> </span>--dry-run<span class="w"> </span>run<span class="w"> </span>conda-python |
| </pre></div> |
| </div> |
| <p><strong>To disable the image pulling:</strong></p> |
| <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>archery<span class="w"> </span>docker<span class="w"> </span>run<span class="w"> </span>--no-cache<span class="w"> </span>conda-python |
| </pre></div> |
| </div> |
| <p>Which translates to:</p> |
| <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>docker<span class="w"> </span>compose<span class="w"> </span>build<span class="w"> </span>--no-cache<span class="w"> </span>conda-cpp |
| docker<span class="w"> </span>compose<span class="w"> </span>build<span class="w"> </span>--no-cache<span class="w"> </span>conda-python |
| docker<span class="w"> </span>compose<span class="w"> </span>run<span class="w"> </span>--rm<span class="w"> </span>conda-python |
| </pre></div> |
| </div> |
| <p><strong>To disable the cache only for the leaf image:</strong></p> |
| <p>Useful to force building the development version of a dependency. |
| In case of the example below the command builds the |
| <code class="docutils literal notranslate"><span class="pre">conda-cpp</span> <span class="pre">></span> <span class="pre">conda-python</span> <span class="pre">></span> <span class="pre">conda-python-pandas</span></code> branch of the image tree |
| where the leaf image is <code class="docutils literal notranslate"><span class="pre">conda-python-pandas</span></code>.</p> |
| <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nv">PANDAS</span><span class="o">=</span>upstream_devel<span class="w"> </span>archery<span class="w"> </span>docker<span class="w"> </span>run<span class="w"> </span>--no-leaf-cache<span class="w"> </span>conda-python-pandas |
| </pre></div> |
| </div> |
| <p>Which translates to:</p> |
| <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">export</span><span class="w"> </span><span class="nv">PANDAS</span><span class="o">=</span>upstream_devel |
| docker<span class="w"> </span>compose<span class="w"> </span>pull<span class="w"> </span>--ignore-pull-failures<span class="w"> </span>conda-cpp |
| docker<span class="w"> </span>compose<span class="w"> </span>pull<span class="w"> </span>--ignore-pull-failures<span class="w"> </span>conda-python |
| docker<span class="w"> </span>compose<span class="w"> </span>build<span class="w"> </span>conda-cpp |
| docker<span class="w"> </span>compose<span class="w"> </span>build<span class="w"> </span>conda-python |
| docker<span class="w"> </span>compose<span class="w"> </span>build<span class="w"> </span>--no-cache<span class="w"> </span>conda-python-pandas |
| docker<span class="w"> </span>compose<span class="w"> </span>run<span class="w"> </span>--rm<span class="w"> </span>conda-python-pandas |
| </pre></div> |
| </div> |
| <p>Note that it doesn’t pull the conda-python-pandas image and disable the cache |
| when building it.</p> |
| <p><code class="docutils literal notranslate"><span class="pre">PANDAS</span></code> is a <a class="reference internal" href="#docker-build-parameters"><span class="std std-ref">build parameter</span></a>, see the |
| defaults in the <code class="docutils literal notranslate"><span class="pre">.env</span></code> file.</p> |
| <p><strong>To entirely skip building the image:</strong></p> |
| <p>The layer-caching mechanism of docker-compose can be less reliable than |
| docker’s, depending on the version, the <code class="docutils literal notranslate"><span class="pre">cache_from</span></code> build entry, and the |
| backend used (docker-py, docker-cli, docker-cli and buildkit). This can lead to |
| different layer hashes - even when executing the same build command |
| repeatedly - eventually causing cache misses full image rebuilds.</p> |
| <p><em>If the image has been already built but the cache doesn’t work properly</em>, it |
| can be useful to skip the build phases:</p> |
| <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># first run ensures that the image is built</span> |
| archery<span class="w"> </span>docker<span class="w"> </span>run<span class="w"> </span>conda-python |
| |
| <span class="c1"># if the second run tries the build the image again and none of the files</span> |
| <span class="c1"># referenced in the relevant dockerfile have changed, then it indicates a</span> |
| <span class="c1"># cache miss caused by the issue described above</span> |
| archery<span class="w"> </span>docker<span class="w"> </span>run<span class="w"> </span>conda-python |
| |
| <span class="c1"># since the image is properly built with the first command, there is no</span> |
| <span class="c1"># need to rebuild it, so manually disable the pull and build phases to</span> |
| <span class="c1"># spare the some time</span> |
| archery<span class="w"> </span>docker<span class="w"> </span>run<span class="w"> </span>--no-pull<span class="w"> </span>--no-build<span class="w"> </span>conda-python |
| </pre></div> |
| </div> |
| <p><strong>Pass environment variables to the container:</strong></p> |
| <p>Most of the build scripts used within the containers can be configured through |
| environment variables. Pass them using <code class="docutils literal notranslate"><span class="pre">--env</span></code> or <code class="docutils literal notranslate"><span class="pre">-e</span></code> CLI options - |
| similar to the <code class="docutils literal notranslate"><span class="pre">docker</span> <span class="pre">run</span></code> and <code class="docutils literal notranslate"><span class="pre">docker</span> <span class="pre">compose</span> <span class="pre">run</span></code> interface.</p> |
| <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>archery<span class="w"> </span>docker<span class="w"> </span>run<span class="w"> </span>--env<span class="w"> </span><span class="nv">CMAKE_BUILD_TYPE</span><span class="o">=</span>release<span class="w"> </span>ubuntu-cpp |
| </pre></div> |
| </div> |
| <p>For the available environment variables in the C++ builds see the |
| <code class="docutils literal notranslate"><span class="pre">ci/scripts/cpp_build.sh</span></code> script.</p> |
| <p><strong>Run the image with custom command:</strong></p> |
| <p>Custom docker commands may be passed as the second argument to |
| <code class="docutils literal notranslate"><span class="pre">archery</span> <span class="pre">docker</span> <span class="pre">run</span></code>.</p> |
| <p>The following example starts an interactive <code class="docutils literal notranslate"><span class="pre">bash</span></code> session in the container |
| - useful for debugging the build interactively:</p> |
| <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>archery<span class="w"> </span>docker<span class="w"> </span>run<span class="w"> </span>ubuntu-cpp<span class="w"> </span>bash |
| </pre></div> |
| </div> |
| <p><strong>Build the image with increased debugging output:</strong></p> |
| <p>To enable additional logging output for debugging, pass the <code class="docutils literal notranslate"><span class="pre">--debug</span></code> flag |
| to <code class="docutils literal notranslate"><span class="pre">archery</span></code>.</p> |
| <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>archery<span class="w"> </span>--debug<span class="w"> </span>docker<span class="w"> </span>run<span class="w"> </span>ubuntu-cpp |
| </pre></div> |
| </div> |
| <p>In addition to enabling <code class="docutils literal notranslate"><span class="pre">DEBUG</span></code>-level logging, this also translates to |
| passing <code class="docutils literal notranslate"><span class="pre">--progress=plain</span></code> to docker(-compose) build command.</p> |
| </section> |
| <section id="docker-volume-caches"> |
| <h3>Docker Volume Caches<a class="headerlink" href="#docker-volume-caches" title="Link to this heading">#</a></h3> |
| <p>Most of the compose container have specific directories mounted from the host |
| to reuse <code class="docutils literal notranslate"><span class="pre">ccache</span></code> and <code class="docutils literal notranslate"><span class="pre">maven</span></code> artifacts. These docker volumes are placed |
| in the <code class="docutils literal notranslate"><span class="pre">.docker</span></code> directory.</p> |
| <p>In order to clean up the cache simply delete one or more directories (or the |
| whole <code class="docutils literal notranslate"><span class="pre">.docker</span></code> directory).</p> |
| </section> |
| </section> |
| <section id="development"> |
| <h2>Development<a class="headerlink" href="#development" title="Link to this heading">#</a></h2> |
| <p>The Docker Compose configuration is tuned towards reusable development |
| containers using hierarchical images. For example multiple language bindings |
| are dependent on the C++ implementation, so instead of redefining the |
| C++ environment multiple Dockerfiles, we can reuse the exact same base C++ |
| image when building Glib, Ruby, R and Python bindings. |
| This reduces duplication and streamlines maintenance, but makes the |
| Docker Compose configuration more complicated.</p> |
| <section id="docker-build-parameters"> |
| <span id="id1"></span><h3>Docker Build Parameters<a class="headerlink" href="#docker-build-parameters" title="Link to this heading">#</a></h3> |
| <p>The build time parameters are pushed down to the dockerfiles to make the |
| image building more flexible. These parameters are usually called as docker |
| build args, but we pass these values as environment variables to |
| compose.yaml. The build parameters are extensively used for:</p> |
| <ul class="simple"> |
| <li><p>defining the docker registry used for caching</p></li> |
| <li><p>platform architectures</p></li> |
| <li><p>operation systems and versions</p></li> |
| <li><p>defining various versions if dependencies</p></li> |
| </ul> |
| <p>The default parameter values are stored in the top level .env file. |
| For detailed examples see the compose.yaml.</p> |
| </section> |
| <section id="build-scripts"> |
| <h3>Build Scripts<a class="headerlink" href="#build-scripts" title="Link to this heading">#</a></h3> |
| <p>The scripts maintained under ci/scripts directory should be kept |
| parameterizable but reasonably minimal to clearly encapsulate the tasks it is |
| responsible for. Like:</p> |
| <ul class="simple"> |
| <li><p><code class="docutils literal notranslate"><span class="pre">cpp_build.sh</span></code>: build the C++ implementation without running the tests.</p></li> |
| <li><p><code class="docutils literal notranslate"><span class="pre">cpp_test.sh</span></code>: execute the C++ tests.</p></li> |
| <li><p><code class="docutils literal notranslate"><span class="pre">python_build.sh</span></code>: build the Python bindings without running the tests.</p></li> |
| <li><p><code class="docutils literal notranslate"><span class="pre">python_test.sh</span></code>: execute the Python tests.</p></li> |
| <li><p><code class="docutils literal notranslate"><span class="pre">docs_build.sh</span></code>: build the Sphinx documentation.</p></li> |
| <li><p><code class="docutils literal notranslate"><span class="pre">integration_dask.sh</span></code>: execute the dask integration tests.</p></li> |
| <li><p><code class="docutils literal notranslate"><span class="pre">integration_pandas.sh</span></code>: execute the pandas integration tests.</p></li> |
| <li><p><code class="docutils literal notranslate"><span class="pre">install_minio.sh</span></code>: install minio server for multiple platforms.</p></li> |
| <li><p><code class="docutils literal notranslate"><span class="pre">install_conda.sh</span></code>: install miniconda for multiple platforms.</p></li> |
| <li><p><code class="docutils literal notranslate"><span class="pre">install_gcs_testbench.sh</span></code>: install the GCS testbench for multiple platforms.</p></li> |
| </ul> |
| <p>The parametrization (like the C++ CMake options) is achieved via environment |
| variables with useful defaults to keep the build configurations declarative.</p> |
| <p>A good example is <code class="docutils literal notranslate"><span class="pre">cpp_build.sh</span></code> build script which forwards environment |
| variables as CMake options - so the same scripts can be invoked in various |
| configurations without the necessity of changing it. For examples see how the |
| environment variables are passed in the compose.yaml’s C++ images.</p> |
| </section> |
| <section id="adding-new-images"> |
| <h3>Adding New Images<a class="headerlink" href="#adding-new-images" title="Link to this heading">#</a></h3> |
| <p>See the inline comments available in the compose.yaml file.</p> |
| </section> |
| </section> |
| </section> |
| |
| |
| </article> |
| |
| |
| |
| |
| |
| <footer class="prev-next-footer d-print-none"> |
| |
| <div class="prev-next-area"> |
| <a class="left-prev" |
| href="overview.html" |
| title="previous page"> |
| <i class="fa-solid fa-angle-left"></i> |
| <div class="prev-next-info"> |
| <p class="prev-next-subtitle">previous</p> |
| <p class="prev-next-title">Continuous Integration</p> |
| </div> |
| </a> |
| <a class="right-next" |
| href="archery.html" |
| title="next page"> |
| <div class="prev-next-info"> |
| <p class="prev-next-subtitle">next</p> |
| <p class="prev-next-title">Daily Development using Archery</p> |
| </div> |
| <i class="fa-solid fa-angle-right"></i> |
| </a> |
| </div> |
| </footer> |
| |
| </div> |
| |
| |
| |
| <dialog id="pst-secondary-sidebar-modal"></dialog> |
| <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> |
| |
| |
| <div class="sidebar-secondary-item"> |
| <div |
| id="pst-page-navigation-heading-2" |
| class="page-toc tocsection onthispage"> |
| <i class="fa-solid fa-list"></i> On this page |
| </div> |
| <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> |
| <ul class="visible nav section-nav flex-column"> |
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#usage">Usage</a><ul class="visible nav section-nav flex-column"> |
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#examples">Examples</a></li> |
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#docker-volume-caches">Docker Volume Caches</a></li> |
| </ul> |
| </li> |
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#development">Development</a><ul class="visible nav section-nav flex-column"> |
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#docker-build-parameters">Docker Build Parameters</a></li> |
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#build-scripts">Build Scripts</a></li> |
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#adding-new-images">Adding New Images</a></li> |
| </ul> |
| </li> |
| </ul> |
| </nav></div> |
| |
| <div class="sidebar-secondary-item"> |
| |
| |
| <div class="tocsection editthispage"> |
| <a href="https://github.com/apache/arrow/edit/main/docs/source/developers/continuous_integration/docker.rst"> |
| <i class="fa-solid fa-pencil"></i> |
| |
| |
| |
| Edit on GitHub |
| |
| |
| </a> |
| </div> |
| </div> |
| |
| </div></div> |
| |
| |
| </div> |
| <footer class="bd-footer-content"> |
| |
| </footer> |
| |
| </main> |
| </div> |
| </div> |
| |
| <!-- Scripts loaded after <body> so the DOM is not blocked --> |
| <script defer src="../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> |
| <script defer src="../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> |
| |
| <footer class="bd-footer"> |
| <div class="bd-footer__inner bd-page-width"> |
| |
| <div class="footer-items__start"> |
| |
| <div class="footer-item"> |
| |
| <p class="copyright"> |
| |
| © Copyright 2016-2025 Apache Software Foundation. |
| Apache Arrow, Arrow, Apache, the Apache logo, and the Apache Arrow project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries. |
| <br/> |
| |
| </p> |
| </div> |
| |
| <div class="footer-item"> |
| |
| <p class="sphinx-version"> |
| Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.2.3. |
| <br/> |
| </p> |
| </div> |
| |
| </div> |
| |
| |
| |
| <div class="footer-items__end"> |
| |
| <div class="footer-item"> |
| <p class="theme-version"> |
| <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> |
| Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. |
| </p></div> |
| |
| </div> |
| |
| </div> |
| |
| </footer> |
| </body> |
| </html> |