-
Notifications
You must be signed in to change notification settings - Fork 603
Description
Description
These link point (as of this writing) to the same file:
curl -I https://pecl.php.net/get/amqp-2.1.2.tgz && curl -I https://pecl.php.net/get/amqp
HTTP/2 200
server: myracloud
date: Tue, 07 Oct 2025 15:03:15 GMT
content-type: application/octet-stream
content-length: 118454
set-cookie: PHPSESSID=5elvgvco9l5n69rcgldmr8ba24; path=/
expires: Thu, 19 Nov 1981 08:52:00 GMT
cache-control: no-store, no-cache, must-revalidate
pragma: no-cache
content-disposition: attachment;filename=amqp-2.1.2.tgz
last-modified: Mon, 22 Jan 2024 10:49:51 GMT
etag: "1ceb6-63d8186bf87f4"
HTTP/2 200
server: myracloud
date: Tue, 07 Oct 2025 15:03:15 GMT
content-type: application/octet-stream
content-length: 118454
set-cookie: PHPSESSID=3negi6em2990np8i0143cuavnl; path=/
expires: Thu, 19 Nov 1981 08:52:00 GMT
cache-control: no-store, no-cache, must-revalidate
pragma: no-cache
content-disposition: attachment;filename=amqp-2.1.2.tgz
last-modified: Mon, 22 Jan 2024 10:49:51 GMT
etag: "1ceb6-63d8186bf87f4"yet only
ADD https://pecl.php.net/get/amqp-2.1.2.tgz /download/direct/will be added while this won't be added:
ADD https://pecl.php.net/get/amqp /download/file-headerDuring the build, there is no error or feedback that no file was actually added.
Further confusion
I was under the assumption that ADD would both download the file and extract its content to the target.
This only happens on LOCAL files. Remote files are only downloaded. This is documented, but also very counterintuitive, as again: the log does not give any insight to the bevavior.
It is documented, but very confusing.
Reproduce
git clone [email protected]:k0pernikus/docker-build-beahvior-for-add.git
cd docker-build-beahvior-for-add/
docker --version && DOCKER_BUILDKIT=1 docker build . --no-cache --progress=plain
Docker version 28.5.0, build 887030f
#0 building with "default" instance using docker driver
docker/cli#1 [internal] load build definition from Dockerfile
docker/cli#1 transferring dockerfile: 334B done
docker/cli#1 DONE 0.0s
docker/cli#2 [internal] load metadata for docker.io/library/alpine:latest
docker/cli#2 DONE 1.0s
docker/cli#3 [internal] load .dockerignore
docker/cli#3 transferring context: 2B done
docker/cli#3 DONE 0.0s
docker/cli#4 [internal] load build context
docker/cli#4 DONE 0.0s
docker/cli#5 [1/7] FROM docker.io/library/alpine:latest@sha256:4bcff63911fcb4448bd4fdacec207030997caf25e9bea4045fa6c8c44de311d1
docker/cli#5 CACHED
docker/cli#6 [2/7] RUN apk add tree
docker/cli#6 ...
docker/cli#7 [5/7] ADD https://pecl.php.net/get/amqp /download/file-header
docker/cli#7 DONE 0.2s
docker/cli#8 [4/7] ADD https://pecl.php.net/get/amqp-2.1.2.tgz /download/direct/
docker/cli#8 CACHED
docker/cli#7 [5/7] ADD https://pecl.php.net/get/amqp /download/file-header
docker/cli#7 CACHED
docker/cli#4 [internal] load build context
docker/cli#4 transferring context: 37B done
docker/cli#4 DONE 0.0s
docker/cli#6 [2/7] RUN apk add tree
docker/cli#6 0.255 fetch https://dl-cdn.alpinelinux.org/alpine/v3.22/main/x86_64/APKINDEX.tar.gz
docker/cli#6 0.429 fetch https://dl-cdn.alpinelinux.org/alpine/v3.22/community/x86_64/APKINDEX.tar.gz
docker/cli#6 0.860 (1/1) Installing tree (2.2.1-r0)
docker/cli#6 0.879 Executing busybox-1.37.0-r18.trigger
docker/cli#6 0.886 OK: 7 MiB in 17 packages
docker/cli#6 DONE 1.0s
docker/cli#9 [3/7] RUN mkdir /download
docker/cli#9 DONE 0.5s
docker/cli#10 [4/7] ADD https://pecl.php.net/get/amqp-2.1.2.tgz /download/direct/
docker/cli#10 DONE 0.0s
docker/cli#11 [5/7] ADD https://pecl.php.net/get/amqp /download/file-header
docker/cli#11 DONE 0.0s
docker/cli#12 [6/7] ADD amqp-2.1.2.tgz /download/local-amqp
docker/cli#12 DONE 0.1s
docker/cli#13 [7/7] RUN tree /download/
docker/cli#13 0.412 /download/
docker/cli#13 0.413 ├── direct
docker/cli#13 0.413 │ └── amqp-2.1.2.tgz
docker/cli#13 0.413 ├── file-header
docker/cli#13 0.413 └── local-amqp
docker/cli#13 0.413 ├── amqp-2.1.2
docker/cli#13 0.413 │ ├── CREDITS
docker/cli#13 0.413 │ ├── LICENSE
docker/cli#13 0.413 │ ├── amqp.c
docker/cli#13 0.413 │ ├── amqp_basic_properties.c
docker/cli#13 0.413 │ ├── amqp_basic_properties.h
docker/cli#13 0.413 │ ├── amqp_channel.c
docker/cli#13 0.413 │ ├── amqp_channel.h
docker/cli#13 0.413 │ ├── amqp_connection.c
docker/cli#13 0.413 │ ├── amqp_connection.h
docker/cli#13 0.413 │ ├── amqp_connection_resource.c
docker/cli#13 0.413 │ ├── amqp_connection_resource.h
docker/cli#13 0.413 │ ├── amqp_decimal.c
docker/cli#13 0.413 │ ├── amqp_decimal.h
docker/cli#13 0.413 │ ├── amqp_envelope.c
docker/cli#13 0.413 │ ├── amqp_envelope.h
docker/cli#13 0.413 │ ├── amqp_envelope_exception.c
docker/cli#13 0.413 │ ├── amqp_envelope_exception.h
docker/cli#13 0.413 │ ├── amqp_exchange.c
docker/cli#13 0.413 │ ├── amqp_exchange.h
docker/cli#13 0.413 │ ├── amqp_methods_handling.c
docker/cli#13 0.413 │ ├── amqp_methods_handling.h
docker/cli#13 0.413 │ ├── amqp_queue.c
docker/cli#13 0.413 │ ├── amqp_queue.h
docker/cli#13 0.413 │ ├── amqp_timestamp.c
docker/cli#13 0.413 │ ├── amqp_timestamp.h
docker/cli#13 0.413 │ ├── amqp_type.c
docker/cli#13 0.413 │ ├── amqp_type.h
docker/cli#13 0.413 │ ├── amqp_value.c
docker/cli#13 0.413 │ ├── amqp_value.h
docker/cli#13 0.413 │ ├── benchmark.php
docker/cli#13 0.413 │ ├── config.m4
docker/cli#13 0.413 │ ├── config.w32
docker/cli#13 0.413 │ ├── php_amqp.h
docker/cli#13 0.413 │ ├── php_amqp_version.h
docker/cli#13 0.413 │ ├── stubs
docker/cli#13 0.413 │ │ ├── AMQP.php
docker/cli#13 0.413 │ │ ├── AMQPBasicProperties.php
docker/cli#13 0.413 │ │ ├── AMQPChannel.php
docker/cli#13 0.413 │ │ ├── AMQPChannelException.php
docker/cli#13 0.413 │ │ ├── AMQPConnection.php
docker/cli#13 0.413 │ │ ├── AMQPConnectionException.php
docker/cli#13 0.413 │ │ ├── AMQPDecimal.php
docker/cli#13 0.413 │ │ ├── AMQPEnvelope.php
docker/cli#13 0.413 │ │ ├── AMQPEnvelopeException.php
docker/cli#13 0.413 │ │ ├── AMQPException.php
docker/cli#13 0.413 │ │ ├── AMQPExchange.php
docker/cli#13 0.413 │ │ ├── AMQPExchangeException.php
docker/cli#13 0.415 │ │ ├── AMQPQueue.php
docker/cli#13 0.415 │ │ ├── AMQPQueueException.php
docker/cli#13 0.415 │ │ ├── AMQPTimestamp.php
docker/cli#13 0.415 │ │ ├── AMQPValue.php
docker/cli#13 0.415 │ │ └── AMQPValueException.php
docker/cli#13 0.415 │ └── tests
docker/cli#13 0.415 │ ├── 003-channel-consumers.phpt
docker/cli#13 0.415 │ ├── 004-queue-consume-nested.phpt
docker/cli#13 0.415 │ ├── 004-queue-consume-orphaned.phpt
docker/cli#13 0.415 │ ├── _test_helpers.php.inc
docker/cli#13 0.415 │ ├── amqp_version.phpt
docker/cli#13 0.415 │ ├── amqpbasicproperties.phpt
docker/cli#13 0.415 │ ├── amqpbasicproperties_nullability.phpt
docker/cli#13 0.415 │ ├── amqpchannel_basicRecover.phpt
docker/cli#13 0.415 │ ├── amqpchannel_close.phpt
docker/cli#13 0.415 │ ├── amqpchannel_confirmSelect.phpt
docker/cli#13 0.415 │ ├── amqpchannel_construct_basic.phpt
docker/cli#13 0.415 │ ├── amqpchannel_construct_ini_global_prefetch_count.phpt
docker/cli#13 0.415 │ ├── amqpchannel_construct_ini_global_prefetch_size.phpt
docker/cli#13 0.415 │ ├── amqpchannel_construct_ini_prefetch_count.phpt
docker/cli#13 0.415 │ ├── amqpchannel_construct_ini_prefetch_size.phpt
docker/cli#13 0.415 │ ├── amqpchannel_getChannelId.phpt
docker/cli#13 0.415 │ ├── amqpchannel_get_connection.phpt
docker/cli#13 0.415 │ ├── amqpchannel_multi_channel_connection.phpt
docker/cli#13 0.415 │ ├── amqpchannel_set_global_prefetch_count.phpt
docker/cli#13 0.415 │ ├── amqpchannel_set_global_prefetch_size.phpt
docker/cli#13 0.415 │ ├── amqpchannel_set_prefetch_and_global_prefetch_count.phpt
docker/cli#13 0.415 │ ├── amqpchannel_set_prefetch_and_global_prefetch_size.phpt
docker/cli#13 0.415 │ ├── amqpchannel_set_prefetch_count.phpt
docker/cli#13 0.415 │ ├── amqpchannel_set_prefetch_size.phpt
docker/cli#13 0.415 │ ├── amqpchannel_slots_usage.phpt
docker/cli#13 0.415 │ ├── amqpchannel_validation.phpt
docker/cli#13 0.415 │ ├── amqpchannel_var_dump.phpt
docker/cli#13 0.415 │ ├── amqpconnection_connect_login_failure.phpt
docker/cli#13 0.415 │ ├── amqpconnection_connection_getters.phpt
docker/cli#13 0.415 │ ├── amqpconnection_construct_basic.phpt
docker/cli#13 0.415 │ ├── amqpconnection_construct_ini_read_timeout.phpt
docker/cli#13 0.415 │ ├── amqpconnection_construct_ini_timeout.phpt
docker/cli#13 0.415 │ ├── amqpconnection_construct_ini_timeout_and_read_timeout.phpt
docker/cli#13 0.415 │ ├── amqpconnection_construct_ini_timeout_default.phpt
docker/cli#13 0.415 │ ├── amqpconnection_construct_params_by_value.phpt
docker/cli#13 0.415 │ ├── amqpconnection_construct_with_connect_timeout.phpt
docker/cli#13 0.415 │ ├── amqpconnection_construct_with_connection_name.phpt
docker/cli#13 0.415 │ ├── amqpconnection_construct_with_limits.phpt
docker/cli#13 0.415 │ ├── amqpconnection_construct_with_rpc_timeout.phpt
docker/cli#13 0.415 │ ├── amqpconnection_construct_with_timeout.phpt
docker/cli#13 0.415 │ ├── amqpconnection_construct_with_timeout_and_read_timeout.phpt
docker/cli#13 0.415 │ ├── amqpconnection_construct_with_verify_false.phpt
docker/cli#13 0.415 │ ├── amqpconnection_construct_with_write_timeout.phpt
docker/cli#13 0.415 │ ├── amqpconnection_getUsedChannels.phpt
docker/cli#13 0.415 │ ├── amqpconnection_heartbeat.phpt
docker/cli#13 0.415 │ ├── amqpconnection_heartbeat_with_consumer.phpt
docker/cli#13 0.415 │ ├── amqpconnection_heartbeat_with_persistent.phpt
docker/cli#13 0.415 │ ├── amqpconnection_nullable_setters.phpt
docker/cli#13 0.415 │ ├── amqpconnection_persistent_construct_basic.phpt
docker/cli#13 0.415 │ ├── amqpconnection_persistent_in_use.phpt
docker/cli#13 0.415 │ ├── amqpconnection_persistent_reusable.phpt
docker/cli#13 0.415 │ ├── amqpconnection_setConnectionName.phpt
docker/cli#13 0.415 │ ├── amqpconnection_setHost.phpt
docker/cli#13 0.415 │ ├── amqpconnection_setLogin.phpt
docker/cli#13 0.415 │ ├── amqpconnection_setPassword.phpt
docker/cli#13 0.415 │ ├── amqpconnection_setPort_int.phpt
docker/cli#13 0.415 │ ├── amqpconnection_setPort_out_of_range.phpt
docker/cli#13 0.415 │ ├── amqpconnection_setPort_string.phpt
docker/cli#13 0.415 │ ├── amqpconnection_setReadTimeout_float.phpt
docker/cli#13 0.415 │ ├── amqpconnection_setReadTimeout_int.phpt
docker/cli#13 0.415 │ ├── amqpconnection_setReadTimeout_out_of_range.phpt
docker/cli#13 0.415 │ ├── amqpconnection_setReadTimeout_string.phpt
docker/cli#13 0.415 │ ├── amqpconnection_setRpcTimeout_float.phpt
docker/cli#13 0.415 │ ├── amqpconnection_setRpcTimeout_int.phpt
docker/cli#13 0.415 │ ├── amqpconnection_setRpcTimeout_out_of_range.phpt
docker/cli#13 0.415 │ ├── amqpconnection_setRpcTimeout_string.phpt
docker/cli#13 0.415 │ ├── amqpconnection_setSaslMethod.phpt
docker/cli#13 0.415 │ ├── amqpconnection_setSaslMethod_invalid.phpt
docker/cli#13 0.415 │ ├── amqpconnection_setTimeout_deprecated.phpt
docker/cli#13 0.415 │ ├── amqpconnection_setTimeout_float.phpt
docker/cli#13 0.415 │ ├── amqpconnection_setTimeout_int.phpt
docker/cli#13 0.415 │ ├── amqpconnection_setTimeout_out_of_range.phpt
docker/cli#13 0.415 │ ├── amqpconnection_setTimeout_string.phpt
docker/cli#13 0.415 │ ├── amqpconnection_setVhost.phpt
docker/cli#13 0.415 │ ├── amqpconnection_setWriteTimeout_float.phpt
docker/cli#13 0.416 │ ├── amqpconnection_setWriteTimeout_int.phpt
docker/cli#13 0.416 │ ├── amqpconnection_setWriteTimeout_out_of_range.phpt
docker/cli#13 0.416 │ ├── amqpconnection_setWriteTimeout_string.phpt
docker/cli#13 0.416 │ ├── amqpconnection_tls_basic.phpt
docker/cli#13 0.416 │ ├── amqpconnection_tls_mtls.phpt
docker/cli#13 0.416 │ ├── amqpconnection_tls_sasl.phpt
docker/cli#13 0.416 │ ├── amqpconnection_toomanychannels.phpt
docker/cli#13 0.416 │ ├── amqpconnection_validation.phpt
docker/cli#13 0.416 │ ├── amqpconnection_var_dump.phpt
docker/cli#13 0.416 │ ├── amqpdecimal.phpt
docker/cli#13 0.416 │ ├── amqpenvelope_construct.phpt
docker/cli#13 0.416 │ ├── amqpenvelope_get_accessors.phpt
docker/cli#13 0.416 │ ├── amqpenvelope_var_dump.phpt
docker/cli#13 0.416 │ ├── amqpexchange-declare-segfault.phpt
docker/cli#13 0.416 │ ├── amqpexchange_attributes.phpt
docker/cli#13 0.416 │ ├── amqpexchange_bind.phpt
docker/cli#13 0.416 │ ├── amqpexchange_bind_with_arguments.phpt
docker/cli#13 0.416 │ ├── amqpexchange_bind_without_key.phpt
docker/cli#13 0.416 │ ├── amqpexchange_bind_without_key_with_arguments.phpt
docker/cli#13 0.416 │ ├── amqpexchange_channel_refcount.phpt
docker/cli#13 0.416 │ ├── amqpexchange_construct_basic.phpt
docker/cli#13 0.416 │ ├── amqpexchange_declare_basic.phpt
docker/cli#13 0.416 │ ├── amqpexchange_declare_existent.phpt
docker/cli#13 0.416 │ ├── amqpexchange_declare_with_stalled_reference.phpt
docker/cli#13 0.416 │ ├── amqpexchange_declare_without_name.phpt
docker/cli#13 0.416 │ ├── amqpexchange_declare_without_type.phpt
docker/cli#13 0.416 │ ├── amqpexchange_delete_default_exchange.phpt
docker/cli#13 0.416 │ ├── amqpexchange_delete_null_name.phpt
docker/cli#13 0.416 │ ├── amqpexchange_get_channel.phpt
docker/cli#13 0.416 │ ├── amqpexchange_get_connection.phpt
docker/cli#13 0.416 │ ├── amqpexchange_invalid_type.phpt
docker/cli#13 0.416 │ ├── amqpexchange_name.phpt
docker/cli#13 0.416 │ ├── amqpexchange_publish_basic.phpt
docker/cli#13 0.416 │ ├── amqpexchange_publish_confirms.phpt
docker/cli#13 0.416 │ ├── amqpexchange_publish_confirms_consume.phpt
docker/cli#13 0.416 │ ├── amqpexchange_publish_empty_routing_key.phpt
docker/cli#13 0.416 │ ├── amqpexchange_publish_mandatory.phpt
docker/cli#13 0.416 │ ├── amqpexchange_publish_mandatory_consume.phpt
docker/cli#13 0.416 │ ├── amqpexchange_publish_mandatory_multiple_channels_pitfall.phpt
docker/cli#13 0.416 │ ├── amqpexchange_publish_null_routing_key.phpt
docker/cli#13 0.416 │ ├── amqpexchange_publish_with_decimal_header.phpt
docker/cli#13 0.416 │ ├── amqpexchange_publish_with_null.phpt
docker/cli#13 0.416 │ ├── amqpexchange_publish_with_properties.phpt
docker/cli#13 0.416 │ ├── amqpexchange_publish_with_properties_ignore_num_header.phpt
docker/cli#13 0.416 │ ├── amqpexchange_publish_with_properties_ignore_unsupported_header_values.phpt
docker/cli#13 0.416 │ ├── amqpexchange_publish_with_properties_nested_header.phpt
docker/cli#13 0.416 │ ├── amqpexchange_publish_with_properties_user_id_failure.phpt
docker/cli#13 0.416 │ ├── amqpexchange_publish_with_timestamp_header.phpt
docker/cli#13 0.416 │ ├── amqpexchange_publish_xdeath.phpt
docker/cli#13 0.416 │ ├── amqpexchange_setArgument.phpt
docker/cli#13 0.416 │ ├── amqpexchange_set_flag.phpt
docker/cli#13 0.416 │ ├── amqpexchange_set_flags.phpt
docker/cli#13 0.416 │ ├── amqpexchange_type.phpt
docker/cli#13 0.416 │ ├── amqpexchange_unbind.phpt
docker/cli#13 0.416 │ ├── amqpexchange_unbind_with_arguments.phpt
docker/cli#13 0.416 │ ├── amqpexchange_unbind_without_key.phpt
docker/cli#13 0.416 │ ├── amqpexchange_unbind_without_key_with_arguments.phpt
docker/cli#13 0.416 │ ├── amqpexchange_var_dump.phpt
docker/cli#13 0.416 │ ├── amqpqueue-cancel-no-consumers.phpt
docker/cli#13 0.416 │ ├── amqpqueue_attributes.phpt
docker/cli#13 0.416 │ ├── amqpqueue_bind_basic.phpt
docker/cli#13 0.416 │ ├── amqpqueue_bind_basic_empty_routing_key.phpt
docker/cli#13 0.416 │ ├── amqpqueue_bind_basic_headers_arguments.phpt
docker/cli#13 0.416 │ ├── amqpqueue_bind_null_routing_key.phpt
docker/cli#13 0.416 │ ├── amqpqueue_cancel.phpt
docker/cli#13 0.416 │ ├── amqpqueue_construct_basic.phpt
docker/cli#13 0.416 │ ├── amqpqueue_consume_basic.phpt
docker/cli#13 0.416 │ ├── amqpqueue_consume_multiple.phpt
docker/cli#13 0.416 │ ├── amqpqueue_consume_multiple_no_doubles.phpt
docker/cli#13 0.416 │ ├── amqpqueue_consume_nonexistent.phpt
docker/cli#13 0.416 │ ├── amqpqueue_consume_null_consumer_key.phpt
docker/cli#13 0.416 │ ├── amqpqueue_consume_timeout.phpt
docker/cli#13 0.416 │ ├── amqpqueue_declare_basic.phpt
docker/cli#13 0.416 │ ├── amqpqueue_declare_with_arguments.phpt
docker/cli#13 0.416 │ ├── amqpqueue_declare_with_stalled_reference.phpt
docker/cli#13 0.416 │ ├── amqpqueue_delete_basic.phpt
docker/cli#13 0.416 │ ├── amqpqueue_empty_name.phpt
docker/cli#13 0.416 │ ├── amqpqueue_get_basic.phpt
docker/cli#13 0.416 │ ├── amqpqueue_get_channel.phpt
docker/cli#13 0.416 │ ├── amqpqueue_get_connection.phpt
docker/cli#13 0.416 │ ├── amqpqueue_get_empty_body.phpt
docker/cli#13 0.416 │ ├── amqpqueue_get_headers.phpt
docker/cli#13 0.416 │ ├── amqpqueue_get_nonexistent.phpt
docker/cli#13 0.416 │ ├── amqpqueue_headers_with_bool.phpt
docker/cli#13 0.416 │ ├── amqpqueue_headers_with_float.phpt
docker/cli#13 0.416 │ ├── amqpqueue_headers_with_null.phpt
docker/cli#13 0.416 │ ├── amqpqueue_nack.phpt
docker/cli#13 0.416 │ ├── amqpqueue_nested_arrays.phpt
docker/cli#13 0.416 │ ├── amqpqueue_nested_headers.phpt
docker/cli#13 0.416 │ ├── amqpqueue_purge_basic.phpt
docker/cli#13 0.416 │ ├── amqpqueue_recover.phpt
docker/cli#13 0.416 │ ├── amqpqueue_setArgument.phpt
docker/cli#13 0.416 │ ├── amqpqueue_setFlags.phpt
docker/cli#13 0.416 │ ├── amqpqueue_unbind_basic_empty_routing_key.phpt
docker/cli#13 0.416 │ ├── amqpqueue_unbind_basic_headers_arguments.phpt
docker/cli#13 0.416 │ ├── amqpqueue_var_dump.phpt
docker/cli#13 0.416 │ ├── amqptimestamp.phpt
docker/cli#13 0.416 │ ├── bug_17831.phpt
docker/cli#13 0.416 │ ├── bug_19707.phpt
docker/cli#13 0.416 │ ├── bug_19840.phpt
docker/cli#13 0.416 │ ├── bug_351.phpt
docker/cli#13 0.416 │ ├── bug_385.phpt
docker/cli#13 0.416 │ ├── bug_61533.phpt
docker/cli#13 0.416 │ ├── bug_62354.phpt
docker/cli#13 0.416 │ ├── bug_gh147.phpt
docker/cli#13 0.416 │ ├── bug_gh155_direct_reply_to.phpt
docker/cli#13 0.416 │ ├── bug_gh50-1.phpt
docker/cli#13 0.416 │ ├── bug_gh50-2.phpt
docker/cli#13 0.416 │ ├── bug_gh50-3.phpt
docker/cli#13 0.416 │ ├── bug_gh50-4.phpt
docker/cli#13 0.416 │ ├── bug_gh53-2.phpt
docker/cli#13 0.416 │ ├── bug_gh53.phpt
docker/cli#13 0.416 │ ├── bug_gh72-1.phpt
docker/cli#13 0.416 │ ├── bug_gh72-2.phpt
docker/cli#13 0.416 │ ├── ini_validation_failure.phpt
docker/cli#13 0.416 │ ├── package-version.phpt
docker/cli#13 0.416 │ ├── serialize-custom-amqpvalue-errors.phpt
docker/cli#13 0.416 │ ├── serialize-custom-amqpvalue.phpt
docker/cli#13 0.416 │ └── testtest.phpt
docker/cli#13 0.416 └── package.xml
docker/cli#13 0.416
docker/cli#13 0.416 6 directories, 248 files
docker/cli#13 DONE 0.4s
docker/cli#14 exporting to image
docker/cli#14 exporting layers 0.1s done
docker/cli#14 writing image sha256:f2febff512e6505ccf5e04976b0084fb096194966fd495c82863c95e8173eb8d done
docker/cli#14 DONE 0.1s
Expected behavior
Both
ADD https://pecl.php.net/get/amqp-2.1.2.tgz /download/direct/ADD https://pecl.php.net/get/amqp /download/file-header
should add a file.
Ideally, there should be an option to have the .tgz (and any supported archive) be extracted as well as the local file is.
I assume you prevent the automatic extraction of remote files for security concerns, in practice we do wget / curl and untar the file anyway. So this feature is both confusing and gets in the way of current practices.
Yet main scope of this issue is that URL like https://pecl.php.net/get/amqp are discovered as a file and added.
If you don't want to support that, there should be an error (or at least a warning) since no file was added.
docker version
Client: Docker Engine - Community
Version: 28.5.0
API version: 1.51
Go version: go1.24.7
Git commit: 887030f
Built: Thu Oct 2 14:54:28 2025
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 28.5.0
API version: 1.51 (minimum version 1.24)
Go version: go1.24.7
Git commit: cd04830
Built: Thu Oct 2 14:54:28 2025
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v1.7.28
GitCommit: b98a3aace656320842a23f4a392a33f46af97866
runc:
Version: 1.3.0
GitCommit: v1.3.0-0-g4ca628d1
docker-init:
Version: 0.19.0
GitCommit: de40ad0docker info
Client: Docker Engine - Community
Version: 28.5.0
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.29.1
Path: /usr/libexec/docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v2.40.0
Path: /usr/libexec/docker/cli-plugins/docker-compose
Server:
Containers: 14
Running: 7
Paused: 0
Stopped: 7
Images: 40
Server Version: 28.5.0
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
CDI spec directories:
/etc/cdi
/var/run/cdi
Swarm: inactive
Runtimes: io.containerd.runc.v2 runc
Default Runtime: runc
Init Binary: docker-init
containerd version: b98a3aace656320842a23f4a392a33f46af97866
runc version: v1.3.0-0-g4ca628d1
init version: de40ad0
Security Options:
seccomp
Profile: builtin
Kernel Version: 5.15.153.1-microsoft-standard-WSL2
Operating System: Ubuntu 24.04.3 LTS
OSType: linux
Architecture: x86_64
CPUs: 14
Total Memory: 15.36GiB
Name: mst-nb-115
ID: 17861055-c8e2-4210-9365-232537ab393d
Docker Root Dir: /var/lib/docker
Debug Mode: false
Experimental: false
Insecure Registries:
::1/128
127.0.0.0/8
Live Restore Enabled: falseAdditional Info
No response