From 93d1aae98fcee8bf3bcce4ed20b890c59841d0bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?= Date: Mon, 16 Dec 2024 11:22:21 -0500 Subject: [PATCH 01/64] Switch to docker/setup-docker-action (#2374) --- .ci/get-docker-com.sh | 313 --------------------------------------- .ci/setup_docker.sh | 39 ----- .github/workflows/ci.yml | 37 +++-- 3 files changed, 27 insertions(+), 362 deletions(-) delete mode 100755 .ci/get-docker-com.sh delete mode 100755 .ci/setup_docker.sh diff --git a/.ci/get-docker-com.sh b/.ci/get-docker-com.sh deleted file mode 100755 index d9c0142a2..000000000 --- a/.ci/get-docker-com.sh +++ /dev/null @@ -1,313 +0,0 @@ -#!/bin/sh -set -e -# -# This script is meant for quick & easy install via: -# 'curl -sSL https://get.docker.com/ | sh' -# or: -# 'wget -qO- https://get.docker.com/ | sh' -# -# For test builds (ie. release candidates): -# 'curl -fsSL https://test.docker.com/ | sh' -# or: -# 'wget -qO- https://test.docker.com/ | sh' -# -# For experimental builds: -# 'curl -fsSL https://experimental.docker.com/ | sh' -# or: -# 'wget -qO- https://experimental.docker.com/ | sh' -# -# Docker Maintainers: -# To update this script on https://get.docker.com, -# use hack/release.sh during a normal release, -# or the following one-liner for script hotfixes: -# aws s3 cp --acl public-read hack/install.sh s3://get.docker.com/index -# - -url="https://get.docker.com/" -apt_url="https://apt.dockerproject.org" -yum_url="https://yum.dockerproject.org" -gpg_fingerprint="58118E89F3A912897C070ADBF76221572C52609D" - -key_servers=" -ha.pool.sks-keyservers.net -pgp.mit.edu -keyserver.ubuntu.com -" - -command_exists() { - command -v "$@" > /dev/null 2>&1 -} - -semverParse() { - major="${1%%.*}" - minor="${1#$major.}" - minor="${minor%%.*}" - patch="${1#$major.$minor.}" - patch="${patch%%[-.]*}" -} - -do_install() { - case "$(uname -m)" in - *64) - ;; - *) - cat >&2 <<-'EOF' - Error: you are not using a 64bit platform. - Docker currently only supports 64bit platforms. - EOF - exit 1 - ;; - esac - - user="$(id -un 2>/dev/null || true)" - - sh_c='sh -c' - if [ "$user" != 'root' ]; then - if command_exists sudo; then - sh_c='sudo -E sh -c' - elif command_exists su; then - sh_c='su -c' - else - cat >&2 <<-'EOF' - Error: this installer needs the ability to run commands as root. - We are unable to find either "sudo" or "su" available to make this happen. - EOF - exit 1 - fi - fi - - curl='' - if command_exists curl; then - curl='curl -sSL' - elif command_exists wget; then - curl='wget -qO-' - elif command_exists busybox && busybox --list-modules | grep -q wget; then - curl='busybox wget -qO-' - fi - - # check to see which repo they are trying to install from - if [ -z "$repo" ]; then - repo='main' - if [ "https://test.docker.com/" = "$url" ]; then - repo='testing' - elif [ "https://experimental.docker.com/" = "$url" ]; then - repo='experimental' - fi - fi - - # perform some very rudimentary platform detection - lsb_dist='' - dist_version='' - if command_exists lsb_release; then - lsb_dist="$(lsb_release -si)" - fi - if [ -z "$lsb_dist" ] && [ -r /etc/lsb-release ]; then - lsb_dist="$(. /etc/lsb-release && echo "$DISTRIB_ID")" - fi - if [ -z "$lsb_dist" ] && [ -r /etc/debian_version ]; then - lsb_dist='debian' - fi - if [ -z "$lsb_dist" ] && [ -r /etc/fedora-release ]; then - lsb_dist='fedora' - fi - if [ -z "$lsb_dist" ] && [ -r /etc/oracle-release ]; then - lsb_dist='oracleserver' - fi - if [ -z "$lsb_dist" ]; then - if [ -r /etc/centos-release ] || [ -r /etc/redhat-release ]; then - lsb_dist='centos' - fi - fi - if [ -z "$lsb_dist" ] && [ -r /etc/os-release ]; then - lsb_dist="$(. /etc/os-release && echo "$ID")" - fi - - lsb_dist="$(echo "$lsb_dist" | tr '[:upper:]' '[:lower:]')" - - case "$lsb_dist" in - - ubuntu) - if command_exists lsb_release; then - dist_version="$(lsb_release --codename | cut -f2)" - fi - if [ -z "$dist_version" ] && [ -r /etc/lsb-release ]; then - dist_version="$(. /etc/lsb-release && echo "$DISTRIB_CODENAME")" - fi - ;; - - debian) - dist_version="$(cat /etc/debian_version | sed 's/\/.*//' | sed 's/\..*//')" - case "$dist_version" in - 8) - dist_version="jessie" - ;; - 7) - dist_version="wheezy" - ;; - esac - ;; - - oracleserver) - # need to switch lsb_dist to match yum repo URL - lsb_dist="oraclelinux" - dist_version="$(rpm -q --whatprovides redhat-release --queryformat "%{VERSION}\n" | sed 's/\/.*//' | sed 's/\..*//' | sed 's/Server*//')" - ;; - - fedora|centos) - dist_version="$(rpm -q --whatprovides redhat-release --queryformat "%{VERSION}\n" | sed 's/\/.*//' | sed 's/\..*//' | sed 's/Server*//')" - ;; - - *) - if command_exists lsb_release; then - dist_version="$(lsb_release --codename | cut -f2)" - fi - if [ -z "$dist_version" ] && [ -r /etc/os-release ]; then - dist_version="$(. /etc/os-release && echo "$VERSION_ID")" - fi - ;; - - - esac - - - # Run setup for each distro accordingly - case "$lsb_dist" in - ubuntu|debian) - export DEBIAN_FRONTEND=noninteractive - - did_apt_get_update= - apt_get_update() { - if [ -z "$did_apt_get_update" ]; then - ( set -x; $sh_c 'sleep 3; apt-get update' ) - did_apt_get_update=1 - fi - } - - # aufs is preferred over devicemapper; try to ensure the driver is available. - if ! grep -q aufs /proc/filesystems && ! $sh_c 'modprobe aufs'; then - if uname -r | grep -q -- '-generic' && dpkg -l 'linux-image-*-generic' | grep -qE '^ii|^hi' 2>/dev/null; then - kern_extras="linux-image-extra-$(uname -r) linux-image-extra-virtual" - - apt_get_update - ( set -x; $sh_c 'sleep 3; apt-get install -y -q '"$kern_extras" ) || true - - if ! grep -q aufs /proc/filesystems && ! $sh_c 'modprobe aufs'; then - echo >&2 'Warning: tried to install '"$kern_extras"' (for AUFS)' - echo >&2 ' but we still have no AUFS. Docker may not work. Proceeding anyways!' - ( set -x; sleep 10 ) - fi - else - echo >&2 'Warning: current kernel is not supported by the linux-image-extra-virtual' - echo >&2 ' package. We have no AUFS support. Consider installing the packages' - echo >&2 ' linux-image-virtual kernel and linux-image-extra-virtual for AUFS support.' - ( set -x; sleep 10 ) - fi - fi - - # install apparmor utils if they're missing and apparmor is enabled in the kernel - # otherwise Docker will fail to start - if [ "$(cat /sys/module/apparmor/parameters/enabled 2>/dev/null)" = 'Y' ]; then - if command -v apparmor_parser >/dev/null 2>&1; then - echo 'apparmor is enabled in the kernel and apparmor utils were already installed' - else - echo 'apparmor is enabled in the kernel, but apparmor_parser missing' - apt_get_update - ( set -x; $sh_c 'sleep 3; apt-get install -y -q apparmor' ) - fi - fi - - if [ ! -e /usr/lib/apt/methods/https ]; then - apt_get_update - ( set -x; $sh_c 'sleep 3; apt-get install -y -q apt-transport-https ca-certificates' ) - fi - if [ -z "$curl" ]; then - apt_get_update - ( set -x; $sh_c 'sleep 3; apt-get install -y -q curl ca-certificates' ) - curl='curl -sSL' - fi - ( - set -x - for key_server in $key_servers ; do - $sh_c "apt-key adv --keyserver hkp://${key_server}:80 --recv-keys ${gpg_fingerprint}" && break - done - $sh_c "apt-key adv -k ${gpg_fingerprint} >/dev/null" - $sh_c "mkdir -p /etc/apt/sources.list.d" - $sh_c "echo deb [arch=$(dpkg --print-architecture)] ${apt_url}/repo ${lsb_dist}-${dist_version} ${repo} > /etc/apt/sources.list.d/docker.list" - $sh_c 'sleep 3; apt-get update' - if [ -z "$DOCKER_VERSION" ]; then - $sh_c 'apt-get -o Dpkg::Options::="--force-confnew" install -y -q docker-engine' - else - $sh_c "apt-get -o Dpkg::Options::=\"--force-confnew\" install -y -q docker-engine=$DOCKER_VERSION" - fi - ) - exit 0 - ;; - - fedora|centos|oraclelinux) - $sh_c "cat >/etc/yum.repos.d/docker-${repo}.repo" <<-EOF - [docker-${repo}-repo] - name=Docker ${repo} Repository - baseurl=${yum_url}/repo/${repo}/${lsb_dist}/${dist_version} - enabled=1 - gpgcheck=1 - gpgkey=${yum_url}/gpg - EOF - if [ "$lsb_dist" = "fedora" ] && [ "$dist_version" -ge "22" ]; then - ( - set -x - $sh_c 'sleep 3; dnf -y -q install docker-engine' - ) - else - ( - set -x - $sh_c 'sleep 3; yum -y -q install docker-engine' - ) - fi - exit 0 - ;; - gentoo) - if [ "$url" = "https://test.docker.com/" ]; then - # intentionally mixed spaces and tabs here -- tabs are stripped by "<<-'EOF'", spaces are kept in the output - cat >&2 <<-'EOF' - - You appear to be trying to install the latest nightly build in Gentoo.' - The portage tree should contain the latest stable release of Docker, but' - if you want something more recent, you can always use the live ebuild' - provided in the "docker" overlay available via layman. For more' - instructions, please see the following URL:' - - https://github.com/tianon/docker-overlay#using-this-overlay' - - After adding the "docker" overlay, you should be able to:' - - emerge -av =app-emulation/docker-9999' - - EOF - exit 1 - fi - - ( - set -x - $sh_c 'sleep 3; emerge app-emulation/docker' - ) - exit 0 - ;; - esac - - # intentionally mixed spaces and tabs here -- tabs are stripped by "<<-'EOF'", spaces are kept in the output - cat >&2 <<-'EOF' - - Either your platform is not easily detectable, is not supported by this - installer script (yet - PRs welcome! [hack/install.sh]), or does not yet have - a package for Docker. Please visit the following URL for more detailed - installation instructions: - - https://docs.docker.com/engine/installation/ - - EOF - exit 1 -} - -# wrapped up in a function so that we have some protection against only getting -# half the file during "curl | sh" -do_install diff --git a/.ci/setup_docker.sh b/.ci/setup_docker.sh deleted file mode 100755 index df9cf205a..000000000 --- a/.ci/setup_docker.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env bash - -set -exu - -DOCKER_VERSION="${DOCKER_VERSION:-}" -DOCKER_HOST="${DOCKER_HOST:-}" - -if [[ -n $DOCKER_VERSION ]]; then - sudo -E apt-get -q -y --purge remove docker-engine docker-ce - - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" - sudo apt-get update - sudo apt-cache madison docker-ce - sudo apt-get install "docker-ce=$DOCKER_VERSION" -fi - -if [[ -n $DOCKER_HOST ]]; then - sudo mkdir -p /etc/systemd/system/docker.service.d/ - - echo " -[Service] -ExecStart= -ExecStart=/usr/bin/dockerd -H $DOCKER_HOST -H unix:///var/run/docker.sock - " | sudo tee -a /etc/systemd/system/docker.service.d/override.conf - - sudo systemctl daemon-reload - sudo service docker restart || sudo journalctl -xe - sudo service docker status -fi - -while (! docker ps ); do - echo "Waiting for Docker to launch..." - sleep 1 -done -docker version -docker info - -docker run --rm hello-world diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 03cc0034d..b7aaef550 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,9 +15,7 @@ jobs: - { name: "default", javaVersion: 8 } - { name: "default", javaVersion: 17 } - { name: "default", javaVersion: 21 } - - { name: "over TCP", dockerHost: "tcp://127.0.0.1:2375", javaVersion: 8 } - - { name: "Docker 19.03.9", dockerVersion: "5:19.03.9~3-0~ubuntu-focal", javaVersion: 8 } - + - { name: "Docker 19.03.9", dockerVersion: "v19.03.9", javaVersion: 8 } steps: - uses: actions/checkout@v4 - name: Set up JDK @@ -26,13 +24,32 @@ jobs: java-version: ${{matrix.javaVersion}} distribution: temurin - name: Configure Docker + id: setup_docker + uses: docker/setup-docker-action@v4 + with: + version: ${{matrix.dockerVersion}} + channel: stable + - name: Build with Maven env: - DOCKER_VERSION: ${{matrix.dockerVersion}} - DOCKER_HOST: ${{matrix.dockerHost}} - run: .ci/setup_docker.sh + DOCKER_HOST: ${{steps.setup_docker.outputs.sock}} + run: ./mvnw --no-transfer-progress verify + + tcp: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v4 + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: 8 + distribution: temurin + - name: Configure Docker + id: setup_docker + uses: docker/setup-docker-action@v4 + with: + channel: stable + tcp-port: 2375 - name: Build with Maven env: - DOCKER_HOST: ${{matrix.dockerHost}} - run: | - [[ -z "$DOCKER_HOST" ]] && unset DOCKER_HOST - ./mvnw --no-transfer-progress verify + DOCKER_HOST: ${{steps.setup_docker.outputs.tcp}} + run: ./mvnw --no-transfer-progress verify From 2d129c317e47a9f3a92d0739a8be775f1452ea02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?= Date: Thu, 6 Mar 2025 11:01:07 -0600 Subject: [PATCH 02/64] Add MountType.Image and ImageOptions (#2386) Supported in API v1.48 --- .../dockerjava/api/model/ImageOptions.java | 27 +++++++++++++++++++ .../github/dockerjava/api/model/Mount.java | 25 +++++++++++++++++ .../dockerjava/api/model/MountType.java | 6 ++++- 3 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 docker-java-api/src/main/java/com/github/dockerjava/api/model/ImageOptions.java diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ImageOptions.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ImageOptions.java new file mode 100644 index 000000000..bc8b89acb --- /dev/null +++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ImageOptions.java @@ -0,0 +1,27 @@ +package com.github.dockerjava.api.model; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.io.Serializable; + +/** + * @since {@link RemoteApiVersion#VERSION_1_48} + */ +@EqualsAndHashCode +@ToString +public class ImageOptions extends DockerObject implements Serializable { + private static final long serialVersionUID = 1L; + @JsonProperty("Subpath") + private String subpath; + + public String getSubpath() { + return subpath; + } + + public ImageOptions withSubpath(String subpath) { + this.subpath = subpath; + return this; + } +} diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Mount.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Mount.java index 9bfe9b16e..3f17343c3 100644 --- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Mount.java +++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Mount.java @@ -57,6 +57,12 @@ public class Mount extends DockerObject implements Serializable { @JsonProperty("TmpfsOptions") private TmpfsOptions tmpfsOptions; + /** + * @since 1.48 + */ + @JsonProperty("ImageOptions") + private ImageOptions imageOptions; + /** * @see #type */ @@ -177,4 +183,23 @@ public Mount withTmpfsOptions(TmpfsOptions tmpfsOptions) { } return this; } + + /** + * @see #imageOptions + */ + @CheckForNull + public ImageOptions getImageOptions() { + return imageOptions; + } + + /** + * @see #imageOptions + */ + public Mount withImageOptions(ImageOptions imageOptions) { + this.imageOptions = imageOptions; + if (imageOptions != null) { + this.type = MountType.IMAGE; + } + return this; + } } diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/MountType.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/MountType.java index 219782a56..b522c9612 100644 --- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/MountType.java +++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/MountType.java @@ -18,6 +18,10 @@ public enum MountType { //@since 1.40 @JsonProperty("npipe") - NPIPE + NPIPE, + + //@since 1.48 + @JsonProperty("image") + IMAGE, } From 6ae1eb4481d22985018ec3bcd1c5e51628d14b5a Mon Sep 17 00:00:00 2001 From: Lars <60571459+LarsSven@users.noreply.github.com> Date: Thu, 20 Mar 2025 16:38:54 +0100 Subject: [PATCH 03/64] Add setters for security options and runtimes (#2384) --- .../com/github/dockerjava/api/model/Info.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Info.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Info.java index 75afefd2b..67348b86b 100644 --- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Info.java +++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Info.java @@ -1108,14 +1108,33 @@ public Info withIsolation(String isolation) { return this; } + /** + * @see #securityOptions + */ public List getSecurityOptions() { return securityOptions; } + /** + * @see #securityOptions + */ + public Info withSecurityOptions(List securityOptions) { + this.securityOptions = securityOptions; + return this; + } + /** * @see #runtimes */ public Map getRuntimes() { return runtimes; } + + /** + * @see #runtimes + */ + public Info withRuntimes(Map runtimes) { + this.runtimes = runtimes; + return this; + } } From ece155bc78dd48cdea2b75219e5950c70be29437 Mon Sep 17 00:00:00 2001 From: Oleg Kalnichevski Date: Tue, 1 Apr 2025 17:44:59 +0200 Subject: [PATCH 04/64] Upgrade Apache HttpClient to version 5.4 (#2364) * Upgraded Apache HttpClient to version 5.4.2; Fixed connection initialization for non-HTTP protocol * Remove usage of deprecated API --- docker-java-transport-httpclient5/pom.xml | 2 +- .../ApacheDockerHttpClientImpl.java | 123 ++++++++---------- .../HijackingHttpRequestExecutor.java | 8 +- 3 files changed, 58 insertions(+), 75 deletions(-) diff --git a/docker-java-transport-httpclient5/pom.xml b/docker-java-transport-httpclient5/pom.xml index 48b751d56..54c90185a 100644 --- a/docker-java-transport-httpclient5/pom.xml +++ b/docker-java-transport-httpclient5/pom.xml @@ -29,7 +29,7 @@ org.apache.httpcomponents.client5 httpclient5 - 5.0.3 + 5.4.2 diff --git a/docker-java-transport-httpclient5/src/main/java/com/github/dockerjava/httpclient5/ApacheDockerHttpClientImpl.java b/docker-java-transport-httpclient5/src/main/java/com/github/dockerjava/httpclient5/ApacheDockerHttpClientImpl.java index 4820c65e5..c97a2bc45 100644 --- a/docker-java-transport-httpclient5/src/main/java/com/github/dockerjava/httpclient5/ApacheDockerHttpClientImpl.java +++ b/docker-java-transport-httpclient5/src/main/java/com/github/dockerjava/httpclient5/ApacheDockerHttpClientImpl.java @@ -4,31 +4,34 @@ import com.github.dockerjava.transport.NamedPipeSocket; import com.github.dockerjava.transport.SSLConfig; import com.github.dockerjava.transport.UnixSocket; + +import org.apache.hc.client5.http.SystemDefaultDnsResolver; import org.apache.hc.client5.http.classic.methods.HttpUriRequestBase; +import org.apache.hc.client5.http.config.ConnectionConfig; import org.apache.hc.client5.http.config.RequestConfig; +import org.apache.hc.client5.http.impl.DefaultSchemePortResolver; import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; -import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse; import org.apache.hc.client5.http.impl.classic.HttpClients; +import org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator; import org.apache.hc.client5.http.impl.io.ManagedHttpClientConnectionFactory; import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager; -import org.apache.hc.client5.http.socket.ConnectionSocketFactory; -import org.apache.hc.client5.http.socket.PlainConnectionSocketFactory; -import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactory; +import org.apache.hc.client5.http.io.HttpClientConnectionOperator; +import org.apache.hc.client5.http.ssl.DefaultClientTlsStrategy; +import org.apache.hc.client5.http.ssl.TlsSocketStrategy; +import org.apache.hc.core5.http.ClassicHttpResponse; import org.apache.hc.core5.http.ConnectionClosedException; import org.apache.hc.core5.http.ContentLengthStrategy; import org.apache.hc.core5.http.Header; import org.apache.hc.core5.http.HttpHeaders; import org.apache.hc.core5.http.HttpHost; import org.apache.hc.core5.http.NameValuePair; -import org.apache.hc.core5.http.config.Registry; -import org.apache.hc.core5.http.config.RegistryBuilder; import org.apache.hc.core5.http.impl.DefaultContentLengthStrategy; -import org.apache.hc.core5.http.impl.io.EmptyInputStream; import org.apache.hc.core5.http.io.SocketConfig; import org.apache.hc.core5.http.io.entity.ByteArrayEntity; +import org.apache.hc.core5.http.io.entity.EmptyInputStream; import org.apache.hc.core5.http.io.entity.InputStreamEntity; -import org.apache.hc.core5.http.protocol.BasicHttpContext; import org.apache.hc.core5.http.protocol.HttpContext; +import org.apache.hc.core5.http.protocol.HttpCoreContext; import org.apache.hc.core5.net.URIAuthority; import org.apache.hc.core5.util.TimeValue; import org.apache.hc.core5.util.Timeout; @@ -38,7 +41,6 @@ import javax.net.ssl.SSLContext; import java.io.IOException; import java.io.InputStream; -import java.net.InetSocketAddress; import java.net.Socket; import java.net.URI; import java.time.Duration; @@ -61,7 +63,13 @@ protected ApacheDockerHttpClientImpl( Duration connectionTimeout, Duration responseTimeout ) { - Registry socketFactoryRegistry = createConnectionSocketFactoryRegistry(sslConfig, dockerHost); + SSLContext sslContext; + try { + sslContext = sslConfig != null ? sslConfig.getSSLContext() : null; + } catch (Exception e) { + throw new RuntimeException(e); + } + HttpClientConnectionOperator connectionOperator = createConnectionOperator(dockerHost, sslContext); switch (dockerHost.getScheme()) { case "unix": @@ -75,7 +83,7 @@ protected ApacheDockerHttpClientImpl( ? rawPath.substring(0, rawPath.length() - 1) : rawPath; host = new HttpHost( - socketFactoryRegistry.lookup("https") != null ? "https" : "http", + sslContext != null ? "https" : "http", dockerHost.getHost(), dockerHost.getPort() ); @@ -85,7 +93,10 @@ protected ApacheDockerHttpClientImpl( } PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager( - socketFactoryRegistry, + connectionOperator, + null, + null, + null, new ManagedHttpClientConnectionFactory( null, null, @@ -109,77 +120,49 @@ protected ApacheDockerHttpClientImpl( .setSoTimeout(Timeout.ZERO_MILLISECONDS) .build() ); - connectionManager.setValidateAfterInactivity(TimeValue.NEG_ONE_SECOND); connectionManager.setMaxTotal(maxConnections); connectionManager.setDefaultMaxPerRoute(maxConnections); - RequestConfig.Builder defaultRequest = RequestConfig.custom(); - if (connectionTimeout != null) { - defaultRequest.setConnectTimeout(connectionTimeout.toNanos(), TimeUnit.NANOSECONDS); - } - if (responseTimeout != null) { - defaultRequest.setResponseTimeout(responseTimeout.toNanos(), TimeUnit.NANOSECONDS); - } + connectionManager.setDefaultConnectionConfig(ConnectionConfig.custom() + .setValidateAfterInactivity(TimeValue.NEG_ONE_SECOND) + .setConnectTimeout(connectionTimeout != null ? Timeout.of(connectionTimeout.toNanos(), TimeUnit.NANOSECONDS) : null) + .build()); httpClient = HttpClients.custom() .setRequestExecutor(new HijackingHttpRequestExecutor(null)) .setConnectionManager(connectionManager) - .setDefaultRequestConfig(defaultRequest.build()) + .setDefaultRequestConfig(RequestConfig.custom() + .setResponseTimeout(responseTimeout != null ? Timeout.of(responseTimeout.toNanos(), TimeUnit.NANOSECONDS) : null) + .build()) .disableConnectionState() .build(); } - private Registry createConnectionSocketFactoryRegistry( - SSLConfig sslConfig, - URI dockerHost + private HttpClientConnectionOperator createConnectionOperator( + URI dockerHost, + SSLContext sslContext ) { - RegistryBuilder socketFactoryRegistryBuilder = RegistryBuilder.create(); - - if (sslConfig != null) { - try { - SSLContext sslContext = sslConfig.getSSLContext(); - if (sslContext != null) { - socketFactoryRegistryBuilder.register("https", new SSLConnectionSocketFactory(sslContext)); - } - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - return socketFactoryRegistryBuilder - .register("tcp", PlainConnectionSocketFactory.INSTANCE) - .register("http", PlainConnectionSocketFactory.INSTANCE) - .register("unix", new ConnectionSocketFactory() { - @Override - public Socket createSocket(HttpContext context) throws IOException { - return UnixSocket.get(dockerHost.getPath()); + String dockerHostScheme = dockerHost.getScheme(); + String dockerHostPath = dockerHost.getPath(); + TlsSocketStrategy tlsSocketStrategy = sslContext != null ? + new DefaultClientTlsStrategy(sslContext) : DefaultClientTlsStrategy.createSystemDefault(); + return new DefaultHttpClientConnectionOperator( + socksProxy -> { + if ("unix".equalsIgnoreCase(dockerHostScheme)) { + return UnixSocket.get(dockerHostPath); + } else if ("npipe".equalsIgnoreCase(dockerHostScheme)) { + return new NamedPipeSocket(dockerHostPath); + } else { + return socksProxy == null ? new Socket() : new Socket(socksProxy); } - - @Override - public Socket connectSocket(TimeValue timeValue, Socket socket, HttpHost httpHost, InetSocketAddress inetSocketAddress, - InetSocketAddress inetSocketAddress1, HttpContext httpContext) throws IOException { - return PlainConnectionSocketFactory.INSTANCE.connectSocket(timeValue, socket, httpHost, inetSocketAddress, - inetSocketAddress1, httpContext); - } - }) - .register("npipe", new ConnectionSocketFactory() { - @Override - public Socket createSocket(HttpContext context) { - return new NamedPipeSocket(dockerHost.getPath()); - } - - @Override - public Socket connectSocket(TimeValue timeValue, Socket socket, HttpHost httpHost, InetSocketAddress inetSocketAddress, - InetSocketAddress inetSocketAddress1, HttpContext httpContext) throws IOException { - return PlainConnectionSocketFactory.INSTANCE.connectSocket(timeValue, socket, httpHost, inetSocketAddress, - inetSocketAddress1, httpContext); - } - }) - .build(); + }, + DefaultSchemePortResolver.INSTANCE, + SystemDefaultDnsResolver.INSTANCE, + name -> "https".equalsIgnoreCase(name) ? tlsSocketStrategy : null); } @Override public Response execute(Request request) { - HttpContext context = new BasicHttpContext(); + HttpContext context = new HttpCoreContext(); HttpUriRequestBase httpUriRequest = new HttpUriRequestBase(request.method(), URI.create(pathPrefix + request.path())); httpUriRequest.setScheme(host.getSchemeName()); httpUriRequest.setAuthority(new URIAuthority(host.getHostName(), host.getPort())); @@ -203,7 +186,7 @@ public Response execute(Request request) { } try { - CloseableHttpResponse response = httpClient.execute(host, httpUriRequest, context); + ClassicHttpResponse response = httpClient.executeOpen(host, httpUriRequest, context); return new ApacheResponse(httpUriRequest, response); } catch (IOException e) { @@ -222,9 +205,9 @@ static class ApacheResponse implements Response { private final HttpUriRequestBase request; - private final CloseableHttpResponse response; + private final ClassicHttpResponse response; - ApacheResponse(HttpUriRequestBase httpUriRequest, CloseableHttpResponse response) { + ApacheResponse(HttpUriRequestBase httpUriRequest, ClassicHttpResponse response) { this.request = httpUriRequest; this.response = response; } diff --git a/docker-java-transport-httpclient5/src/main/java/com/github/dockerjava/httpclient5/HijackingHttpRequestExecutor.java b/docker-java-transport-httpclient5/src/main/java/com/github/dockerjava/httpclient5/HijackingHttpRequestExecutor.java index 59888a5dd..df8fbd059 100644 --- a/docker-java-transport-httpclient5/src/main/java/com/github/dockerjava/httpclient5/HijackingHttpRequestExecutor.java +++ b/docker-java-transport-httpclient5/src/main/java/com/github/dockerjava/httpclient5/HijackingHttpRequestExecutor.java @@ -44,7 +44,7 @@ public ClassicHttpResponse execute( InputStream hijackedInput = (InputStream) context.getAttribute(HIJACKED_INPUT_ATTRIBUTE); if (hijackedInput != null) { - return executeHijacked(request, conn, context, hijackedInput); + return executeHijacked(request, conn, (HttpCoreContext) context, hijackedInput); } return super.execute(request, conn, informationCallback, context); @@ -53,12 +53,12 @@ public ClassicHttpResponse execute( private ClassicHttpResponse executeHijacked( ClassicHttpRequest request, HttpClientConnection conn, - HttpContext context, + HttpCoreContext context, InputStream hijackedInput ) throws HttpException, IOException { try { - context.setAttribute(HttpCoreContext.SSL_SESSION, conn.getSSLSession()); - context.setAttribute(HttpCoreContext.CONNECTION_ENDPOINT, conn.getEndpointDetails()); + context.setSSLSession(conn.getSSLSession()); + context.setEndpointDetails(conn.getEndpointDetails()); final ProtocolVersion transportVersion = request.getVersion(); if (transportVersion != null) { context.setProtocolVersion(transportVersion); From 3a367b6ab2336cf1f61106ffa2c30545277b7ad3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 10:24:18 -0600 Subject: [PATCH 05/64] Bump org.assertj:assertj-core from 3.24.2 to 3.27.3 (#2291) Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.24.2 to 3.27.3. - [Release notes](https://github.com/assertj/assertj/releases) - [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.24.2...assertj-build-3.27.3) --- updated-dependencies: - dependency-name: org.assertj:assertj-core dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docker-java-transport-tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-java-transport-tck/pom.xml b/docker-java-transport-tck/pom.xml index 2e4bd79ce..4d6dd5738 100644 --- a/docker-java-transport-tck/pom.xml +++ b/docker-java-transport-tck/pom.xml @@ -34,7 +34,7 @@ org.assertj assertj-core - 3.24.2 + 3.27.3 From 97ea93b416d1e29b8614a7278f8a5850111735d5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 10:25:34 -0600 Subject: [PATCH 06/64] Bump org.apache.httpcomponents.client5:httpclient5 from 5.4.2 to 5.4.3 (#2272) Bumps [org.apache.httpcomponents.client5:httpclient5](https://github.com/apache/httpcomponents-client) from 5.4.2 to 5.4.3. - [Changelog](https://github.com/apache/httpcomponents-client/blob/master/RELEASE_NOTES.txt) - [Commits](https://github.com/apache/httpcomponents-client/compare/rel/v5.4.2...rel/v5.4.3) --- updated-dependencies: - dependency-name: org.apache.httpcomponents.client5:httpclient5 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docker-java-transport-httpclient5/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-java-transport-httpclient5/pom.xml b/docker-java-transport-httpclient5/pom.xml index 54c90185a..71f0ada1d 100644 --- a/docker-java-transport-httpclient5/pom.xml +++ b/docker-java-transport-httpclient5/pom.xml @@ -29,7 +29,7 @@ org.apache.httpcomponents.client5 httpclient5 - 5.4.2 + 5.4.3 From 24204a57ca95ea8108709843eba5750ba3a3bc33 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 10:30:51 -0600 Subject: [PATCH 07/64] Bump junixsocket.version from 2.6.1 to 2.10.1 (#2249) Bumps `junixsocket.version` from 2.6.1 to 2.10.1. Updates `com.kohlschutter.junixsocket:junixsocket-common` from 2.6.1 to 2.10.1 - [Release notes](https://github.com/kohlschutter/junixsocket/releases) - [Commits](https://github.com/kohlschutter/junixsocket/compare/junixsocket-2.6.1...junixsocket-2.10.1) --- updated-dependencies: - dependency-name: com.kohlschutter.junixsocket:junixsocket-common dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: com.kohlschutter.junixsocket:junixsocket-native-common dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f58a3d448..00125501f 100644 --- a/pom.xml +++ b/pom.xml @@ -67,7 +67,7 @@ 1.7.30 1.76 - 2.6.1 + 2.10.1 19.0 From ed50e5c186fb66e462d5d77c9371c874e8bf6eef Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 10:31:35 -0600 Subject: [PATCH 08/64] Bump org.junit.jupiter:junit-jupiter from 5.10.0 to 5.12.1 (#2241) Bumps [org.junit.jupiter:junit-jupiter](https://github.com/junit-team/junit5) from 5.10.0 to 5.12.1. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.10.0...r5.12.1) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docker-java-api/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-java-api/pom.xml b/docker-java-api/pom.xml index 82d176e38..ce52af8c2 100644 --- a/docker-java-api/pom.xml +++ b/docker-java-api/pom.xml @@ -50,7 +50,7 @@ org.junit.jupiter junit-jupiter - 5.10.0 + 5.12.1 test From 37a7d00e6fca2e4d33bfd37163af77ef50c19bb6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 10:32:17 -0600 Subject: [PATCH 09/64] Bump com.github.siom79.japicmp:japicmp-maven-plugin (#2238) Bumps [com.github.siom79.japicmp:japicmp-maven-plugin](https://github.com/siom79/japicmp) from 0.18.2 to 0.23.1. - [Release notes](https://github.com/siom79/japicmp/releases) - [Changelog](https://github.com/siom79/japicmp/blob/master/release.py) - [Commits](https://github.com/siom79/japicmp/compare/japicmp-base-0.18.2...japicmp-base-0.23.1) --- updated-dependencies: - dependency-name: com.github.siom79.japicmp:japicmp-maven-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 00125501f..ca273f658 100644 --- a/pom.xml +++ b/pom.xml @@ -244,7 +244,7 @@ com.github.siom79.japicmp japicmp-maven-plugin - 0.18.3 + 0.23.1 From b7415f805d39071e3484d2bdcb8177013aad9aac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 10:33:06 -0600 Subject: [PATCH 10/64] Bump org.apache.commons:commons-lang3 from 3.12.0 to 3.17.0 (#2259) Bumps org.apache.commons:commons-lang3 from 3.12.0 to 3.17.0. --- updated-dependencies: - dependency-name: org.apache.commons:commons-lang3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ca273f658..c05699a5f 100644 --- a/pom.xml +++ b/pom.xml @@ -63,7 +63,7 @@ 4.5.12 1.21 2.13.0 - 3.12.0 + 3.17.0 1.7.30 1.76 From 3580299112bf27953a64f80c7de1bb0c7075a7bf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 10:40:00 -0600 Subject: [PATCH 11/64] Bump net.java.dev.jna:jna from 5.13.0 to 5.17.0 (#2273) Bumps [net.java.dev.jna:jna](https://github.com/java-native-access/jna) from 5.13.0 to 5.17.0. - [Changelog](https://github.com/java-native-access/jna/blob/master/CHANGES.md) - [Commits](https://github.com/java-native-access/jna/compare/5.13.0...5.17.0) --- updated-dependencies: - dependency-name: net.java.dev.jna:jna dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docker-java-transport-httpclient5/pom.xml | 2 +- docker-java-transport-okhttp/pom.xml | 2 +- docker-java-transport/pom.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docker-java-transport-httpclient5/pom.xml b/docker-java-transport-httpclient5/pom.xml index 71f0ada1d..0e82715e9 100644 --- a/docker-java-transport-httpclient5/pom.xml +++ b/docker-java-transport-httpclient5/pom.xml @@ -35,7 +35,7 @@ net.java.dev.jna jna - 5.13.0 + 5.17.0 diff --git a/docker-java-transport-okhttp/pom.xml b/docker-java-transport-okhttp/pom.xml index df14ad077..3bac0cead 100644 --- a/docker-java-transport-okhttp/pom.xml +++ b/docker-java-transport-okhttp/pom.xml @@ -35,7 +35,7 @@ net.java.dev.jna jna - 5.13.0 + 5.17.0 diff --git a/docker-java-transport/pom.xml b/docker-java-transport/pom.xml index 2ca377dd6..3f595903a 100644 --- a/docker-java-transport/pom.xml +++ b/docker-java-transport/pom.xml @@ -37,7 +37,7 @@ net.java.dev.jna jna - 5.13.0 + 5.17.0 provided From 31d5a2126569d30b7c630a573c3dfe600237f1b8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 10:49:07 -0600 Subject: [PATCH 12/64] Bump commons-io:commons-io from 2.13.0 to 2.18.0 (#2263) Bumps commons-io:commons-io from 2.13.0 to 2.18.0. --- updated-dependencies: - dependency-name: commons-io:commons-io dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c05699a5f..ba67f88c6 100644 --- a/pom.xml +++ b/pom.xml @@ -62,7 +62,7 @@ 2.10.3 4.5.12 1.21 - 2.13.0 + 2.18.0 3.17.0 1.7.30 From 41acb642c1209089fa3af875e4f4b3bcc4603817 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 10:55:01 -0600 Subject: [PATCH 13/64] Bump org.bouncycastle:bcpkix-jdk18on from 1.76 to 1.80 (#2254) Bumps [org.bouncycastle:bcpkix-jdk18on](https://github.com/bcgit/bc-java) from 1.76 to 1.80. - [Changelog](https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.html) - [Commits](https://github.com/bcgit/bc-java/commits) --- updated-dependencies: - dependency-name: org.bouncycastle:bcpkix-jdk18on dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ba67f88c6..3c75097d6 100644 --- a/pom.xml +++ b/pom.xml @@ -66,7 +66,7 @@ 3.17.0 1.7.30 - 1.76 + 1.80 2.10.1 19.0 From 4a9bf71248a15c35896ffbd56d737d562e8e909a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 10:56:40 -0600 Subject: [PATCH 14/64] Bump netty.version from 4.1.46.Final to 4.1.119.Final (#2302) Bumps `netty.version` from 4.1.46.Final to 4.1.119.Final. Updates `io.netty:netty-codec-http` from 4.1.46.Final to 4.1.119.Final - [Commits](https://github.com/netty/netty/compare/netty-4.1.46.Final...netty-4.1.119.Final) Updates `io.netty:netty-handler` from 4.1.46.Final to 4.1.106.Final - [Commits](https://github.com/netty/netty/compare/netty-4.1.46.Final...netty-4.1.119.Final) Updates `io.netty:netty-handler-proxy` from 4.1.46.Final to 4.1.106.Final - [Commits](https://github.com/netty/netty/compare/netty-4.1.46.Final...netty-4.1.119.Final) Updates `io.netty:netty-transport-native-epoll` from 4.1.46.Final to 4.1.106.Final - [Commits](https://github.com/netty/netty/compare/netty-4.1.46.Final...netty-4.1.119.Final) Updates `io.netty:netty-transport-native-kqueue` from 4.1.46.Final to 4.1.106.Final - [Commits](https://github.com/netty/netty/compare/netty-4.1.46.Final...netty-4.1.119.Final) --- updated-dependencies: - dependency-name: io.netty:netty-codec-http dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: io.netty:netty-handler dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: io.netty:netty-handler-proxy dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: io.netty:netty-transport-native-epoll dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: io.netty:netty-transport-native-kqueue dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3c75097d6..71c5c6025 100644 --- a/pom.xml +++ b/pom.xml @@ -72,7 +72,7 @@ 1.2.3 - 4.1.46.Final + 4.1.119.Final 2.2 1.8 2.3.3 From 353554b001ecdbf556326b83e7d56d0b56b9dd1f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 11:19:35 -0600 Subject: [PATCH 15/64] Bump jackson.version from 2.8.8 to 2.18.3 (#2283) Bumps `jackson.version` from 2.8.8 to 2.18.3. Updates `com.fasterxml.jackson.core:jackson-annotations` from 2.8.8 to 2.18.3 - [Commits](https://github.com/FasterXML/jackson/commits) Updates `com.fasterxml.jackson.core:jackson-databind` from 2.8.8 to 2.18.3 - [Commits](https://github.com/FasterXML/jackson/commits) --- updated-dependencies: - dependency-name: com.fasterxml.jackson.core:jackson-annotations dependency-type: direct:development update-type: version-update:semver-minor - dependency-name: com.fasterxml.jackson.core:jackson-databind dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docker-java/pom.xml | 8 ++++---- pom.xml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docker-java/pom.xml b/docker-java/pom.xml index e3c3690f1..a80e7eeef 100644 --- a/docker-java/pom.xml +++ b/docker-java/pom.xml @@ -125,16 +125,16 @@ com.fasterxml.jackson.core jackson-databind - - 2.8.8 + + 2.18.3 test com.fasterxml.jackson.core jackson-annotations - - 2.8.8 + + 2.18.3 test diff --git a/pom.xml b/pom.xml index 71c5c6025..63d09355c 100644 --- a/pom.xml +++ b/pom.xml @@ -58,7 +58,7 @@ 1.8 2.30.1 - 2.10.3 + 2.18.3 2.10.3 4.5.12 1.21 From 4fe0ae49268e873eb358b994fdd277718e287402 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 11:31:36 -0600 Subject: [PATCH 16/64] Bump com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider (#2281) Bumps com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider from 2.10.3 to 2.18.3. --- updated-dependencies: - dependency-name: com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 63d09355c..05585d331 100644 --- a/pom.xml +++ b/pom.xml @@ -59,7 +59,7 @@ 2.30.1 2.18.3 - 2.10.3 + 2.18.3 4.5.12 1.21 2.18.0 From 4bfb74f88485a36dd0c09ae093edbcaa66d93722 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 11:38:22 -0600 Subject: [PATCH 17/64] Bump org.projectlombok:lombok from 1.18.22 to 1.18.38 (#2210) Bumps [org.projectlombok:lombok](https://github.com/projectlombok/lombok) from 1.18.22 to 1.18.38. - [Changelog](https://github.com/projectlombok/lombok/blob/master/doc/changelog.markdown) - [Commits](https://github.com/projectlombok/lombok/compare/v1.18.22...v1.18.38) --- updated-dependencies: - dependency-name: org.projectlombok:lombok dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docker-java-api/pom.xml | 2 +- docker-java/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-java-api/pom.xml b/docker-java-api/pom.xml index ce52af8c2..839d6ccb2 100644 --- a/docker-java-api/pom.xml +++ b/docker-java-api/pom.xml @@ -42,7 +42,7 @@ org.projectlombok lombok - 1.18.30 + 1.18.38 provided diff --git a/docker-java/pom.xml b/docker-java/pom.xml index a80e7eeef..de8cb9c88 100644 --- a/docker-java/pom.xml +++ b/docker-java/pom.xml @@ -141,7 +141,7 @@ org.projectlombok lombok - 1.18.30 + 1.18.38 provided From a349b48b20b51c35129c6bbbb9535d226d9c1c36 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 12:04:25 -0600 Subject: [PATCH 18/64] Bump org.apache.commons:commons-compress from 1.21 to 1.27.1 (#2256) Bumps org.apache.commons:commons-compress from 1.21 to 1.27.1. --- updated-dependencies: - dependency-name: org.apache.commons:commons-compress dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 05585d331..8ec664b11 100644 --- a/pom.xml +++ b/pom.xml @@ -61,7 +61,7 @@ 2.18.3 2.18.3 4.5.12 - 1.21 + 1.27.1 2.18.0 3.17.0 1.7.30 From 77766d0081468ccc2595b92bf2c6ef8ec4ebc455 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 12:18:08 -0600 Subject: [PATCH 19/64] Bump org.immutables:value from 2.8.2 to 2.10.1 (#2220) Bumps [org.immutables:value](https://github.com/immutables/immutables) from 2.8.2 to 2.10.1. - [Release notes](https://github.com/immutables/immutables/releases) - [Commits](https://github.com/immutables/immutables/compare/2.8.2...2.10.1) --- updated-dependencies: - dependency-name: org.immutables:value dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docker-java-transport/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-java-transport/pom.xml b/docker-java-transport/pom.xml index 3f595903a..96f1f850a 100644 --- a/docker-java-transport/pom.xml +++ b/docker-java-transport/pom.xml @@ -30,7 +30,7 @@ org.immutables value - 2.8.2 + 2.10.1 provided From a404bd1aa4ad692da58c10b5a75e8774468216de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?= Date: Tue, 1 Apr 2025 12:36:28 -0600 Subject: [PATCH 20/64] Fix InspectContainerResponse data types to be able to hold an int64 (#2392) * Fix data types to be able to hold an int64 * Add japicmp exclusions in docker-java-api Fixes #2321 --------- Co-authored-by: Torsten Krah --- docker-java-api/pom.xml | 9 +++++++++ .../dockerjava/api/command/InspectContainerResponse.java | 8 ++++---- .../com/github/dockerjava/cmd/InspectContainerCmdIT.java | 4 ++-- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/docker-java-api/pom.xml b/docker-java-api/pom.xml index 839d6ccb2..1138a27f7 100644 --- a/docker-java-api/pom.xml +++ b/docker-java-api/pom.xml @@ -84,6 +84,15 @@ com.github.siom79.japicmp japicmp-maven-plugin + + + + + com.github.dockerjava.api.command.InspectContainerResponse#getSizeRootFs() + com.github.dockerjava.api.command.InspectContainerResponse#getSizeRw() + + + diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectContainerResponse.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectContainerResponse.java index 94207fd2c..f06bd4ed9 100644 --- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectContainerResponse.java +++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectContainerResponse.java @@ -61,10 +61,10 @@ public class InspectContainerResponse extends DockerObject { private String id; @JsonProperty("SizeRootFs") - private Integer sizeRootFs; + private Long sizeRootFs; @JsonProperty("SizeRw") - private Integer sizeRw; + private Long sizeRw; @JsonProperty("Image") private String imageId; @@ -124,11 +124,11 @@ public String getId() { return id; } - public Integer getSizeRootFs() { + public Long getSizeRootFs() { return sizeRootFs; } - public Integer getSizeRw() { + public Long getSizeRw() { return sizeRw; } diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java index 54d900db8..cc1468f7f 100644 --- a/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java +++ b/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java @@ -100,9 +100,9 @@ public void inspectContainerWithSize() throws DockerException { // TODO check swarm if (isNotSwarm(dockerRule.getClient())) { assertNotNull(containerInfo.getSizeRootFs()); - assertTrue(containerInfo.getSizeRootFs().intValue() > 0); + assertTrue(containerInfo.getSizeRootFs() > 0L); assertNotNull(containerInfo.getSizeRw()); - assertTrue(containerInfo.getSizeRw().intValue() == 0); + assertEquals(0L, containerInfo.getSizeRw().longValue()); } } From cb72675f16ce0f5c3561a9c6cf8925bc048d1034 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez?= Date: Tue, 1 Apr 2025 12:41:44 -0600 Subject: [PATCH 21/64] Run dependabot on Tuesday --- .github/dependabot.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 7dec19aef..d301147be 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -4,5 +4,6 @@ updates: directory: "/" schedule: interval: weekly + day: tuesday open-pull-requests-limit: 99 rebase-strategy: disabled From 1d6c3445c7877e0511e1fcb55708568b254831f6 Mon Sep 17 00:00:00 2001 From: Nikita Nikolenko Date: Tue, 1 Apr 2025 20:46:49 +0200 Subject: [PATCH 22/64] Add some missed options to UpdateContainerCmd (#2389) * Add some missed options to UpdateContainerCmd * Delete old cpuPeriod and cpuQuota functions * Add update container response tests --- docker-java-api/pom.xml | 5 +- .../api/command/UpdateContainerCmd.java | 97 +++++- .../core/command/UpdateContainerCmdImpl.java | 293 +++++++++++++++++- .../api/command/CommandJSONSamples.java | 4 +- .../command/UpdateContainerResponseTest.java | 33 ++ .../dockerjava/cmd/UpdateContainerCmdIT.java | 4 +- .../updateContainerResponse_empty.json | 1 + .../updateContainerResponse_warnings.json | 5 + 8 files changed, 420 insertions(+), 22 deletions(-) create mode 100644 docker-java/src/test/java/com/github/dockerjava/api/command/UpdateContainerResponseTest.java create mode 100644 docker-java/src/test/resources/com/github/dockerjava/api/command/updateContainerResponse_empty.json create mode 100644 docker-java/src/test/resources/com/github/dockerjava/api/command/updateContainerResponse_warnings.json diff --git a/docker-java-api/pom.xml b/docker-java-api/pom.xml index 1138a27f7..8bfd9e8d4 100644 --- a/docker-java-api/pom.xml +++ b/docker-java-api/pom.xml @@ -87,7 +87,10 @@ - + com.github.dockerjava.api.command.UpdateContainerCmd#getCpuPeriod() + com.github.dockerjava.api.command.UpdateContainerCmd#withCpuPeriod(java.lang.Integer) + com.github.dockerjava.api.command.UpdateContainerCmd#getCpuQuota() + com.github.dockerjava.api.command.UpdateContainerCmd#withCpuQuota(java.lang.Integer) com.github.dockerjava.api.command.InspectContainerResponse#getSizeRootFs() com.github.dockerjava.api.command.InspectContainerResponse#getSizeRw() diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/UpdateContainerCmd.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/UpdateContainerCmd.java index 82fbca5f8..d53bcdcdf 100644 --- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/UpdateContainerCmd.java +++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/UpdateContainerCmd.java @@ -1,9 +1,16 @@ package com.github.dockerjava.api.command; +import com.github.dockerjava.api.model.BlkioRateDevice; +import com.github.dockerjava.api.model.BlkioWeightDevice; +import com.github.dockerjava.api.model.Device; +import com.github.dockerjava.api.model.DeviceRequest; +import com.github.dockerjava.api.model.RestartPolicy; +import com.github.dockerjava.api.model.Ulimit; import com.github.dockerjava.api.model.UpdateContainerResponse; import javax.annotation.CheckForNull; import javax.annotation.Nonnull; +import java.util.List; /** * @author Kanstantsin Shautsou @@ -13,22 +20,47 @@ public interface UpdateContainerCmd extends SyncDockerCmd getBlkioWeightDevice(); + + UpdateContainerCmd withBlkioWeightDevice(List blkioWeightDevice); @CheckForNull - Integer getCpuPeriod(); + List getBlkioDeviceReadBps(); - UpdateContainerCmd withCpuPeriod(Integer cpuPeriod); + UpdateContainerCmd withBlkioDeviceReadBps(List blkioDeviceReadBps); @CheckForNull - Integer getCpuQuota(); + List getBlkioDeviceWriteBps(); - UpdateContainerCmd withCpuQuota(Integer cpuQuota); + UpdateContainerCmd withBlkioDeviceWriteBps(List blkioDeviceWriteBps); + + @CheckForNull + List getBlkioDeviceReadIOps(); + + UpdateContainerCmd withBlkioDeviceReadIOps(List blkioDeviceReadIOps); + + @CheckForNull + List getBlkioDeviceWriteIOps(); + + UpdateContainerCmd withBlkioDeviceWriteIOps(List blkioDeviceWriteIOps); + + @CheckForNull + Long getCpuPeriod(); + + UpdateContainerCmd withCpuPeriod(Long cpuPeriod); + + @CheckForNull + Long getCpuQuota(); + + UpdateContainerCmd withCpuQuota(Long cpuQuota); @CheckForNull String getCpusetCpus(); @@ -45,6 +77,31 @@ public interface UpdateContainerCmd extends SyncDockerCmd getDevices(); + + UpdateContainerCmd withDevices(List devices); + + @CheckForNull + List getDeviceCgroupRules(); + + UpdateContainerCmd withDeviceCgroupRules(List deviceCgroupRules); + + @CheckForNull + List getDeviceRequests(); + + UpdateContainerCmd withDeviceRequests(List deviceRequests); + @CheckForNull Long getKernelMemory(); @@ -65,6 +122,36 @@ public interface UpdateContainerCmd extends SyncDockerCmd getUlimits(); + + UpdateContainerCmd withUlimits(List ulimits); + + @CheckForNull + RestartPolicy getRestartPolicy(); + + UpdateContainerCmd withRestartPolicy(RestartPolicy restartPolicy); + interface Exec extends DockerCmdSyncExec { } } diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/UpdateContainerCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/UpdateContainerCmdImpl.java index 14357ba08..47ab710eb 100644 --- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/UpdateContainerCmdImpl.java +++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/UpdateContainerCmdImpl.java @@ -4,6 +4,12 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.github.dockerjava.api.command.UpdateContainerCmd; import com.github.dockerjava.api.exception.NotFoundException; +import com.github.dockerjava.api.model.BlkioRateDevice; +import com.github.dockerjava.api.model.BlkioWeightDevice; +import com.github.dockerjava.api.model.Device; +import com.github.dockerjava.api.model.DeviceRequest; +import com.github.dockerjava.api.model.RestartPolicy; +import com.github.dockerjava.api.model.Ulimit; import com.github.dockerjava.api.model.UpdateContainerResponse; import com.github.dockerjava.core.RemoteApiVersion; import org.apache.commons.lang3.builder.EqualsBuilder; @@ -12,6 +18,7 @@ import javax.annotation.CheckForNull; import javax.annotation.Nonnull; +import java.util.List; /** * @author Kanstantsin Shautsou @@ -28,14 +35,38 @@ public class UpdateContainerCmdImpl extends AbstrDockerCmd blkioWeightDevice; + + @JsonProperty("BlkioDeviceReadBps") + private List blkioDeviceReadBps; + + @JsonProperty("BlkioDeviceWriteBps") + private List blkioDeviceWriteBps; + + @JsonProperty("BlkioDeviceReadIOps") + private List blkioDeviceReadIOps; + + @JsonProperty("BlkioDeviceWriteIOps") + private List blkioDeviceWriteIOps; + @JsonProperty("CpuShares") private Integer cpuShares; @JsonProperty("CpuPeriod") - private Integer cpuPeriod; + private Long cpuPeriod; @JsonProperty("CpuQuota") - private Integer cpuQuota; + private Long cpuQuota; + + @JsonProperty("CpuRealtimePeriod") + private Long cpuRealtimePeriod; + + @JsonProperty("CpuRealtimeRuntime") + private Long cpuRealtimeRuntime; + + @JsonProperty("NanoCpus") + private Long nanoCPUs; @JsonProperty("CpusetCpus") private String cpusetCpus; @@ -43,6 +74,18 @@ public class UpdateContainerCmdImpl extends AbstrDockerCmd devices; + + @JsonProperty("DeviceCgroupRules") + private List deviceCgroupRules; + + /** + * @since {@link com.github.dockerjava.core.RemoteApiVersion#VERSION_1_40} + */ + @JsonProperty("DeviceRequests") + private List deviceRequests; + @JsonProperty("Memory") private Long memory; @@ -55,11 +98,43 @@ public class UpdateContainerCmdImpl extends AbstrDockerCmd ulimits; + + @JsonProperty("RestartPolicy") + private RestartPolicy restartPolicy; + public UpdateContainerCmdImpl(UpdateContainerCmd.Exec exec, String containerId) { super(exec); withContainerId(containerId); } + /** + * @see #containerId + */ + @CheckForNull + @JsonIgnore + public String getContainerId() { + return containerId; + } + + /** + * @see #containerId + */ + public UpdateContainerCmd withContainerId(@Nonnull String containerId) { + this.containerId = containerId; + return this; + } + /** * @see #blkioWeight */ @@ -77,19 +152,68 @@ public UpdateContainerCmd withBlkioWeight(Integer blkioWeight) { } /** - * @see #containerId + * @see #blkioWeightDevice */ @CheckForNull - @JsonIgnore - public String getContainerId() { - return containerId; + public List getBlkioWeightDevice() { + return blkioWeightDevice; + } + + public UpdateContainerCmd withBlkioWeightDevice(List blkioWeightDevice) { + this.blkioWeightDevice = blkioWeightDevice; + return this; } /** - * @see #containerId + * @see #blkioDeviceReadBps */ - public UpdateContainerCmd withContainerId(@Nonnull String containerId) { - this.containerId = containerId; + @CheckForNull + public List getBlkioDeviceReadBps() { + return blkioDeviceReadBps; + } + + public UpdateContainerCmd withBlkioDeviceReadBps(List blkioDeviceReadBps) { + this.blkioDeviceReadBps = blkioDeviceReadBps; + return this; + } + + /** + * @see #blkioDeviceWriteBps + */ + @CheckForNull + public List getBlkioDeviceWriteBps() { + return blkioDeviceWriteBps; + } + + public UpdateContainerCmd withBlkioDeviceWriteBps(List blkioDeviceWriteBps) { + this.blkioDeviceWriteBps = blkioDeviceWriteBps; + return this; + } + + /** + * @see #blkioDeviceReadIOps + */ + @CheckForNull + public List getBlkioDeviceReadIOps() { + return blkioDeviceReadIOps; + } + + public UpdateContainerCmd withBlkioDeviceReadIOps(List blkioDeviceReadIOps) { + this.blkioDeviceReadIOps = blkioDeviceReadIOps; + return this; + } + + /** + * @see #blkioDeviceWriteIOps + */ + @CheckForNull + public List getBlkioDeviceWriteIOps() { + return blkioDeviceWriteIOps; + } + + @Override + public UpdateContainerCmd withBlkioDeviceWriteIOps(List blkioDeviceWriteIOps) { + this.blkioDeviceWriteIOps = blkioDeviceWriteIOps; return this; } @@ -97,14 +221,14 @@ public UpdateContainerCmd withContainerId(@Nonnull String containerId) { * @see #cpuPeriod */ @CheckForNull - public Integer getCpuPeriod() { + public Long getCpuPeriod() { return cpuPeriod; } /** * @see #cpuPeriod */ - public UpdateContainerCmd withCpuPeriod(Integer cpuPeriod) { + public UpdateContainerCmd withCpuPeriod(Long cpuPeriod) { this.cpuPeriod = cpuPeriod; return this; } @@ -113,14 +237,14 @@ public UpdateContainerCmd withCpuPeriod(Integer cpuPeriod) { * @see #cpuQuota */ @CheckForNull - public Integer getCpuQuota() { + public Long getCpuQuota() { return cpuQuota; } /** * @see #cpuQuota */ - public UpdateContainerCmd withCpuQuota(Integer cpuQuota) { + public UpdateContainerCmd withCpuQuota(Long cpuQuota) { this.cpuQuota = cpuQuota; return this; } @@ -173,6 +297,71 @@ public UpdateContainerCmd withCpuShares(Integer cpuShares) { return this; } + /** + * @see #cpuRealtimePeriod + */ + @CheckForNull + public Long getCpuRealtimePeriod() { + return cpuRealtimePeriod; + } + + public UpdateContainerCmd withCpuRealtimePeriod(Long cpuRealtimePeriod) { + this.cpuRealtimePeriod = cpuRealtimePeriod; + return this; + } + + /** + * @see #cpuRealtimeRuntime + */ + @CheckForNull + public Long getCpuRealtimeRuntime() { + return cpuRealtimeRuntime; + } + + public UpdateContainerCmd withCpuRealtimeRuntime(Long cpuRealtimeRuntime) { + this.cpuRealtimeRuntime = cpuRealtimeRuntime; + return this; + } + + /** + * @see #devices + */ + @CheckForNull + public List getDevices() { + return devices; + } + + public UpdateContainerCmd withDevices(List devices) { + this.devices = devices; + return this; + } + + /** + * @see #deviceCgroupRules + */ + @CheckForNull + public List getDeviceCgroupRules() { + return deviceCgroupRules; + } + + public UpdateContainerCmd withDeviceCgroupRules(List deviceCgroupRules) { + this.deviceCgroupRules = deviceCgroupRules; + return this; + } + + /** + * @see #deviceRequests + */ + @CheckForNull + public List getDeviceRequests() { + return deviceRequests; + } + + public UpdateContainerCmd withDeviceRequests(List deviceRequests) { + this.deviceRequests = deviceRequests; + return this; + } + /** * @see #kernelMemory */ @@ -237,6 +426,84 @@ public UpdateContainerCmd withMemorySwap(Long memorySwap) { return this; } + /** + * @see #nanoCPUs + */ + @CheckForNull + public Long getNanoCPUs() { + return nanoCPUs; + } + + public UpdateContainerCmd withNanoCPUs(Long nanoCPUs) { + this.nanoCPUs = nanoCPUs; + return this; + } + + /** + * @see #oomKillDisable + */ + @CheckForNull + public Boolean getOomKillDisable() { + return oomKillDisable; + } + + public UpdateContainerCmd withOomKillDisable(Boolean oomKillDisable) { + this.oomKillDisable = oomKillDisable; + return this; + } + + /** + * @see #init + */ + @CheckForNull + public Boolean getInit() { + return init; + } + + public UpdateContainerCmd withInit(Boolean init) { + this.init = init; + return this; + } + + /** + * @see #pidsLimit + */ + @CheckForNull + public Long getPidsLimit() { + return pidsLimit; + } + + public UpdateContainerCmd withPidsLimit(Long pidsLimit) { + this.pidsLimit = pidsLimit; + return this; + } + + /** + * @see #ulimits + */ + @CheckForNull + public List getUlimits() { + return ulimits; + } + + public UpdateContainerCmd withUlimits(List ulimits) { + this.ulimits = ulimits; + return this; + } + + /** + * @see #restartPolicy + */ + @CheckForNull + public RestartPolicy getRestartPolicy() { + return restartPolicy; + } + + public UpdateContainerCmd withRestartPolicy(RestartPolicy restartPolicy) { + this.restartPolicy = restartPolicy; + return this; + } + /** * @throws NotFoundException No such container */ diff --git a/docker-java/src/test/java/com/github/dockerjava/api/command/CommandJSONSamples.java b/docker-java/src/test/java/com/github/dockerjava/api/command/CommandJSONSamples.java index 0cf5141d4..23ef4b7f2 100644 --- a/docker-java/src/test/java/com/github/dockerjava/api/command/CommandJSONSamples.java +++ b/docker-java/src/test/java/com/github/dockerjava/api/command/CommandJSONSamples.java @@ -28,7 +28,9 @@ public enum CommandJSONSamples implements JSONResourceRef { inspectContainerResponse_full_1_21, inspectContainerResponse_full_1_26a, inspectContainerResponse_full_1_26b, - inspectContainerResponse_empty; + inspectContainerResponse_empty, + updateContainerResponse_empty, + updateContainerResponse_warnings; @Override public String getFileName() { diff --git a/docker-java/src/test/java/com/github/dockerjava/api/command/UpdateContainerResponseTest.java b/docker-java/src/test/java/com/github/dockerjava/api/command/UpdateContainerResponseTest.java new file mode 100644 index 000000000..300a5c324 --- /dev/null +++ b/docker-java/src/test/java/com/github/dockerjava/api/command/UpdateContainerResponseTest.java @@ -0,0 +1,33 @@ +package com.github.dockerjava.api.command; + +import com.github.dockerjava.api.model.UpdateContainerResponse; +import org.junit.Test; + +import java.io.IOException; +import java.util.List; + +import static com.github.dockerjava.test.serdes.JSONTestHelper.testRoundTrip; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +public class UpdateContainerResponseTest { + @Test + public void roundTrip_empty() throws IOException { + UpdateContainerResponse response = testRoundTrip(CommandJSONSamples.updateContainerResponse_empty, UpdateContainerResponse.class); + assertNull(response.getWarnings()); + } + + @Test + public void roundTrip_warnings() throws IOException { + UpdateContainerResponse response = testRoundTrip(CommandJSONSamples.updateContainerResponse_warnings, + UpdateContainerResponse.class); + + List warnings = response.getWarnings(); + assertNotNull(warnings); + assertEquals(1, warnings.size()); + + final String warning = warnings.get(0); + assertEquals("Published ports are discarded when using host network mode", warning); + } +} diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/UpdateContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/UpdateContainerCmdIT.java index e5bb55499..e1e637809 100644 --- a/docker-java/src/test/java/com/github/dockerjava/cmd/UpdateContainerCmdIT.java +++ b/docker-java/src/test/java/com/github/dockerjava/cmd/UpdateContainerCmdIT.java @@ -48,8 +48,8 @@ public void updateContainer() throws DockerException { dockerRule.getClient().updateContainerCmd(containerId) .withBlkioWeight(300) .withCpuShares(512) - .withCpuPeriod(100000) - .withCpuQuota(50000) + .withCpuPeriod(100000L) + .withCpuQuota(50000L) // .withCpusetCpus("0") // depends on env .withCpusetMems("0") // .withMemory(209715200L + 2L) diff --git a/docker-java/src/test/resources/com/github/dockerjava/api/command/updateContainerResponse_empty.json b/docker-java/src/test/resources/com/github/dockerjava/api/command/updateContainerResponse_empty.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/docker-java/src/test/resources/com/github/dockerjava/api/command/updateContainerResponse_empty.json @@ -0,0 +1 @@ +{} diff --git a/docker-java/src/test/resources/com/github/dockerjava/api/command/updateContainerResponse_warnings.json b/docker-java/src/test/resources/com/github/dockerjava/api/command/updateContainerResponse_warnings.json new file mode 100644 index 000000000..edeaedc7a --- /dev/null +++ b/docker-java/src/test/resources/com/github/dockerjava/api/command/updateContainerResponse_warnings.json @@ -0,0 +1,5 @@ +{ + "Warnings": [ + "Published ports are discarded when using host network mode" + ] +} From d9b653361df9ace172a65f5267a1a80907558ebf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?= Date: Tue, 1 Apr 2025 14:43:32 -0600 Subject: [PATCH 23/64] Fix possible CME while replacing properties (#2416) Fixes #2274 --------- Co-authored-by: Torsten Krah --- .../dockerjava/core/DefaultDockerClientConfig.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java b/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java index 8011a2a5e..dad75b360 100644 --- a/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java +++ b/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java @@ -5,6 +5,8 @@ import com.github.dockerjava.api.model.AuthConfigurations; import com.github.dockerjava.core.NameParser.HostnameReposName; import com.github.dockerjava.core.NameParser.ReposTag; + +import java.util.Map.Entry; import java.util.Optional; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.SystemUtils; @@ -128,9 +130,11 @@ private static Properties loadIncludedDockerProperties(Properties systemProperti } private static void replaceProperties(Properties properties, Properties replacements) { - for (Object objectKey : properties.keySet()) { - String key = objectKey.toString(); - properties.setProperty(key, replaceProperties(properties.getProperty(key), replacements)); + for (Entry entry : properties.entrySet()) { + final String key = entry.getKey().toString(); + // no entry.getValue here because it does not have the same semantics as getProperty (defaults handling) + final String value = properties.getProperty(key); + entry.setValue(replaceProperties(value, replacements)); } } From 2fa2eb51d0b21f0e4bc455a1f4e710b978b17272 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 14:55:07 -0600 Subject: [PATCH 24/64] Bump org.awaitility:awaitility from 4.0.1 to 4.3.0 (#2408) Bumps [org.awaitility:awaitility](https://github.com/awaitility/awaitility) from 4.0.1 to 4.3.0. - [Changelog](https://github.com/awaitility/awaitility/blob/master/changelog.txt) - [Commits](https://github.com/awaitility/awaitility/compare/awaitility-4.0.1...awaitility-4.3.0) --- updated-dependencies: - dependency-name: org.awaitility:awaitility dependency-version: 4.3.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docker-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-java/pom.xml b/docker-java/pom.xml index de8cb9c88..e00c974d3 100644 --- a/docker-java/pom.xml +++ b/docker-java/pom.xml @@ -118,7 +118,7 @@ org.awaitility awaitility - 4.0.1 + 4.3.0 test From 5af2d3abf59bc50a8e551c74c482ac08ab201fc1 Mon Sep 17 00:00:00 2001 From: artragis Date: Tue, 1 Apr 2025 22:58:11 +0200 Subject: [PATCH 25/64] chore(deps): update guava so that it is not vulnerable (#2300) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: fdambrine Co-authored-by: EddΓΊ MelΓ©ndez Gonzales --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8ec664b11..603b1ac48 100644 --- a/pom.xml +++ b/pom.xml @@ -68,7 +68,7 @@ 1.80 2.10.1 - 19.0 + 33.4.6-jre 1.2.3 From 1f1e60d2efe2c495c3c43a59b4534d3316fb0b75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?= Date: Mon, 12 May 2025 19:14:20 -0500 Subject: [PATCH 26/64] Update ubuntu version to 24.04 (#2376) --- .github/workflows/ci.yml | 6 ++---- .github/workflows/release.yml | 2 +- .../com/github/dockerjava/cmd/CreateContainerCmdIT.java | 5 +++++ .../java/com/github/dockerjava/cmd/swarm/SwarmCmdIT.java | 8 ++++++-- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b7aaef550..5d6f8d370 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,7 +7,7 @@ on: jobs: build: - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: @@ -15,7 +15,6 @@ jobs: - { name: "default", javaVersion: 8 } - { name: "default", javaVersion: 17 } - { name: "default", javaVersion: 21 } - - { name: "Docker 19.03.9", dockerVersion: "v19.03.9", javaVersion: 8 } steps: - uses: actions/checkout@v4 - name: Set up JDK @@ -27,7 +26,6 @@ jobs: id: setup_docker uses: docker/setup-docker-action@v4 with: - version: ${{matrix.dockerVersion}} channel: stable - name: Build with Maven env: @@ -35,7 +33,7 @@ jobs: run: ./mvnw --no-transfer-progress verify tcp: - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - name: Set up JDK diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1517a1167..3e9f64348 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -8,7 +8,7 @@ on: jobs: build: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - name: Set up JDK 8 diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/CreateContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/CreateContainerCmdIT.java index de9f564e4..50623c029 100644 --- a/docker-java/src/test/java/com/github/dockerjava/cmd/CreateContainerCmdIT.java +++ b/docker-java/src/test/java/com/github/dockerjava/cmd/CreateContainerCmdIT.java @@ -34,7 +34,9 @@ import com.github.dockerjava.utils.TestUtils; import net.jcip.annotations.NotThreadSafe; import org.apache.commons.io.FileUtils; +import org.apache.commons.lang3.SystemUtils; import org.junit.ClassRule; +import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@ -420,6 +422,7 @@ public void createContainerWithLink() throws DockerException { } @Test + @Ignore public void createContainerWithMemorySwappiness() throws DockerException { CreateContainerResponse container = dockerRule.getClient().createContainerCmd(DEFAULT_IMAGE) .withCmd("sleep", "9999") @@ -959,6 +962,8 @@ public void onNext(Frame item) { @Test public void createContainerWithCgroupParent() throws DockerException { + assumeThat(!SystemUtils.IS_OS_LINUX, is(true)); + CreateContainerResponse container = dockerRule.getClient().createContainerCmd("busybox") .withHostConfig(newHostConfig() .withCgroupParent("/parent")) diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/SwarmCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/SwarmCmdIT.java index 87f35161c..36bcab840 100644 --- a/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/SwarmCmdIT.java +++ b/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/SwarmCmdIT.java @@ -20,6 +20,8 @@ import org.junit.experimental.categories.Category; import java.io.IOException; +import java.time.Duration; +import java.util.Arrays; import java.util.HashSet; import java.util.Set; import java.util.concurrent.TimeUnit; @@ -36,7 +38,7 @@ public abstract class SwarmCmdIT extends CmdIT { private static final String DOCKER_IN_DOCKER_IMAGE_REPOSITORY = "docker"; - private static final String DOCKER_IN_DOCKER_IMAGE_TAG = "17.12-dind"; + private static final String DOCKER_IN_DOCKER_IMAGE_TAG = "26.1.3-dind"; private static final String DOCKER_IN_DOCKER_CONTAINER_PREFIX = "docker"; @@ -105,6 +107,8 @@ protected DockerClient startDockerInDocker() throws InterruptedException { ExposedPort exposedPort = ExposedPort.tcp(2375); CreateContainerResponse response = hostDockerClient .createContainerCmd(DOCKER_IN_DOCKER_IMAGE_REPOSITORY + ":" + DOCKER_IN_DOCKER_IMAGE_TAG) + .withEntrypoint("dockerd") + .withCmd(Arrays.asList("--host=tcp://0.0.0.0:2375", "--host=unix:///var/run/docker.sock", "--tls=false")) .withHostConfig(newHostConfig() .withNetworkMode(NETWORK_NAME) .withPortBindings(new PortBinding( @@ -125,7 +129,7 @@ protected DockerClient startDockerInDocker() throws InterruptedException { DockerClient dockerClient = initializeDockerClient(binding); - await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> { + await().pollDelay(Duration.ofSeconds(5)).atMost(10, TimeUnit.SECONDS).untilAsserted(() -> { dockerClient.pingCmd().exec(); }); From 33a58b6b54709bd67a2ee0ac8357fb9019661b2f Mon Sep 17 00:00:00 2001 From: Ian Sigmon <2955005+Sigmonia@users.noreply.github.com> Date: Mon, 12 May 2025 17:27:05 -0700 Subject: [PATCH 27/64] Parse prefixed Capability values (#2418) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: EddΓΊ MelΓ©ndez Gonzales --- .../com/github/dockerjava/api/model/Capability.java | 10 +++++++++- .../github/dockerjava/api/model/CapabilityTest.java | 3 +++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Capability.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Capability.java index fe71864c0..57fb97c7b 100644 --- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Capability.java +++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Capability.java @@ -1,5 +1,7 @@ package com.github.dockerjava.api.model; +import com.fasterxml.jackson.annotation.JsonCreator; + /** * The Linux capabilities supported by Docker. The list of capabilities is defined in Docker's types.go, {@link #ALL} was added manually. * @@ -299,5 +301,11 @@ public enum Capability { /** * Trigger something that will wake up the system (set CLOCK_REALTIME_ALARM and CLOCK_BOOTTIME_ALARM timers). */ - WAKE_ALARM + WAKE_ALARM; + + @JsonCreator + public static Capability fromValue(String cap) { + String result = !cap.startsWith("CAP_") ? cap : cap.split("_", 2)[1]; + return Capability.valueOf(result); + } } diff --git a/docker-java/src/test/java/com/github/dockerjava/api/model/CapabilityTest.java b/docker-java/src/test/java/com/github/dockerjava/api/model/CapabilityTest.java index aa6167b8c..b0652d945 100644 --- a/docker-java/src/test/java/com/github/dockerjava/api/model/CapabilityTest.java +++ b/docker-java/src/test/java/com/github/dockerjava/api/model/CapabilityTest.java @@ -18,6 +18,9 @@ public void serializeCapability() throws Exception { public void deserializeCapability() throws Exception { Capability capability = JSONTestHelper.getMapper().readValue("\"ALL\"", Capability.class); assertEquals(Capability.ALL, capability); + + Capability compatibleCapability = JSONTestHelper.getMapper().readValue("\"CAP_ALL\"", Capability.class); + assertEquals(Capability.ALL, compatibleCapability); } @Test(expected = JsonMappingException.class) From 006c793dfff188a1b92dda943f77fbfc66bd11ec Mon Sep 17 00:00:00 2001 From: Simon Ohlsen <100684567+simohlsen@users.noreply.github.com> Date: Tue, 13 May 2025 02:32:08 +0200 Subject: [PATCH 28/64] Fix missing space in log (#2417) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: EddΓΊ MelΓ©ndez Gonzales --- .../java/com/github/dockerjava/core/DockerClientBuilder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-java/src/main/java/com/github/dockerjava/core/DockerClientBuilder.java b/docker-java/src/main/java/com/github/dockerjava/core/DockerClientBuilder.java index a3e4c3909..8100f285e 100644 --- a/docker-java/src/main/java/com/github/dockerjava/core/DockerClientBuilder.java +++ b/docker-java/src/main/java/com/github/dockerjava/core/DockerClientBuilder.java @@ -94,7 +94,7 @@ public DockerClient build() { } else { Logger log = LoggerFactory.getLogger(DockerClientBuilder.class); log.warn( - "'dockerHttpClient' should be set." + + "'dockerHttpClient' should be set. " + "Falling back to Jersey, will be an error in future releases." ); From fc731d1da6b1dcc708e020783209b0f6839a4fc2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 May 2025 19:53:09 -0500 Subject: [PATCH 29/64] Bump org.apache.httpcomponents.client5:httpclient5 from 5.4.3 to 5.4.4 (#2436) Bumps [org.apache.httpcomponents.client5:httpclient5](https://github.com/apache/httpcomponents-client) from 5.4.3 to 5.4.4. - [Changelog](https://github.com/apache/httpcomponents-client/blob/rel/v5.4.4/RELEASE_NOTES.txt) - [Commits](https://github.com/apache/httpcomponents-client/compare/rel/v5.4.3...rel/v5.4.4) --- updated-dependencies: - dependency-name: org.apache.httpcomponents.client5:httpclient5 dependency-version: 5.4.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docker-java-transport-httpclient5/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-java-transport-httpclient5/pom.xml b/docker-java-transport-httpclient5/pom.xml index 0e82715e9..261922992 100644 --- a/docker-java-transport-httpclient5/pom.xml +++ b/docker-java-transport-httpclient5/pom.xml @@ -29,7 +29,7 @@ org.apache.httpcomponents.client5 httpclient5 - 5.4.3 + 5.4.4 From 5be7be7c344bd242670f74005c9e85bfe1c07f0e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 May 2025 19:53:43 -0500 Subject: [PATCH 30/64] Bump org.testcontainers:testcontainers from 1.19.1 to 1.21.0 (#2435) Bumps [org.testcontainers:testcontainers](https://github.com/testcontainers/testcontainers-java) from 1.19.1 to 1.21.0. - [Release notes](https://github.com/testcontainers/testcontainers-java/releases) - [Changelog](https://github.com/testcontainers/testcontainers-java/blob/main/CHANGELOG.md) - [Commits](https://github.com/testcontainers/testcontainers-java/compare/1.19.1...1.21.0) --- updated-dependencies: - dependency-name: org.testcontainers:testcontainers dependency-version: 1.21.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docker-java-transport-tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-java-transport-tck/pom.xml b/docker-java-transport-tck/pom.xml index 4d6dd5738..73161b458 100644 --- a/docker-java-transport-tck/pom.xml +++ b/docker-java-transport-tck/pom.xml @@ -46,7 +46,7 @@ org.testcontainers testcontainers - 1.19.1 + 1.21.0 From 7386eb82783b14842b54f0f4319dcadc0cf08893 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 May 2025 19:53:59 -0500 Subject: [PATCH 31/64] Bump org.junit.jupiter:junit-jupiter from 5.12.1 to 5.12.2 (#2430) Bumps [org.junit.jupiter:junit-jupiter](https://github.com/junit-team/junit5) from 5.12.1 to 5.12.2. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.12.1...r5.12.2) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter dependency-version: 5.12.2 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docker-java-api/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-java-api/pom.xml b/docker-java-api/pom.xml index 8bfd9e8d4..9a9c9f390 100644 --- a/docker-java-api/pom.xml +++ b/docker-java-api/pom.xml @@ -50,7 +50,7 @@ org.junit.jupiter junit-jupiter - 5.12.1 + 5.12.2 test From 89372695e59f207518aa2b24f29c3146b6aa5245 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 May 2025 20:48:36 -0500 Subject: [PATCH 32/64] Bump com.tngtech.archunit:archunit-junit5 from 0.18.0 to 1.4.1 (#2439) Bumps [com.tngtech.archunit:archunit-junit5](https://github.com/TNG/ArchUnit) from 0.18.0 to 1.4.1. - [Release notes](https://github.com/TNG/ArchUnit/releases) - [Commits](https://github.com/TNG/ArchUnit/compare/v0.18.0...v1.4.1) --- updated-dependencies: - dependency-name: com.tngtech.archunit:archunit-junit5 dependency-version: 1.4.1 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docker-java-api/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-java-api/pom.xml b/docker-java-api/pom.xml index 9a9c9f390..d801546c0 100644 --- a/docker-java-api/pom.xml +++ b/docker-java-api/pom.xml @@ -57,7 +57,7 @@ com.tngtech.archunit archunit-junit5 - 0.18.0 + 1.4.1 test From 20f08311d1613d8819c4548f34046b0557a43117 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 May 2025 20:49:03 -0500 Subject: [PATCH 33/64] Bump com.google.guava:guava from 33.4.6-jre to 33.4.8-jre (#2429) Bumps [com.google.guava:guava](https://github.com/google/guava) from 33.4.6-jre to 33.4.8-jre. - [Release notes](https://github.com/google/guava/releases) - [Commits](https://github.com/google/guava/commits) --- updated-dependencies: - dependency-name: com.google.guava:guava dependency-version: 33.4.8-jre dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 603b1ac48..4acf4e175 100644 --- a/pom.xml +++ b/pom.xml @@ -68,7 +68,7 @@ 1.80 2.10.1 - 33.4.6-jre + 33.4.8-jre 1.2.3 From 7fabc1b21a840fb512b1249fbc795b9d05fe8c46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez?= Date: Wed, 25 Jun 2025 11:12:02 -0600 Subject: [PATCH 34/64] Switch to Sonatype Central Publishing Portal --- .github/workflows/release.yml | 12 +++++++----- pom.xml | 20 ++++++++++++++++++++ 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3e9f64348..16777daa6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,15 +16,17 @@ jobs: with: java-version: 8 distribution: temurin - server-id: default + server-id: central server-username: MAVEN_USERNAME server-password: MAVEN_CENTRAL_TOKEN + gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} + gpg-passphrase: MAVEN_GPG_PASSPHRASE - name: Set version run: ./mvnw versions:set -DnewVersion="${{github.event.release.tag_name}}" # TODO check main's CI status - name: Deploy with Maven env: - MAVEN_DEPLOYMENT_REPOSITORY: ${{ secrets.MAVEN_DEPLOYMENT_REPOSITORY }} - MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} - MAVEN_CENTRAL_TOKEN: ${{ secrets.OSSRH_PASSWORD }} - run: ./mvnw deploy -DaltReleaseDeploymentRepository="$MAVEN_DEPLOYMENT_REPOSITORY" -DskipTests + MAVEN_USERNAME: ${{ secrets.SONATYPE_CENTRAL_USERNAME }} + MAVEN_CENTRAL_TOKEN: ${{ secrets.SONATYPE_CENTRAL_PASSWORD }} + MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} + run: ./mvnw -Prelease deploy -DskipTests diff --git a/pom.xml b/pom.xml index 4acf4e175..fee54253a 100644 --- a/pom.xml +++ b/pom.xml @@ -286,6 +286,16 @@ + + org.sonatype.central + central-publishing-maven-plugin + 0.8.0 + true + + central + docker-java-transport-tck + + @@ -297,6 +307,9 @@ org.apache.maven.plugins maven-javadoc-plugin + + org.sonatype.central + central-publishing-maven-plugin @@ -308,6 +321,13 @@ org.apache.maven.plugins maven-gpg-plugin + + + + --pinentry-mode + loopback + + sign-artifacts From 0d7db3527e1b69b6859f2cfe7b3065e6782250b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez?= Date: Wed, 25 Jun 2025 11:37:13 -0600 Subject: [PATCH 35/64] Disable ExecStartCmdIT#execStartWithNonExistentUser --- .../src/test/java/com/github/dockerjava/cmd/ExecStartCmdIT.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/ExecStartCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/ExecStartCmdIT.java index cf096aa26..fc111f0e2 100644 --- a/docker-java/src/test/java/com/github/dockerjava/cmd/ExecStartCmdIT.java +++ b/docker-java/src/test/java/com/github/dockerjava/cmd/ExecStartCmdIT.java @@ -4,6 +4,7 @@ import com.github.dockerjava.api.command.ExecCreateCmdResponse; import com.github.dockerjava.api.exception.NotFoundException; import com.github.dockerjava.core.command.ExecStartResultCallback; +import org.junit.Ignore; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -77,6 +78,7 @@ public void execStartAttached() throws Exception { assertTrue(responseAsString.length() > 0); } + @Ignore @Test(expected = NotFoundException.class) public void execStartWithNonExistentUser() throws Exception { String containerName = "generated_" + new SecureRandom().nextInt(); From 5b0c7e89380462c847298132d1cdb593a661b943 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Jun 2025 11:52:49 -0600 Subject: [PATCH 36/64] Bump org.testcontainers:testcontainers from 1.21.0 to 1.21.2 (#2463) Bumps [org.testcontainers:testcontainers](https://github.com/testcontainers/testcontainers-java) from 1.21.0 to 1.21.2. - [Release notes](https://github.com/testcontainers/testcontainers-java/releases) - [Changelog](https://github.com/testcontainers/testcontainers-java/blob/main/CHANGELOG.md) - [Commits](https://github.com/testcontainers/testcontainers-java/compare/1.21.0...1.21.2) --- updated-dependencies: - dependency-name: org.testcontainers:testcontainers dependency-version: 1.21.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docker-java-transport-tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-java-transport-tck/pom.xml b/docker-java-transport-tck/pom.xml index 73161b458..a05ac5d9a 100644 --- a/docker-java-transport-tck/pom.xml +++ b/docker-java-transport-tck/pom.xml @@ -46,7 +46,7 @@ org.testcontainers testcontainers - 1.21.0 + 1.21.2 From 0d4638ab40c8bdb2da26659c85054b70106e01b9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Jun 2025 11:53:04 -0600 Subject: [PATCH 37/64] Bump org.junit.jupiter:junit-jupiter from 5.12.2 to 5.13.2 (#2462) Bumps [org.junit.jupiter:junit-jupiter](https://github.com/junit-team/junit-framework) from 5.12.2 to 5.13.2. - [Release notes](https://github.com/junit-team/junit-framework/releases) - [Commits](https://github.com/junit-team/junit-framework/compare/r5.12.2...r5.13.2) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter dependency-version: 5.13.2 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docker-java-api/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-java-api/pom.xml b/docker-java-api/pom.xml index d801546c0..0c9cde9ba 100644 --- a/docker-java-api/pom.xml +++ b/docker-java-api/pom.xml @@ -50,7 +50,7 @@ org.junit.jupiter junit-jupiter - 5.12.2 + 5.13.2 test From bcd0f88eef48954ee133571bb6525b977a0d89fd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Jun 2025 11:53:15 -0600 Subject: [PATCH 38/64] Bump org.bouncycastle:bcpkix-jdk18on from 1.80 to 1.81 (#2455) Bumps [org.bouncycastle:bcpkix-jdk18on](https://github.com/bcgit/bc-java) from 1.80 to 1.81. - [Changelog](https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.html) - [Commits](https://github.com/bcgit/bc-java/commits) --- updated-dependencies: - dependency-name: org.bouncycastle:bcpkix-jdk18on dependency-version: '1.81' dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index fee54253a..d0b9df2ec 100644 --- a/pom.xml +++ b/pom.xml @@ -66,7 +66,7 @@ 3.17.0 1.7.30 - 1.80 + 1.81 2.10.1 33.4.8-jre From 1ece58adbfa3432ec910f53deae61ce274b64488 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Jun 2025 20:19:32 -0600 Subject: [PATCH 39/64] Bump org.apache.httpcomponents.client5:httpclient5 from 5.4.4 to 5.5 (#2445) Bumps [org.apache.httpcomponents.client5:httpclient5](https://github.com/apache/httpcomponents-client) from 5.4.4 to 5.5. - [Changelog](https://github.com/apache/httpcomponents-client/blob/master/RELEASE_NOTES.txt) - [Commits](https://github.com/apache/httpcomponents-client/compare/rel/v5.4.4...rel/v5.5) --- updated-dependencies: - dependency-name: org.apache.httpcomponents.client5:httpclient5 dependency-version: '5.5' dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docker-java-transport-httpclient5/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-java-transport-httpclient5/pom.xml b/docker-java-transport-httpclient5/pom.xml index 261922992..872c28e40 100644 --- a/docker-java-transport-httpclient5/pom.xml +++ b/docker-java-transport-httpclient5/pom.xml @@ -29,7 +29,7 @@ org.apache.httpcomponents.client5 httpclient5 - 5.4.4 + 5.5 From da24f1953d3eaa64ce7eddcdc0fa28747e4498db Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Jun 2025 20:19:45 -0600 Subject: [PATCH 40/64] Bump netty.version from 4.1.119.Final to 4.2.2.Final (#2454) Bumps `netty.version` from 4.1.119.Final to 4.2.2.Final. Updates `io.netty:netty-codec-http` from 4.1.119.Final to 4.2.2.Final - [Commits](https://github.com/netty/netty/compare/netty-4.1.119.Final...netty-4.2.2.Final) Updates `io.netty:netty-handler` from 4.1.119.Final to 4.2.2.Final - [Commits](https://github.com/netty/netty/compare/netty-4.1.119.Final...netty-4.2.2.Final) Updates `io.netty:netty-handler-proxy` from 4.1.119.Final to 4.2.2.Final - [Commits](https://github.com/netty/netty/compare/netty-4.1.119.Final...netty-4.2.2.Final) Updates `io.netty:netty-transport-native-epoll` from 4.1.119.Final to 4.2.2.Final - [Commits](https://github.com/netty/netty/compare/netty-4.1.119.Final...netty-4.2.2.Final) Updates `io.netty:netty-transport-native-kqueue` from 4.1.119.Final to 4.2.2.Final - [Commits](https://github.com/netty/netty/compare/netty-4.1.119.Final...netty-4.2.2.Final) --- updated-dependencies: - dependency-name: io.netty:netty-codec-http dependency-version: 4.2.2.Final dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: io.netty:netty-handler dependency-version: 4.2.2.Final dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: io.netty:netty-handler-proxy dependency-version: 4.2.2.Final dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: io.netty:netty-transport-native-epoll dependency-version: 4.2.2.Final dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: io.netty:netty-transport-native-kqueue dependency-version: 4.2.2.Final dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d0b9df2ec..48de3acfe 100644 --- a/pom.xml +++ b/pom.xml @@ -72,7 +72,7 @@ 1.2.3 - 4.1.119.Final + 4.2.2.Final 2.2 1.8 2.3.3 From e17e11e716b13b63b492f44e048e4f8ddda9f586 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Jun 2025 20:24:21 -0600 Subject: [PATCH 41/64] Bump commons-io:commons-io from 2.18.0 to 2.19.0 (#2428) Bumps commons-io:commons-io from 2.18.0 to 2.19.0. --- updated-dependencies: - dependency-name: commons-io:commons-io dependency-version: 2.19.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 48de3acfe..38a999f79 100644 --- a/pom.xml +++ b/pom.xml @@ -62,7 +62,7 @@ 2.18.3 4.5.12 1.27.1 - 2.18.0 + 2.19.0 3.17.0 1.7.30 From 05ac7d7e52e5e43cb7101ee81a73871596f3ed36 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Jul 2025 09:38:19 -0600 Subject: [PATCH 42/64] Bump org.testcontainers:testcontainers from 1.21.2 to 1.21.3 (#2467) Bumps [org.testcontainers:testcontainers](https://github.com/testcontainers/testcontainers-java) from 1.21.2 to 1.21.3. - [Release notes](https://github.com/testcontainers/testcontainers-java/releases) - [Changelog](https://github.com/testcontainers/testcontainers-java/blob/main/CHANGELOG.md) - [Commits](https://github.com/testcontainers/testcontainers-java/compare/1.21.2...1.21.3) --- updated-dependencies: - dependency-name: org.testcontainers:testcontainers dependency-version: 1.21.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docker-java-transport-tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-java-transport-tck/pom.xml b/docker-java-transport-tck/pom.xml index a05ac5d9a..654ad17b8 100644 --- a/docker-java-transport-tck/pom.xml +++ b/docker-java-transport-tck/pom.xml @@ -46,7 +46,7 @@ org.testcontainers testcontainers - 1.21.2 + 1.21.3 From dfb97962a5c378573988e7aedb9f20525673c2a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?= Date: Tue, 1 Jul 2025 12:54:47 -0600 Subject: [PATCH 43/64] Drop jackson-jaxrs-json-provider dependency (#2468) --- docker-java-transport-jersey/pom.xml | 5 ----- pom.xml | 1 - 2 files changed, 6 deletions(-) diff --git a/docker-java-transport-jersey/pom.xml b/docker-java-transport-jersey/pom.xml index fbef13f1e..a600c208d 100644 --- a/docker-java-transport-jersey/pom.xml +++ b/docker-java-transport-jersey/pom.xml @@ -26,11 +26,6 @@ ${project.version} - - com.fasterxml.jackson.jaxrs - jackson-jaxrs-json-provider - ${jackson-jaxrs.version} - org.glassfish.jersey.connectors jersey-apache-connector diff --git a/pom.xml b/pom.xml index 38a999f79..022451fbe 100644 --- a/pom.xml +++ b/pom.xml @@ -59,7 +59,6 @@ 2.30.1 2.18.3 - 2.18.3 4.5.12 1.27.1 2.19.0 From 9ccbd8fdfc85be619c2f012f9d041fe932dd588f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= <51929176+emirhandurmus@users.noreply.github.com> Date: Fri, 4 Jul 2025 16:31:33 +0300 Subject: [PATCH 44/64] Add Annotations option to HostConfig (#2422) --- .../dockerjava/api/model/HostConfig.java | 13 ++++++++ .../dockerjava/cmd/CreateContainerCmdIT.java | 32 +++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/HostConfig.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/HostConfig.java index 2ad622ca6..603bc6347 100644 --- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/HostConfig.java +++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/HostConfig.java @@ -73,6 +73,9 @@ public static HostConfig newHostConfig() { @JsonProperty("NanoCpus") private Long nanoCPUs; + @JsonProperty("Annotations") + private Map annotations; + @JsonProperty("CapAdd") private Capability[] capAdd; @@ -304,6 +307,11 @@ public Integer getBlkioWeight() { return blkioWeight; } + @CheckForNull + public Map getAnnotations() { + return annotations; + } + public Capability[] getCapAdd() { return capAdd; } @@ -636,6 +644,11 @@ public HostConfig withBlkioWeightDevice(List blkioWeightDevic return this; } + public HostConfig withAnnotations(Map annotations) { + this.annotations = annotations; + return this; + } + /** * @see #capAdd */ diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/CreateContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/CreateContainerCmdIT.java index 50623c029..d91791cbc 100644 --- a/docker-java/src/test/java/com/github/dockerjava/cmd/CreateContainerCmdIT.java +++ b/docker-java/src/test/java/com/github/dockerjava/cmd/CreateContainerCmdIT.java @@ -10,6 +10,8 @@ import com.github.dockerjava.api.command.InspectContainerResponse; import com.github.dockerjava.api.exception.ConflictException; import com.github.dockerjava.api.exception.DockerException; +import com.github.dockerjava.api.DockerClient; +import com.github.dockerjava.core.DefaultDockerClientConfig; import com.github.dockerjava.api.exception.InternalServerErrorException; import com.github.dockerjava.api.exception.NotFoundException; import com.github.dockerjava.api.model.AuthConfig; @@ -58,6 +60,7 @@ import static com.github.dockerjava.api.model.HostConfig.newHostConfig; import static com.github.dockerjava.core.RemoteApiVersion.VERSION_1_23; import static com.github.dockerjava.core.RemoteApiVersion.VERSION_1_24; +import static com.github.dockerjava.core.RemoteApiVersion.VERSION_1_43; import static com.github.dockerjava.junit.DockerMatchers.isGreaterOrEqual; import static com.github.dockerjava.junit.DockerMatchers.mountedVolumes; import static com.github.dockerjava.core.DockerRule.DEFAULT_IMAGE; @@ -1141,4 +1144,33 @@ public void shouldHandleANetworkAliasWithoutACustomNetworkGracefully() { .withCmd("sleep", "9999") .exec(); } + + @Test + public void createContainerWithAnnotations() throws DockerException { + DefaultDockerClientConfig forcedConfig = DefaultDockerClientConfig.createDefaultConfigBuilder() + .withApiVersion(VERSION_1_43) + .withRegistryUrl("https://index.docker.io/v1/") + .build(); + + DockerClient forcedClient = CmdIT.createDockerClient(forcedConfig); + Map annotations = new HashMap<>(); + annotations.put("com.example.key1", "value1"); + annotations.put("com.example.key2", "value2"); + + CreateContainerResponse container = forcedClient.createContainerCmd(DEFAULT_IMAGE) + .withCmd("sleep", "9999") + .withHostConfig(newHostConfig() + .withAnnotations(annotations)) + .exec(); + + LOG.info("Created container {}", container.toString()); + + assertThat(container.getId(), not(is(emptyString()))); + + InspectContainerResponse inspectContainerResponse = forcedClient.inspectContainerCmd(container.getId()).exec(); + + assertThat(inspectContainerResponse.getHostConfig().getAnnotations(), equalTo(annotations)); + assertThat(inspectContainerResponse.getHostConfig().getAnnotations().get("com.example.key1"), equalTo("value1")); + assertThat(inspectContainerResponse.getHostConfig().getAnnotations().get("com.example.key2"), equalTo("value2")); + } } From b1d9e9155257d848b8d790a68ed407d4a8233d45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez?= Date: Mon, 7 Jul 2025 08:55:34 -0600 Subject: [PATCH 45/64] Ignore jackson minor version updates --- .github/dependabot.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index d301147be..f0541701a 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -7,3 +7,6 @@ updates: day: tuesday open-pull-requests-limit: 99 rebase-strategy: disabled + ignore: + - dependency-name: "com.fasterxml.jackson.core:*" + update-types: [ "version-update:semver-minor" ] From d9f2aad71ef0f0f02b6c14559474d7f337b4876e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez?= Date: Mon, 7 Jul 2025 11:36:52 -0600 Subject: [PATCH 46/64] Add deploymentName --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index 022451fbe..acd77627d 100644 --- a/pom.xml +++ b/pom.xml @@ -293,6 +293,7 @@ central docker-java-transport-tck + com.github.docker-java From ad1e26a58c605e040ee989131e4c69c70018e38d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Jul 2025 11:40:46 -0600 Subject: [PATCH 47/64] Bump jackson.version from 2.18.3 to 2.18.4 (#2473) Bumps `jackson.version` from 2.18.3 to 2.18.4. Updates `com.fasterxml.jackson.core:jackson-annotations` from 2.18.3 to 2.18.4 - [Commits](https://github.com/FasterXML/jackson/commits) Updates `com.fasterxml.jackson.core:jackson-databind` from 2.18.3 to 2.18.4 - [Commits](https://github.com/FasterXML/jackson/commits) --- updated-dependencies: - dependency-name: com.fasterxml.jackson.core:jackson-annotations dependency-version: 2.18.4 dependency-type: direct:development update-type: version-update:semver-patch - dependency-name: com.fasterxml.jackson.core:jackson-databind dependency-version: 2.18.4 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docker-java/pom.xml | 8 ++++---- pom.xml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docker-java/pom.xml b/docker-java/pom.xml index e00c974d3..f72d1d6c2 100644 --- a/docker-java/pom.xml +++ b/docker-java/pom.xml @@ -125,16 +125,16 @@ com.fasterxml.jackson.core jackson-databind - - 2.18.3 + + 2.18.4 test com.fasterxml.jackson.core jackson-annotations - - 2.18.3 + + 2.18.4 test diff --git a/pom.xml b/pom.xml index acd77627d..6cefe8d3b 100644 --- a/pom.xml +++ b/pom.xml @@ -58,7 +58,7 @@ 1.8 2.30.1 - 2.18.3 + 2.18.4 4.5.12 1.27.1 2.19.0 From 692ee29d34d363ab18b77b3e0fc9400d805e68ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=84=EC=84=B8=ED=98=81?= <164876765+sehyuk080101@users.noreply.github.com> Date: Thu, 17 Jul 2025 06:22:21 +0900 Subject: [PATCH 48/64] Fix typo 'deamon' to 'daemon' (#2476) --- circle.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/circle.sh b/circle.sh index c84ca3fe6..b5b7cdbb0 100755 --- a/circle.sh +++ b/circle.sh @@ -6,7 +6,7 @@ case "$1" in mkdir .docker cp $CIRCLE_PROJECT_REPONAME/etc/certs/* .docker - # configure docker deamon to use SSL and provide the path to the certificates + # configure docker daemon to use SSL and provide the path to the certificates docker_opts='DOCKER_OPTS="$DOCKER_OPTS -H tcp://127.0.0.1:2376 --tlsverify --tlscacert='$HOME'/.docker/ca.pem --tlscert='$HOME'/.docker/server-cert.pem --tlskey='$HOME'/.docker/server-key.pem"' sudo sh -c "echo '$docker_opts' >> /etc/default/docker" From 8762fe8616320f4f68802757af41c60088ccae48 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Jul 2025 15:22:41 -0600 Subject: [PATCH 49/64] Bump org.apache.commons:commons-lang3 from 3.17.0 to 3.18.0 (#2478) Bumps org.apache.commons:commons-lang3 from 3.17.0 to 3.18.0. --- updated-dependencies: - dependency-name: org.apache.commons:commons-lang3 dependency-version: 3.18.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6cefe8d3b..3ea1afce3 100644 --- a/pom.xml +++ b/pom.xml @@ -62,7 +62,7 @@ 4.5.12 1.27.1 2.19.0 - 3.17.0 + 3.18.0 1.7.30 1.81 From 64324e194d9c388521f4812a382f5315e403cb7d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Jul 2025 15:22:53 -0600 Subject: [PATCH 50/64] Bump netty.version from 4.2.2.Final to 4.2.3.Final (#2477) Bumps `netty.version` from 4.2.2.Final to 4.2.3.Final. Updates `io.netty:netty-codec-http` from 4.2.2.Final to 4.2.3.Final - [Commits](https://github.com/netty/netty/compare/netty-4.2.2.Final...netty-4.2.3.Final) Updates `io.netty:netty-handler` from 4.2.2.Final to 4.2.3.Final - [Commits](https://github.com/netty/netty/compare/netty-4.2.2.Final...netty-4.2.3.Final) Updates `io.netty:netty-handler-proxy` from 4.2.2.Final to 4.2.3.Final - [Commits](https://github.com/netty/netty/compare/netty-4.2.2.Final...netty-4.2.3.Final) Updates `io.netty:netty-transport-native-epoll` from 4.2.2.Final to 4.2.3.Final - [Commits](https://github.com/netty/netty/compare/netty-4.2.2.Final...netty-4.2.3.Final) Updates `io.netty:netty-transport-native-kqueue` from 4.2.2.Final to 4.2.3.Final - [Commits](https://github.com/netty/netty/compare/netty-4.2.2.Final...netty-4.2.3.Final) --- updated-dependencies: - dependency-name: io.netty:netty-codec-http dependency-version: 4.2.3.Final dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: io.netty:netty-handler dependency-version: 4.2.3.Final dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: io.netty:netty-handler-proxy dependency-version: 4.2.3.Final dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: io.netty:netty-transport-native-epoll dependency-version: 4.2.3.Final dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: io.netty:netty-transport-native-kqueue dependency-version: 4.2.3.Final dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3ea1afce3..d3eab7db7 100644 --- a/pom.xml +++ b/pom.xml @@ -71,7 +71,7 @@ 1.2.3 - 4.2.2.Final + 4.2.3.Final 2.2 1.8 2.3.3 From b5597dde3f00ee2ee32b1c137c04b1dfedf184bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Jul 2025 15:23:14 -0600 Subject: [PATCH 51/64] Bump org.junit.jupiter:junit-jupiter from 5.13.2 to 5.13.3 (#2469) Bumps [org.junit.jupiter:junit-jupiter](https://github.com/junit-team/junit-framework) from 5.13.2 to 5.13.3. - [Release notes](https://github.com/junit-team/junit-framework/releases) - [Commits](https://github.com/junit-team/junit-framework/compare/r5.13.2...r5.13.3) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter dependency-version: 5.13.3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docker-java-api/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-java-api/pom.xml b/docker-java-api/pom.xml index 0c9cde9ba..c5da3a385 100644 --- a/docker-java-api/pom.xml +++ b/docker-java-api/pom.xml @@ -50,7 +50,7 @@ org.junit.jupiter junit-jupiter - 5.13.2 + 5.13.3 test From a187d8274f452c14a14b952444005ca76d081527 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Jul 2025 10:42:43 -0600 Subject: [PATCH 52/64] Bump org.junit.jupiter:junit-jupiter from 5.13.3 to 5.13.4 (#2482) Bumps [org.junit.jupiter:junit-jupiter](https://github.com/junit-team/junit-framework) from 5.13.3 to 5.13.4. - [Release notes](https://github.com/junit-team/junit-framework/releases) - [Commits](https://github.com/junit-team/junit-framework/compare/r5.13.3...r5.13.4) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter dependency-version: 5.13.4 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docker-java-api/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-java-api/pom.xml b/docker-java-api/pom.xml index c5da3a385..aafe5cde0 100644 --- a/docker-java-api/pom.xml +++ b/docker-java-api/pom.xml @@ -50,7 +50,7 @@ org.junit.jupiter junit-jupiter - 5.13.3 + 5.13.4 test From 3d64d8d845f043eba4aa58448ec4c25fc757f2c4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Jul 2025 10:43:43 -0600 Subject: [PATCH 53/64] Bump commons-io:commons-io from 2.19.0 to 2.20.0 (#2480) Bumps [commons-io:commons-io](https://github.com/apache/commons-io) from 2.19.0 to 2.20.0. - [Changelog](https://github.com/apache/commons-io/blob/master/RELEASE-NOTES.txt) - [Commits](https://github.com/apache/commons-io/compare/rel/commons-io-2.19.0...rel/commons-io-2.20.0) --- updated-dependencies: - dependency-name: commons-io:commons-io dependency-version: 2.20.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d3eab7db7..df34bd07a 100644 --- a/pom.xml +++ b/pom.xml @@ -61,7 +61,7 @@ 2.18.4 4.5.12 1.27.1 - 2.19.0 + 2.20.0 3.18.0 1.7.30 From af2a9472d4f4bc73a05adf27d111fa92762b398d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez?= Date: Wed, 30 Jul 2025 20:41:48 -0600 Subject: [PATCH 54/64] Revert "Ignore jackson minor version updates" This reverts commit b1d9e9155257d848b8d790a68ed407d4a8233d45. --- .github/dependabot.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index f0541701a..d301147be 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -7,6 +7,3 @@ updates: day: tuesday open-pull-requests-limit: 99 rebase-strategy: disabled - ignore: - - dependency-name: "com.fasterxml.jackson.core:*" - update-types: [ "version-update:semver-minor" ] From 9c40b40d59526981ee89c0043f5820402a0b67a5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 31 Jul 2025 10:13:10 -0600 Subject: [PATCH 55/64] Bump jackson.version from 2.18.4 to 2.19.2 (#2485) Bumps `jackson.version` from 2.18.4 to 2.19.2. Updates `com.fasterxml.jackson.core:jackson-annotations` from 2.18.4 to 2.19.2 - [Commits](https://github.com/FasterXML/jackson/commits) Updates `com.fasterxml.jackson.core:jackson-databind` from 2.18.4 to 2.19.2 - [Commits](https://github.com/FasterXML/jackson/commits) --- updated-dependencies: - dependency-name: com.fasterxml.jackson.core:jackson-annotations dependency-version: 2.19.2 dependency-type: direct:development update-type: version-update:semver-minor - dependency-name: com.fasterxml.jackson.core:jackson-databind dependency-version: 2.19.2 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docker-java/pom.xml | 8 ++++---- pom.xml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docker-java/pom.xml b/docker-java/pom.xml index f72d1d6c2..f1cc09f64 100644 --- a/docker-java/pom.xml +++ b/docker-java/pom.xml @@ -125,16 +125,16 @@ com.fasterxml.jackson.core jackson-databind - - 2.18.4 + + 2.19.2 test com.fasterxml.jackson.core jackson-annotations - - 2.18.4 + + 2.19.2 test diff --git a/pom.xml b/pom.xml index df34bd07a..9122d5bda 100644 --- a/pom.xml +++ b/pom.xml @@ -58,7 +58,7 @@ 1.8 2.30.1 - 2.18.4 + 2.19.2 4.5.12 1.27.1 2.20.0 From 464c112003eb1b7e0d42aac8fbfb3af038ba18b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez?= Date: Tue, 19 Aug 2025 12:20:11 -0600 Subject: [PATCH 56/64] Ignore major update for jersey --- .github/dependabot.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index d301147be..43fe26c4d 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -7,3 +7,10 @@ updates: day: tuesday open-pull-requests-limit: 99 rebase-strategy: disabled + ignore: + - dependency-name: "org.glassfish.jersey.connectors:jersey-apache-connector" + update-types: [ "version-update:semver-major" ] + - dependency-name: "org.glassfish.jersey.core:jersey-client" + update-types: [ "version-update:semver-major" ] + - dependency-name: "org.glassfish.jersey.inject:jersey-hk2" + update-types: [ "version-update:semver-major" ] From 39743d1b633f79e882c0ab994f3cc6be389efa8c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Aug 2025 12:25:39 -0600 Subject: [PATCH 57/64] Bump org.assertj:assertj-core from 3.27.3 to 3.27.4 (#2489) Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.27.3 to 3.27.4. - [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.27.3...assertj-build-3.27.4) --- updated-dependencies: - dependency-name: org.assertj:assertj-core dependency-version: 3.27.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docker-java-transport-tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-java-transport-tck/pom.xml b/docker-java-transport-tck/pom.xml index 654ad17b8..69d40cc3c 100644 --- a/docker-java-transport-tck/pom.xml +++ b/docker-java-transport-tck/pom.xml @@ -34,7 +34,7 @@ org.assertj assertj-core - 3.27.3 + 3.27.4 From 718fc382cb1923ce434c4f77c927cd6806f45a7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez?= Date: Tue, 19 Aug 2025 15:17:25 -0600 Subject: [PATCH 58/64] Add cache for maven --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5d6f8d370..d7b105d1d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,6 +22,7 @@ jobs: with: java-version: ${{matrix.javaVersion}} distribution: temurin + cache: maven - name: Configure Docker id: setup_docker uses: docker/setup-docker-action@v4 @@ -41,6 +42,7 @@ jobs: with: java-version: 8 distribution: temurin + cache: maven - name: Configure Docker id: setup_docker uses: docker/setup-docker-action@v4 From 95d0fa703bf81fb20648a794e31b410216e6d5be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez?= Date: Tue, 19 Aug 2025 15:21:33 -0600 Subject: [PATCH 59/64] Switch dependabot to daily --- .github/dependabot.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 43fe26c4d..9bcef2d88 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -4,7 +4,7 @@ updates: directory: "/" schedule: interval: weekly - day: tuesday + day: monday open-pull-requests-limit: 99 rebase-strategy: disabled ignore: From 9165f4191c5c52fce24c57665fd8007f4d902605 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez?= Date: Tue, 19 Aug 2025 15:25:48 -0600 Subject: [PATCH 60/64] Update name-template in release-drafter --- .github/release-drafter.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml index d03b3f5f5..f570cce43 100644 --- a/.github/release-drafter.yml +++ b/.github/release-drafter.yml @@ -1,5 +1,5 @@ tag-template: $NEXT_PATCH_VERSION -name-template: '$NEXT_PATCH_VERSION 🌈' +name-template: '$NEXT_PATCH_VERSION' categories: - title: 'πŸš€ Features' labels: From dfe1866d956f64fd4b91834f9b09ee973ac1f270 Mon Sep 17 00:00:00 2001 From: Alexander Koshevoy <11692026+tejksat@users.noreply.github.com> Date: Tue, 19 Aug 2025 23:53:58 +0200 Subject: [PATCH 61/64] Add support for container wait conditions (#2487) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Expose the `condition` query parameter (added in Docker Engine API v1.30) on `WaitContainerCmd`. When the parameter is omitted, we keep the daemon’s default `not-running` behaviour. Practical implications ---------------------- * **create β†’ wait (no condition) β†’ start** Calling `wait` right after `create` but **before** `start` returns immediately with whatever exit-code the daemon reports for a container that has never run (typically `0`). In other words, you learn nothing about the future process. * **create β†’ start β†’ wait (no condition)** For short-lived containers started with `--rm`, the container may be auto-removed before the client manages to issue `wait`, resulting in a *"container not found"* error. * **create β†’ wait(condition=removed) β†’ start** Passing the new `removed` condition eliminates both races: the wait call blocks until the container has exited *and* been removed, reliably yielding the actual exit code even for `--rm` containers. --- .../api/command/WaitContainerCmd.java | 18 ++++- .../api/model/WaitContainerCondition.java | 26 ++++++ .../core/command/WaitContainerCmdImpl.java | 17 ++++ .../core/exec/WaitContainerCmdExec.java | 6 ++ .../dockerjava/cmd/WaitContainerCmdIT.java | 80 +++++++++++++++++++ 5 files changed, 145 insertions(+), 2 deletions(-) create mode 100644 docker-java-api/src/main/java/com/github/dockerjava/api/model/WaitContainerCondition.java diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/WaitContainerCmd.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/WaitContainerCmd.java index 3117cf7e4..7b910cd69 100644 --- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/WaitContainerCmd.java +++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/WaitContainerCmd.java @@ -2,9 +2,11 @@ import javax.annotation.CheckForNull; import javax.annotation.Nonnull; +import javax.annotation.Nullable; import com.github.dockerjava.api.async.ResultCallback; import com.github.dockerjava.api.exception.NotFoundException; +import com.github.dockerjava.api.model.WaitContainerCondition; import com.github.dockerjava.api.model.WaitResponse; /** @@ -20,8 +22,20 @@ public interface WaitContainerCmd extends AsyncDockerCmd> T exec(T resultCallback); diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/WaitContainerCondition.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/WaitContainerCondition.java new file mode 100644 index 000000000..8af0efa35 --- /dev/null +++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/WaitContainerCondition.java @@ -0,0 +1,26 @@ +package com.github.dockerjava.api.model; + +import javax.annotation.Nonnull; + +/** + * Docker Engine API wait conditions (added in v1.30). + * + * @since {@link RemoteApiVersion#VERSION_1_30} + */ +public enum WaitContainerCondition { + NOT_RUNNING("not-running"), + NEXT_EXIT("next-exit"), + REMOVED("removed"); + + @Nonnull + private final String value; + + WaitContainerCondition(@Nonnull String value) { + this.value = value; + } + + @Nonnull + public String getValue() { + return value; + } +} diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/WaitContainerCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/WaitContainerCmdImpl.java index 91b2255bc..b627e2ccd 100644 --- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/WaitContainerCmdImpl.java +++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/WaitContainerCmdImpl.java @@ -2,7 +2,10 @@ import java.util.Objects; +import javax.annotation.Nullable; + import com.github.dockerjava.api.command.WaitContainerCmd; +import com.github.dockerjava.api.model.WaitContainerCondition; import com.github.dockerjava.api.model.WaitResponse; /** @@ -15,6 +18,8 @@ public class WaitContainerCmdImpl extends AbstrAsyncDockerCmd r WebTarget webTarget = getBaseResource().path("/containers/{id}/wait").resolveTemplate("id", command.getContainerId()); + WaitContainerCondition condition = command.getCondition(); + if (condition != null) { + webTarget = webTarget.queryParam("condition", condition.getValue()); + } + LOGGER.trace("POST: {}", webTarget); webTarget.request().accept(MediaType.APPLICATION_JSON).post((Object) null, new TypeReference() { diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/WaitContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/WaitContainerCmdIT.java index e2ad2a643..3a39b3eea 100644 --- a/docker-java/src/test/java/com/github/dockerjava/cmd/WaitContainerCmdIT.java +++ b/docker-java/src/test/java/com/github/dockerjava/cmd/WaitContainerCmdIT.java @@ -8,18 +8,25 @@ import com.github.dockerjava.api.exception.DockerClientException; import com.github.dockerjava.api.exception.DockerException; import com.github.dockerjava.api.exception.NotFoundException; +import com.github.dockerjava.api.model.WaitContainerCondition; import com.github.dockerjava.api.model.WaitResponse; +import org.junit.Assert; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.concurrent.TimeUnit; +import static com.github.dockerjava.api.model.HostConfig.newHostConfig; +import static com.github.dockerjava.core.RemoteApiVersion.VERSION_1_25; +import static com.github.dockerjava.core.RemoteApiVersion.VERSION_1_30; +import static com.github.dockerjava.junit.DockerMatchers.isGreaterOrEqual; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.emptyString; import static org.hamcrest.Matchers.not; +import static org.junit.Assume.assumeThat; public class WaitContainerCmdIT extends CmdIT { public static final Logger LOG = LoggerFactory.getLogger(BuildImageCmd.class); @@ -102,4 +109,77 @@ public void testWaitContainerTimeout() { LOG.info(e.getMessage()); } } + + @Test + public void testWaitNotStartedContainer() { + assumeThat("API version should be > 1.25", dockerRule, isGreaterOrEqual(VERSION_1_25)); + + CreateContainerResponse container = dockerRule.getClient().createContainerCmd("busybox") + .withHostConfig(newHostConfig().withAutoRemove(true)) + .exec(); + + LOG.info("Created container: {}", container.toString()); + assertThat(container.getId(), not(is(emptyString()))); + + WaitContainerResultCallback callback = dockerRule.getClient().waitContainerCmd(container.getId()).exec(new WaitContainerResultCallback()); + + Integer statusCode = callback.awaitStatusCode(100, TimeUnit.MILLISECONDS); + Assert.assertEquals(0, statusCode.intValue()); + } + + @Test + public void testWaitContainerWithAutoRemoval() { + assumeThat("API version should be > 1.30", dockerRule, isGreaterOrEqual(VERSION_1_30)); + + CreateContainerResponse container = dockerRule.getClient().createContainerCmd("busybox") + .withCmd("false") + .withHostConfig(newHostConfig().withAutoRemove(true)) + .exec(); + + LOG.info("Created container: {}", container.toString()); + assertThat(container.getId(), not(is(emptyString()))); + + WaitContainerResultCallback removedCondition = dockerRule.getClient().waitContainerCmd(container.getId()) + .withCondition(WaitContainerCondition.REMOVED) + .exec(new WaitContainerResultCallback()); + + WaitContainerResultCallback nextExitCondition = dockerRule.getClient().waitContainerCmd(container.getId()) + .withCondition(WaitContainerCondition.NEXT_EXIT) + .exec(new WaitContainerResultCallback()); + + dockerRule.getClient().startContainerCmd(container.getId()).exec(); + + Assert.assertEquals(1, removedCondition.awaitStatusCode(100, TimeUnit.MILLISECONDS).intValue()); + Assert.assertEquals(1, nextExitCondition.awaitStatusCode(100, TimeUnit.MILLISECONDS).intValue()); + } + + @Test + public void testWaitRestartedContainer() { + assumeThat("API version should be > 1.30", dockerRule, isGreaterOrEqual(VERSION_1_30)); + + CreateContainerResponse container = dockerRule.getClient().createContainerCmd("busybox") + .withCmd("sh", "-c", "[ -f \"$HOME/.first_run_marker\" ] && exit 2 || { touch \"$HOME/.first_run_marker\"; exit 1; }") + .exec(); + + LOG.info("Created container: {}", container.toString()); + assertThat(container.getId(), not(is(emptyString()))); + + WaitContainerResultCallback firstExitCallback = dockerRule.getClient().waitContainerCmd(container.getId()) + .withCondition(WaitContainerCondition.NEXT_EXIT) + .exec(new WaitContainerResultCallback()); + + dockerRule.getClient().startContainerCmd(container.getId()).exec(); + + Integer firstStatusCode = firstExitCallback.awaitStatusCode(100, TimeUnit.MILLISECONDS); + Assert.assertEquals(1, firstStatusCode.intValue()); + + WaitContainerResultCallback callback = dockerRule.getClient().waitContainerCmd(container.getId()) + .withCondition(WaitContainerCondition.NEXT_EXIT) + .exec(new WaitContainerResultCallback()); + + dockerRule.getClient().startContainerCmd(container.getId()).exec(); + + Integer statusCode = callback.awaitStatusCode(100, TimeUnit.MILLISECONDS); + Assert.assertEquals(2, statusCode.intValue()); + } } From ce05588c61724ad3b03350fd1556d413740257c3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Aug 2025 18:25:33 -0600 Subject: [PATCH 62/64] Bump netty.version from 4.2.3.Final to 4.2.4.Final (#2494) Bumps `netty.version` from 4.2.3.Final to 4.2.4.Final. Updates `io.netty:netty-codec-http` from 4.2.3.Final to 4.2.4.Final - [Commits](https://github.com/netty/netty/compare/netty-4.2.3.Final...netty-4.2.4.Final) Updates `io.netty:netty-handler` from 4.2.3.Final to 4.2.4.Final - [Commits](https://github.com/netty/netty/compare/netty-4.2.3.Final...netty-4.2.4.Final) Updates `io.netty:netty-handler-proxy` from 4.2.3.Final to 4.2.4.Final - [Commits](https://github.com/netty/netty/compare/netty-4.2.3.Final...netty-4.2.4.Final) Updates `io.netty:netty-transport-native-epoll` from 4.2.3.Final to 4.2.4.Final - [Commits](https://github.com/netty/netty/compare/netty-4.2.3.Final...netty-4.2.4.Final) Updates `io.netty:netty-transport-native-kqueue` from 4.2.3.Final to 4.2.4.Final - [Commits](https://github.com/netty/netty/compare/netty-4.2.3.Final...netty-4.2.4.Final) --- updated-dependencies: - dependency-name: io.netty:netty-codec-http dependency-version: 4.2.4.Final dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: io.netty:netty-handler dependency-version: 4.2.4.Final dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: io.netty:netty-handler-proxy dependency-version: 4.2.4.Final dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: io.netty:netty-transport-native-epoll dependency-version: 4.2.4.Final dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: io.netty:netty-transport-native-kqueue dependency-version: 4.2.4.Final dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9122d5bda..83542af74 100644 --- a/pom.xml +++ b/pom.xml @@ -71,7 +71,7 @@ 1.2.3 - 4.2.3.Final + 4.2.4.Final 2.2 1.8 2.3.3 From 4df8cbb4d90d6d88378493d78a691342e95769ca Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Aug 2025 18:42:40 -0600 Subject: [PATCH 63/64] Bump jersey.version from 2.30.1 to 2.47 (#2496) Bumps `jersey.version` from 2.30.1 to 2.47. Updates `org.glassfish.jersey.connectors:jersey-apache-connector` from 2.30.1 to 2.47 Updates `org.glassfish.jersey.core:jersey-client` from 2.30.1 to 2.47 Updates `org.glassfish.jersey.inject:jersey-hk2` from 2.30.1 to 2.47 --- updated-dependencies: - dependency-name: org.glassfish.jersey.connectors:jersey-apache-connector dependency-version: '2.47' dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: org.glassfish.jersey.core:jersey-client dependency-version: '2.47' dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: org.glassfish.jersey.inject:jersey-hk2 dependency-version: '2.47' dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 83542af74..fe10d4302 100644 --- a/pom.xml +++ b/pom.xml @@ -57,7 +57,7 @@ 1.8 1.8 - 2.30.1 + 2.47 2.19.2 4.5.12 1.27.1 From 150293d945f34e54c562ac82a803fd738fed4be4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Aug 2025 18:58:21 -0600 Subject: [PATCH 64/64] Bump org.apache.commons:commons-compress from 1.27.1 to 1.28.0 (#2486) Bumps [org.apache.commons:commons-compress](https://github.com/apache/commons-compress) from 1.27.1 to 1.28.0. - [Changelog](https://github.com/apache/commons-compress/blob/master/RELEASE-NOTES.txt) - [Commits](https://github.com/apache/commons-compress/compare/rel/commons-compress-1.27.1...rel/commons-compress-1.28.0) --- updated-dependencies: - dependency-name: org.apache.commons:commons-compress dependency-version: 1.28.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index fe10d4302..58fa183e8 100644 --- a/pom.xml +++ b/pom.xml @@ -60,7 +60,7 @@ 2.47 2.19.2 4.5.12 - 1.27.1 + 1.28.0 2.20.0 3.18.0 1.7.30