This is an automated email from the ASF dual-hosted git repository.
kou pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/main by this push:
new 719c32e2f1 GH-47806: [CI] Rename deprecated docker-compose.yml to
preferred compose.yaml file (#47954)
719c32e2f1 is described below
commit 719c32e2f1683658fb6ad16b1cc51637b93442cd
Author: Raúl Cumplido <[email protected]>
AuthorDate: Tue Oct 28 01:54:55 2025 +0100
GH-47806: [CI] Rename deprecated docker-compose.yml to preferred
compose.yaml file (#47954)
### Rationale for this change
Docker Compose recommends `compose.yaml`:
https://docs.docker.com/compose/intro/compose-application-model/#the-compose-file
> The default path for a Compose file is compose.yaml (preferred) or
compose.yml that is placed in the working directory. Compose also supports
docker-compose.yaml and docker-compose.yml for backwards compatibility of
earlier versions. If both files exist, Compose prefers the canonical
compose.yaml.
### What changes are included in this PR?
- Update several `docker-compose.yml` file names to `compose.yaml`
- Update doc and comment references
- Update archery references to the file
- Update workflows and CODEOWNERS to take new file into account.
### Are these changes tested?
Yes via CI and some archery jobs.
### Are there any user-facing changes?
No
* GitHub Issue: #47806
Authored-by: Raúl Cumplido <[email protected]>
Signed-off-by: Sutou Kouhei <[email protected]>
---
.env | 6 +++---
.github/CODEOWNERS | 2 +-
.github/workflows/archery.yml | 4 ++--
.github/workflows/cpp.yml | 4 ++--
.github/workflows/cpp_extra.yml | 4 ++--
.github/workflows/docs_light.yml | 2 +-
.github/workflows/integration.yml | 4 ++--
.github/workflows/python.yml | 4 ++--
.github/workflows/r.yml | 4 ++--
.github/workflows/ruby.yml | 4 ++--
ci/docker/conda-integration.dockerfile | 2 +-
docker-compose.yml => compose.yaml | 0
cpp/build-support/run-test.sh | 2 +-
cpp/examples/minimal_build/README.md | 2 +-
.../minimal_build/{docker-compose.yml => compose.yaml} | 0
.../tutorial_examples/{docker-compose.yml => compose.yaml} | 0
dev/archery/archery/docker/cli.py | 10 +++++-----
dev/archery/archery/docker/core.py | 6 +++---
dev/archery/archery/docker/tests/test_docker.py | 2 +-
docs/source/developers/continuous_integration/docker.rst | 8 ++++----
docs/source/developers/continuous_integration/overview.rst | 8 ++++----
.../minimal_build/{docker-compose.yml => compose.yaml} | 0
r/vignettes/developers/docker.Rmd | 4 ++--
23 files changed, 41 insertions(+), 41 deletions(-)
diff --git a/.env b/.env
index 5951b3c95f..6a62cad5fc 100644
--- a/.env
+++ b/.env
@@ -16,9 +16,9 @@
# under the License.
# All of the following environment variables are required to set default values
-# for the parameters in docker-compose.yml.
+# for the parameters in compose.yaml.
-# empty prefix means that the docker-compose configuration will use named
+# empty prefix means that the docker compose configuration will use named
# volumes which potentially improves the performance on docker for macos and
# docker for windows, it also prevents the contamination of the source
# directory
@@ -93,7 +93,7 @@ ARROW_R_DEV=TRUE
R_PRUNE_DEPS=FALSE
TZ=UTC
-# Used through docker-compose.yml and serves as the default version for the
+# Used through compose.yaml and serves as the default version for the
# ci/scripts/install_vcpkg.sh script. Prefer to use short SHAs to keep the
# docker tags more readable.
VCPKG="4334d8b4c8916018600212ab4dd4bbdc343065d1" # 2025.09.17 Release
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 12b78f7f2c..14c7437032 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -60,7 +60,7 @@ appveyor.yml @assignUser @kou @raulcd
/dev/ @assignUser @jonkeane @kou @raulcd
.dockerignore @raulcd
.env @assignUser @jonkeane @kou @raulcd
-docker-compose.yml @assignUser @jonkeane @kou @raulcd
+compose.yaml @assignUser @jonkeane @kou @raulcd
# R specific packaging tooling
/r/configure* @assignUser
diff --git a/.github/workflows/archery.yml b/.github/workflows/archery.yml
index 7980e4b55e..8ad7cd92e6 100644
--- a/.github/workflows/archery.yml
+++ b/.github/workflows/archery.yml
@@ -29,14 +29,14 @@ on:
- '.github/workflows/archery.yml'
- 'dev/archery/**'
- 'dev/tasks/**'
- - 'docker-compose.yml'
+ - 'compose.yaml'
pull_request:
paths:
- '.dockerignore'
- '.github/workflows/archery.yml'
- 'dev/archery/**'
- 'dev/tasks/**'
- - 'docker-compose.yml'
+ - 'compose.yaml'
env:
ARCHERY_DEBUG: 1
diff --git a/.github/workflows/cpp.yml b/.github/workflows/cpp.yml
index db3abd456c..1b4d81f863 100644
--- a/.github/workflows/cpp.yml
+++ b/.github/workflows/cpp.yml
@@ -37,7 +37,7 @@ on:
- 'ci/scripts/msys2_*'
- 'ci/scripts/util_*'
- 'cpp/**'
- - 'docker-compose.yml'
+ - 'compose.yaml'
- 'format/Flight.proto'
- 'testing'
pull_request:
@@ -54,7 +54,7 @@ on:
- 'ci/scripts/msys2_*'
- 'ci/scripts/util_*'
- 'cpp/**'
- - 'docker-compose.yml'
+ - 'compose.yaml'
- 'format/Flight.proto'
- 'testing'
diff --git a/.github/workflows/cpp_extra.yml b/.github/workflows/cpp_extra.yml
index fc135af161..8ee5001713 100644
--- a/.github/workflows/cpp_extra.yml
+++ b/.github/workflows/cpp_extra.yml
@@ -37,7 +37,7 @@ on:
- 'ci/scripts/msys2_*'
- 'ci/scripts/util_*'
- 'cpp/**'
- - 'docker-compose.yml'
+ - 'compose.yaml'
- 'format/Flight.proto'
- 'testing'
tags:
@@ -58,7 +58,7 @@ on:
- 'ci/scripts/msys2_*'
- 'ci/scripts/util_*'
- 'cpp/**'
- - 'docker-compose.yml'
+ - 'compose.yaml'
- 'format/Flight.proto'
- 'testing'
types:
diff --git a/.github/workflows/docs_light.yml b/.github/workflows/docs_light.yml
index cf103466ab..c12c19269d 100644
--- a/.github/workflows/docs_light.yml
+++ b/.github/workflows/docs_light.yml
@@ -28,7 +28,7 @@ on:
- 'ci/docker/conda-python.dockerfile'
- 'ci/scripts/cpp_build.sh'
- 'ci/scripts/python_build.sh'
- - 'docker-compose.yml'
+ - 'compose.yaml'
permissions:
contents: read
diff --git a/.github/workflows/integration.yml
b/.github/workflows/integration.yml
index 25c5181bb0..b9b81fe52c 100644
--- a/.github/workflows/integration.yml
+++ b/.github/workflows/integration.yml
@@ -29,7 +29,7 @@ on:
- '.github/workflows/integration.yml'
- 'ci/**'
- 'dev/archery/**'
- - 'docker-compose.yml'
+ - 'compose.yaml'
- 'integration/**'
- 'cpp/**'
- 'format/**'
@@ -39,7 +39,7 @@ on:
- '.github/workflows/integration.yml'
- 'ci/**'
- 'dev/archery/**'
- - 'docker-compose.yml'
+ - 'compose.yaml'
- 'integration/**'
- 'cpp/**'
- 'format/**'
diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml
index 0d12accda4..361f6be6be 100644
--- a/.github/workflows/python.yml
+++ b/.github/workflows/python.yml
@@ -29,7 +29,7 @@ on:
- '.github/workflows/python.yml'
- 'ci/**'
- 'cpp/**'
- - 'docker-compose.yml'
+ - 'compose.yaml'
- 'python/**'
pull_request:
paths:
@@ -37,7 +37,7 @@ on:
- '.github/workflows/python.yml'
- 'ci/**'
- 'cpp/**'
- - 'docker-compose.yml'
+ - 'compose.yaml'
- 'python/**'
concurrency:
diff --git a/.github/workflows/r.yml b/.github/workflows/r.yml
index b7b45adc73..f5d683238c 100644
--- a/.github/workflows/r.yml
+++ b/.github/workflows/r.yml
@@ -34,7 +34,7 @@ on:
- "ci/scripts/install_minio.sh"
- "ci/scripts/r_*.sh"
- "cpp/**"
- - "docker-compose.yml"
+ - "compose.yaml"
- "r/**"
pull_request:
paths:
@@ -47,7 +47,7 @@ on:
- "ci/scripts/install_minio.sh"
- "ci/scripts/r_*.sh"
- "cpp/**"
- - "docker-compose.yml"
+ - "compose.yaml"
- "r/**"
concurrency:
diff --git a/.github/workflows/ruby.yml b/.github/workflows/ruby.yml
index aa9df362f1..e99ec016e0 100644
--- a/.github/workflows/ruby.yml
+++ b/.github/workflows/ruby.yml
@@ -36,7 +36,7 @@ on:
- 'ci/scripts/util_*'
- 'c_glib/**'
- 'cpp/**'
- - 'docker-compose.yml'
+ - 'compose.yaml'
- 'ruby/**'
pull_request:
paths:
@@ -51,7 +51,7 @@ on:
- 'ci/scripts/util_*'
- 'c_glib/**'
- 'cpp/**'
- - 'docker-compose.yml'
+ - 'compose.yaml'
- 'ruby/**'
concurrency:
diff --git a/ci/docker/conda-integration.dockerfile
b/ci/docker/conda-integration.dockerfile
index 651bf98485..b0e5ec966d 100644
--- a/ci/docker/conda-integration.dockerfile
+++ b/ci/docker/conda-integration.dockerfile
@@ -21,7 +21,7 @@ FROM ${repo}:${arch}-conda-cpp
ARG arch=amd64
# We need to synchronize the following values with the values in .env
-# and services.conda-integration in docker-compose.yml.
+# and services.conda-integration in compose.yaml.
ARG maven=3.8.7
ARG node=20
ARG yarn=1.22
diff --git a/docker-compose.yml b/compose.yaml
similarity index 100%
rename from docker-compose.yml
rename to compose.yaml
diff --git a/cpp/build-support/run-test.sh b/cpp/build-support/run-test.sh
index 3e3034a3c8..20e225d8dd 100755
--- a/cpp/build-support/run-test.sh
+++ b/cpp/build-support/run-test.sh
@@ -129,7 +129,7 @@ function print_coredumps() {
# ulimit -c unlimited
#
# If the tests are run in a Docker container, the instructions are slightly
- # different: see the 'Coredumps' comment section in `docker-compose.yml`.
+ # different: see the 'Coredumps' comment section in `compose.yaml`.
# filename is truncated to the first 15 characters in case of linux, so limit
# the pattern for the first 15 characters
diff --git a/cpp/examples/minimal_build/README.md
b/cpp/examples/minimal_build/README.md
index 008ecaa7b7..3403ce95e5 100644
--- a/cpp/examples/minimal_build/README.md
+++ b/cpp/examples/minimal_build/README.md
@@ -31,7 +31,7 @@ a file named `test.arrow`.
## Running the example
You can run this simple example using [Docker Compose][docker-compose]
-and the given `docker-compose.yml` and dockerfiles, which installs a
+and the given `compose.yaml` and dockerfiles, which installs a
minimal Ubuntu image with a basic C++ toolchain.
Just open a terminal in this directory and run the following commands:
diff --git a/cpp/examples/minimal_build/docker-compose.yml
b/cpp/examples/minimal_build/compose.yaml
similarity index 100%
rename from cpp/examples/minimal_build/docker-compose.yml
rename to cpp/examples/minimal_build/compose.yaml
diff --git a/cpp/examples/tutorial_examples/docker-compose.yml
b/cpp/examples/tutorial_examples/compose.yaml
similarity index 100%
rename from cpp/examples/tutorial_examples/docker-compose.yml
rename to cpp/examples/tutorial_examples/compose.yaml
diff --git a/dev/archery/archery/docker/cli.py
b/dev/archery/archery/docker/cli.py
index 250b85270e..3a32994e77 100644
--- a/dev/archery/archery/docker/cli.py
+++ b/dev/archery/archery/docker/cli.py
@@ -72,7 +72,7 @@ def docker(ctx, src, dry_run, using_legacy_docker_compose,
using_docker_cli,
"""
ctx.ensure_object(dict)
- config_path = src.path / 'docker-compose.yml'
+ config_path = src.path / 'compose.yaml'
if not config_path.exists():
raise click.ClickException(
"Docker compose configuration cannot be found in directory {}, "
@@ -123,7 +123,7 @@ def docker_pull(obj, image, *, pull_leaf,
ignore_pull_failures):
ignore_pull_failures=ignore_pull_failures)
except UndefinedImage as e:
raise click.ClickException(
- "There is no service/image defined in docker-compose.yml with "
+ "There is no service/image defined in compose.yaml with "
f"name: {e}"
)
except RuntimeError as e:
@@ -156,7 +156,7 @@ def docker_build(obj, image, *, force_pull, use_cache,
use_leaf_cache):
pull_parents=force_pull)
except UndefinedImage as e:
raise click.ClickException(
- "There is no service/image defined in docker-compose.yml with "
+ "There is no service/image defined in compose.yaml with "
f"name: {e}"
)
except RuntimeError as e:
@@ -250,7 +250,7 @@ def docker_run(obj, image, command, *, env, user,
force_pull, force_build,
)
except UndefinedImage as e:
raise click.ClickException(
- "There is no service/image defined in docker-compose.yml with "
+ "There is no service/image defined in compose.yaml with "
f"name: {e}"
)
except RuntimeError as e:
@@ -291,7 +291,7 @@ def docker_compose_info(obj, service_name, show):
"""Show Docker Compose definition info for service_name.
SERVICE_NAME is the name of the docker service defined in
- docker-compose.yml. Look at `archery docker images` output for names.
+ compose.yaml. Look at `archery docker images` output for names.
"""
compose = obj['compose']
try:
diff --git a/dev/archery/archery/docker/core.py
b/dev/archery/archery/docker/core.py
index 34ea42d6d2..bfb1e89f98 100644
--- a/dev/archery/archery/docker/core.py
+++ b/dev/archery/archery/docker/core.py
@@ -101,7 +101,7 @@ class ComposeConfig:
def _read_config(self, config_path, compose_bin):
"""
- Validate and read the docker-compose.yml
+ Validate and read the compose.yaml
"""
yaml = YAML()
with config_path.open() as fp:
@@ -149,7 +149,7 @@ class ComposeConfig:
if errors:
msg = '\n'.join([f' - {msg}' for msg in errors])
raise ValueError(
- f'Found errors with docker-compose:\n{msg}'
+ f'Found errors with docker compose:\n{msg}'
)
rendered_config = StringIO(result.stdout.decode())
@@ -407,7 +407,7 @@ class DockerCompose(Command):
cmd = service.get('command', '')
if cmd:
# service command might be already defined as a list
- # in docker-compose.yml.
+ # in compose.yaml.
if isinstance(cmd, list):
cmd = shlex.join(cmd)
# Match behaviour from Docker Compose
diff --git a/dev/archery/archery/docker/tests/test_docker.py
b/dev/archery/archery/docker/tests/test_docker.py
index 631932d0fa..4da47d1461 100644
--- a/dev/archery/archery/docker/tests/test_docker.py
+++ b/dev/archery/archery/docker/tests/test_docker.py
@@ -192,7 +192,7 @@ arrow_compose_env = {
def create_config(directory, yml_content, env_content=None):
env_path = directory / '.env'
- config_path = directory / 'docker-compose.yml'
+ config_path = directory / 'compose.yaml'
with config_path.open('w') as fp:
fp.write(yml_content)
diff --git a/docs/source/developers/continuous_integration/docker.rst
b/docs/source/developers/continuous_integration/docker.rst
index 922cd8dd36..5b02bfe5be 100644
--- a/docs/source/developers/continuous_integration/docker.rst
+++ b/docs/source/developers/continuous_integration/docker.rst
@@ -198,7 +198,7 @@ Docker Build Parameters
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
-docker-compose.yml. The build parameters are extensively used for:
+compose.yaml. The build parameters are extensively used for:
- defining the docker registry used for caching
- platform architectures
@@ -206,7 +206,7 @@ docker-compose.yml. The build parameters are extensively
used for:
- defining various versions if dependencies
The default parameter values are stored in the top level .env file.
-For detailed examples see the docker-compose.yml.
+For detailed examples see the compose.yaml.
Build Scripts
~~~~~~~~~~~~~
@@ -232,9 +232,9 @@ variables with useful defaults to keep the build
configurations declarative.
A good example is ``cpp_build.sh`` 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 docker-compose.yml's C++ images.
+environment variables are passed in the compose.yaml's C++ images.
Adding New Images
~~~~~~~~~~~~~~~~~
-See the inline comments available in the docker-compose.yml file.
+See the inline comments available in the compose.yaml file.
diff --git a/docs/source/developers/continuous_integration/overview.rst
b/docs/source/developers/continuous_integration/overview.rst
index b4940357fa..54113f1a9c 100644
--- a/docs/source/developers/continuous_integration/overview.rst
+++ b/docs/source/developers/continuous_integration/overview.rst
@@ -24,13 +24,13 @@ Continuous Integration for Arrow is fairly complex as it
needs to run across dif
Some files central to Arrow CI are:
-- ``docker-compose.yml`` - here we define docker services which can be
configured using either environment variables, or the default values for these
variables.
-- ``.env`` - here we define default values to configure the services in
``docker-compose.yml``
+- ``compose.yaml`` - here we define docker services which can be configured
using either environment variables, or the default values for these variables.
+- ``.env`` - here we define default values to configure the services in
``compose.yaml``
- ``appveyor.yml`` - here we define workflows that run on Appveyor
We use :ref:`Docker<docker-builds>` in order to have portable and reproducible
Linux builds, as well as running Windows builds in Windows containers. We use
:ref:`Archery<Archery>` and :ref:`Crossbow<Crossbow>` to help coordinate the
various CI tasks.
-One thing to note is that some of the services defined in
``docker-compose.yml`` are interdependent. When running services locally, you
must either manually build its dependencies first, or build it via the use of
``archery docker run ...`` which automatically finds and builds dependencies.
+One thing to note is that some of the services defined in ``compose.yaml`` are
interdependent. When running services locally, you must either manually build
its dependencies first, or build it via the use of ``archery docker run ...``
which automatically finds and builds dependencies.
There are numerous important directories in the Arrow project which relate to
CI:
@@ -70,4 +70,4 @@ Crossbow is a subcomponent of Archery and can be used to
manually trigger builds
Most of these tasks are run as part of the nightly builds, though they can
also be triggered manually by adding a comment to a PR which begins with
``@github-actions crossbow submit`` followed by the name of the task to be run.
-For convenience purpose, the tasks in ``dev/tasks/tasks.yml`` are defined in
groups, which makes it simpler for multiple tasks to be submitted to Crossbow
at once. The task definitions here contain information about which service
defined in ``docker-compose.yml`` to run, the CI service to run the task on,
and which template file to use as the basis for that task.
+For convenience purpose, the tasks in ``dev/tasks/tasks.yml`` are defined in
groups, which makes it simpler for multiple tasks to be submitted to Crossbow
at once. The task definitions here contain information about which service
defined in ``compose.yaml`` to run, the CI service to run the task on, and
which template file to use as the basis for that task.
diff --git a/python/examples/minimal_build/docker-compose.yml
b/python/examples/minimal_build/compose.yaml
similarity index 100%
rename from python/examples/minimal_build/docker-compose.yml
rename to python/examples/minimal_build/compose.yaml
diff --git a/r/vignettes/developers/docker.Rmd
b/r/vignettes/developers/docker.Rmd
index 57432e594c..d2d7adc160 100644
--- a/r/vignettes/developers/docker.Rmd
+++ b/r/vignettes/developers/docker.Rmd
@@ -70,9 +70,9 @@ docker ps
sudo docker ps -a
```
-## Running existing workflows from docker-compose.yml
+## Running existing workflows from compose.yaml
-There are a number of workflows outlined in the file `docker-compose.yml` in
the
+There are a number of workflows outlined in the file `compose.yaml` in the
arrow repo root directory. For example, you can use the workflow called `r` to
test building and installing the R package. This is advantageous as you can
use
existing utility scripts and install it onto a container which already has R on