Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

libcnb-test: Migrate from Bollard to Docker CLI #621

Merged
merged 1 commit into from
Aug 1, 2023

Commits on Jul 31, 2023

  1. libcnb-test: Migrate from Bollard to Docker CLI

    Previously libcnb-test ran its various Docker related actions/commands
    (excluding those handled by Pack CLI) using the bollard crate.
    
    Whilst at first glance using a Rust client for Docker seems preferable,
    using Bollard/the Docker daemon API actually has a number of
    disadvantages, which are explained in more detail here:
    #620
    
    Now:
    - Docker CLI is used instead of Bollard/the Docker daemon API, which is
      simpler to understand/maintain and also avoids ~55 additional
      transitive dependencies.
    - The `run_shell_command` and `shell_exec` commands are now run as
      attached `docker run` invocations, making it trivial to check
      their exit code, fixing #446.
    - Whenever errors occur, the error output is now easier for end users
      to understand, since it's presented as Docker CLI output with which
      they will be more familiar (vs Docker daemon/Bollard API errors).
    
    As part of this change, `ContainerConfig::entrypoint` can no longer
    accept a vector of strings, since the Docker CLI's `--entrypoint` arg
    only accepts a single value, unlike the Docker daemon API. However,
    since the purpose of `libcnb-test` is to replicate typical end-user
    usage of the buildpacks and resultant images, this actually improves
    alignment of the framework with the use-cases we want to test.
    
    Fixes #446.
    Closes #620.
    GUS-W-11382688.
    GUS-W-13853580.
    edmorley committed Jul 31, 2023
    Configuration menu
    Copy the full SHA
    dcbdd48 View commit details
    Browse the repository at this point in the history