YouTube-operational-API icon indicating copy to clipboard operation
YouTube-operational-API copied to clipboard

Create docker image

Open Andromeda606 opened this issue 3 months ago • 11 comments

This project is great! I'd love to have an image I could download from Docker Hub. That way, I could manage Docker images without constantly checking versions.

Andromeda606 avatar Aug 25 '25 09:08 Andromeda606

Hello, just to make sure (I'm not a regular Docker user):

You are aware of:

?

I already pushed once https://hub.docker.com/r/benjaminloison/youtube-operational-api, but it needs to be pushed again after each version/commit, right?

By the way do you know an open-source alternative to https://hub.docker.com? As far as I know this server instance is not open-source. Related to #337/files#r2299314980.

Related to #33.

Benjamin-Loison avatar Aug 25 '25 09:08 Benjamin-Loison

You can share your own image in Docker Hub. I think we need to automate it with CI/CD.

The README is also mentioned yes, but since the project is actively developing, I have to constantly get updates with git. This can be overwhelming

In addition, the image in Docker Hub was updated 1 year ago, it needs to be updated with every commit. This is where CI/CD can come in handy

Andromeda606 avatar Aug 25 '25 11:08 Andromeda606

Would you mind opening a pull request with such GitHub Actions CI/CD?

Benjamin-Loison avatar Aug 25 '25 12:08 Benjamin-Loison

Of course! I'll open it when I'm available

Andromeda606 avatar Aug 25 '25 16:08 Andromeda606

Just a disclaimer I don't know how Docker internally work and I do not like Docker much (I may be wrong), but I am totally fine helping you using Docker if you would like to.

Personal notes (I do not expect an answer from your end, but if you have insights I am fine hearing them):

Do you know how to avoid making a Docker image of Size 170.6 MB for each release? Related to #338.

I feel quite bad that at each commit would have such a huge blob, that's maybe why we define versions/releases. I would expect only my code size to make the additional Docker size download compared to dependencies. Well maybe dependencies are well managed, so let us not consider that or we will end up facing some free limits I guess.

Benjamin-Loison avatar Aug 25 '25 20:08 Benjamin-Loison

Absolutely not! This image size is available in Docker regardless of the repo.

In other words, nothing is added to the github code, there is no problem You can look at my fork project, there's an example there https://github.com/Andromeda606/YouTube-operational-API

On the other hand, fitting an operating system into 170 MB is pretty good (compressed version)

Andromeda606 avatar Aug 25 '25 22:08 Andromeda606

Related to #220.

Benjamin-Loison avatar Aug 25 '25 22:08 Benjamin-Loison

This project is great! I'd love to have an image I could download from Docker Hub. That way, I could manage Docker images without constantly checking versions.

Sorry to reconsider this only now, but I am currently wondering why are we considering building images and putting them online on closed-source Docker Hub, as in terms of download complexity it seems pretty identical and in terms of compilation as mentioned in pull/337#discussion_r2312074385 we are talking about 20 (25.573s - 6.048s) seconds on my free Oracle Cloud VPS ARM and there is no dependency hell to manage depending on the host OS as without Docker (so the compilation is quite not even noticed by the end-user), then I don't find the point of publishing Docker images here, even for updates, as it takes 2.5 seconds which is faster than redownloading a full image as far as I understand which takes 6 seconds as mentioned.

What would ideally be your flow to update your Docker images? What do you do currently to update them?

Sorry again, I am picky, open-minded, but need to be convinced of what I am doing to do it.

Personal notes:
git diff
Output:
diff --git a/index.php b/index.php
index d9ff399..6e91eef 100644
--- a/index.php
+++ b/index.php
@@ -2,7 +2,7 @@
 <html lang="en">
     <head>
         <meta charset="UTF-8" />
-        <title>YouTube operational API</title>
+        <title>YouTube operational API test</title>
         <style>
             body {
                 max-width: 73%;
time docker build .
Output:
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
            Install the buildx component to build images with BuildKit:
            https://docs.docker.com/go/buildx/

Sending build context to Docker daemon  207.9kB
Step 1/14 : FROM php:apache AS builder
 ---> 40286d9b5483
Step 2/14 : RUN apt-get update && apt-get install -y git protobuf-compiler
 ---> Using cache
 ---> 8d5dd3230482
Step 3/14 : COPY --from=composer/composer:latest-bin /composer /usr/bin/composer
 ---> Using cache
 ---> 3054393b4bce
Step 4/14 : COPY . /app
 ---> 950784e8fe96
Step 5/14 : WORKDIR /app
 ---> Running in be22b5c6b4b4
 ---> Removed intermediate container be22b5c6b4b4
 ---> b09ddbc3e252
Step 6/14 : RUN composer require google/protobuf     && protoc --php_out=proto/php/ --proto_path=proto/prototypes/ $(find proto/prototypes/ -type f)
 ---> Running in 0eeedb708834
./composer.json has been created
Running composer update google/protobuf
Loading composer repositories with package information
Updating dependencies
Lock file operations: 1 install, 0 updates, 0 removals
  - Locking google/protobuf (v4.32.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
    Failed to download google/protobuf from dist: The zip extension and unzip/7z commands are both missing, skipping.
Your command-line PHP is using multiple ini files. Run `php --ini` to show them.
    Now trying to download from source
  - Syncing google/protobuf (v4.32.0) into cache
  - Installing google/protobuf (v4.32.0): Cloning 9a9a92ecbe from cache
1 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
No security vulnerability advisories found.
Using version ^4.32 for google/protobuf
 ---> Removed intermediate container 0eeedb708834
 ---> 74b99228837d
Step 7/14 : FROM php:apache
 ---> 40286d9b5483
Step 8/14 : RUN a2enmod rewrite
 ---> Using cache
 ---> 3aea4373b748
Step 9/14 : COPY --from=builder /app /var/www/html/
 ---> 22c760efa12a
Step 10/14 : RUN sed -ri -e 'N;N;N;s/(<Directory \/var\/www\/>\n)(.*\n)(.*)AllowOverride None/\1\2\3AllowOverride All/;p;d;' /etc/apache2/apache2.conf
 ---> Running in 82c6d21938ec
 ---> Removed intermediate container 82c6d21938ec
 ---> b802d078c09e
Step 11/14 : ARG VERSION
 ---> Running in b6109525ecb3
 ---> Removed intermediate container b6109525ecb3
 ---> 2aa2fb18b78b
Step 12/14 : ENV VERSION=$VERSION
 ---> Running in 76fd3f583ff2
 ---> Removed intermediate container 76fd3f583ff2
 ---> ab8fc852accb
Step 13/14 : EXPOSE 80
 ---> Running in a2a56aaca2cc
 ---> Removed intermediate container a2a56aaca2cc
 ---> a8ef1a6d1e0c
Step 14/14 : ENTRYPOINT ["apachectl", "-D", "FOREGROUND"]
 ---> Running in 313d961da78f
 ---> Removed intermediate container 313d961da78f
 ---> 09793dad9d6f
Successfully built 09793dad9d6f

real	0m2.487s
user	0m0.014s
sys	0m0.009s

Related to Benjamin_Loison/moby/issues/17.

If no change:

time docker build .
Output:
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
            Install the buildx component to build images with BuildKit:
            https://docs.docker.com/go/buildx/

Sending build context to Docker daemon  207.9kB
Step 1/14 : FROM php:apache AS builder
 ---> 40286d9b5483
Step 2/14 : RUN apt-get update && apt-get install -y git protobuf-compiler
 ---> Using cache
 ---> 8d5dd3230482
Step 3/14 : COPY --from=composer/composer:latest-bin /composer /usr/bin/composer
 ---> Using cache
 ---> 3054393b4bce
Step 4/14 : COPY . /app
 ---> Using cache
 ---> 950784e8fe96
Step 5/14 : WORKDIR /app
 ---> Using cache
 ---> b09ddbc3e252
Step 6/14 : RUN composer require google/protobuf     && protoc --php_out=proto/php/ --proto_path=proto/prototypes/ $(find proto/prototypes/ -type f)
 ---> Using cache
 ---> 74b99228837d
Step 7/14 : FROM php:apache
 ---> 40286d9b5483
Step 8/14 : RUN a2enmod rewrite
 ---> Using cache
 ---> 3aea4373b748
Step 9/14 : COPY --from=builder /app /var/www/html/
 ---> Using cache
 ---> 22c760efa12a
Step 10/14 : RUN sed -ri -e 'N;N;N;s/(<Directory \/var\/www\/>\n)(.*\n)(.*)AllowOverride None/\1\2\3AllowOverride All/;p;d;' /etc/apache2/apache2.conf
 ---> Using cache
 ---> b802d078c09e
Step 11/14 : ARG VERSION
 ---> Using cache
 ---> 2aa2fb18b78b
Step 12/14 : ENV VERSION=$VERSION
 ---> Using cache
 ---> ab8fc852accb
Step 13/14 : EXPOSE 80
 ---> Using cache
 ---> a8ef1a6d1e0c
Step 14/14 : ENTRYPOINT ["apachectl", "-D", "FOREGROUND"]
 ---> Using cache
 ---> 09793dad9d6f
Successfully built 09793dad9d6f

real	0m0.072s
user	0m0.010s
sys	0m0.010s

Benjamin-Loison avatar Aug 30 '25 19:08 Benjamin-Loison

Just think, you downloaded this project using git and are running it on your server. What happens when you update it? Do I have to git pull and update it again?

Instead of checking whether you've updated your library with all this work, all I have to do is type docker run. It will download your latest update and I can use it easily.

It is definitely an easier solution for other users

In short, the point isn't actually to create Docker images, but to push and manage them. You can choose an alternative other than Docker Hub, but it's the most well-known

Think of it like using apt. When I type apt install firefox, I can easily download the latest version of firefox. I no longer need to check the version of firefox

Andromeda606 avatar Aug 30 '25 20:08 Andromeda606

When running firefox it runs last apt installed version of Firefox, same for docker run youtube_operational_api (built with the following command), so if you want to potentially install/update and run YouTube operational API with Docker, then buildx build --tag youtube_operational_api github.com/Benjamin-Loison/YouTube-operational-API && docker run -p 8080:80 youtube_operational_api should meet your needs without being too cumbersome in my opinion (it should be docker run -p 8080:80 github.com/Benjamin-Loison/YouTube-operational-API, but they try to promote Docker Hub to make money I guess, maybe there is a fork adding this feature or you can create your own wrapper), quite as similarly as sudo apt update && sudo apt upgrade -y firefox && ./firefox .

Personal notes:
docker build --help
Output:
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
            Install the buildx component to build images with BuildKit:
            https://docs.docker.com/go/buildx/


Usage:  docker build [OPTIONS] PATH | URL | -

Build an image from a Dockerfile

Aliases:
  docker image build, docker build, docker builder build

Options:
      --add-host list           Add a custom host-to-IP mapping ("host:ip")
      --build-arg list          Set build-time variables
      --cache-from strings      Images to consider as cache sources
      --cgroup-parent string    Set the parent cgroup for the "RUN" instructions during build
      --compress                Compress the build context using gzip
      --cpu-period int          Limit the CPU CFS (Completely Fair Scheduler) period
      --cpu-quota int           Limit the CPU CFS (Completely Fair Scheduler) quota
  -c, --cpu-shares int          CPU shares (relative weight)
      --cpuset-cpus string      CPUs in which to allow execution (0-3, 0,1)
      --cpuset-mems string      MEMs in which to allow execution (0-3, 0,1)
      --disable-content-trust   Skip image verification (default true)
  -f, --file string             Name of the Dockerfile (Default is "PATH/Dockerfile")
      --force-rm                Always remove intermediate containers
      --iidfile string          Write the image ID to the file
      --isolation string        Container isolation technology
      --label list              Set metadata for an image
  -m, --memory bytes            Memory limit
      --memory-swap bytes       Swap limit equal to memory plus swap: -1 to enable unlimited swap
      --network string          Set the networking mode for the RUN instructions during build (default "default")
      --no-cache                Do not use cache when building the image
      --platform string         Set platform if server is multi-platform capable
      --pull                    Always attempt to pull a newer version of the image
  -q, --quiet                   Suppress the build output and print image ID on success
      --rm                      Remove intermediate containers after a successful build (default true)
      --security-opt strings    Security options
      --shm-size bytes          Size of "/dev/shm"
  -t, --tag list                Name and optionally a tag in the "name:tag" format
      --target string           Set the target build stage to build.
      --ulimit ulimit           Ulimit options (default [])

--pull does not experimentally helps it seems.

./buildx-v0.27.0.linux-arm64 --help
Output:
Extended build capabilities with BuildKit

Usage:
  buildx-v0.27.0.linux-arm64
  buildx-v0.27.0.linux-arm64 [command]

Available Commands:
  bake        Build from a file
  build       Start a build
  create      Create a new builder instance
  dial-stdio  Proxy current stdio streams to builder instance
  du          Disk usage
  help        Help about any command
  history     Commands to work on build records
  imagetools  Commands to work on images in registry
  inspect     Inspect current builder instance
  ls          List builder instances
  prune       Remove build cache
  rm          Remove one or more builder instances
  stop        Stop builder instance
  use         Set the current builder instance
  version     Show buildx version information

Flags:
      --builder string   Override the configured builder instance
  -D, --debug            Enable debug logging
  -h, --help             help for buildx-v0.27.0.linux-arm64

Use "buildx-v0.27.0.linux-arm64 [command] --help" for more information about a command.

Experimental commands and flags are hidden. Set BUILDX_EXPERIMENTAL=1 to show them.
./buildx-v0.27.0.linux-arm64 build --help
Output:
Start a build

Usage:
  buildx-v0.27.0.linux-arm64 build [OPTIONS] PATH | URL | - [flags]

Aliases:
  build, b

Flags:
      --add-host strings              Add a custom host-to-IP mapping (format: "host:ip")
      --allow stringArray             Allow extra privileged entitlement (e.g., "network.host", "security.insecure")
      --annotation stringArray        Add annotation to the image
      --attest stringArray            Attestation parameters (format: "type=sbom,generator=image")
      --build-arg stringArray         Set build-time variables
      --build-context stringArray     Additional build contexts (e.g., name=path)
      --cache-from stringArray        External cache sources (e.g., "user/app:cache", "type=local,src=path/to/dir")
      --cache-to stringArray          Cache export destinations (e.g., "user/app:cache", "type=local,dest=path/to/dir")
      --call string                   Set method for evaluating build ("check", "outline", "targets") (default "build")
      --cgroup-parent string          Set the parent cgroup for the "RUN" instructions during build
      --check                         Shorthand for "--call=check" (default )
  -f, --file string                   Name of the Dockerfile (default: "PATH/Dockerfile")
  -h, --help                          help for build
      --iidfile string                Write the image ID to a file
      --label stringArray             Set metadata for an image
      --load                          Shorthand for "--output=type=docker"
      --metadata-file string          Write build result metadata to a file
      --network string                Set the networking mode for the "RUN" instructions during build (default "default")
      --no-cache                      Do not use cache when building the image
      --no-cache-filter stringArray   Do not cache specified stages
  -o, --output stringArray            Output destination (format: "type=local,dest=path")
      --platform stringArray          Set target platform for build
      --progress string               Set type of progress output ("auto", "quiet", "plain", "tty", "rawjson"). Use plain to show container output (default "auto")
      --provenance string             Shorthand for "--attest=type=provenance"
      --pull                          Always attempt to pull all referenced images
      --push                          Shorthand for "--output=type=registry"
  -q, --quiet                         Suppress the build output and print image ID on success
      --sbom string                   Shorthand for "--attest=type=sbom"
      --secret stringArray            Secret to expose to the build (format: "id=mysecret[,src=/local/secret]")
      --shm-size bytes                Shared memory size for build containers
      --ssh stringArray               SSH agent socket or keys to expose to the build (format: "default|<id>[=<socket>|<key>[,<key>]]")
  -t, --tag stringArray               Name and optionally a tag (format: "name:tag")
      --target string                 Set the target build stage to build
      --ulimit ulimit                 Ulimit options (default [])

Global Flags:
      --builder string   Override the configured builder instance
  -D, --debug            Enable debug logging

Experimental commands and flags are hidden. Set BUILDX_EXPERIMENTAL=1 to show them.
docker build --tag 'YouTube operational API' .
Output:
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
            Install the buildx component to build images with BuildKit:
            https://docs.docker.com/go/buildx/

invalid argument "YouTube operational API" for "-t, --tag" flag: invalid reference format: repository name (library/YouTube operational API) must be lowercase
See 'docker build --help'.
docker build --tag 'youtube operational api' .
Output:
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
            Install the buildx component to build images with BuildKit:
            https://docs.docker.com/go/buildx/

invalid argument "youtube operational api" for "-t, --tag" flag: invalid reference format
See 'docker build --help'.
docker build --tag "youtube operational api:`git rev-parse --short HEAD`" .
Output:
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
            Install the buildx component to build images with BuildKit:
            https://docs.docker.com/go/buildx/

invalid argument "youtube operational api:1ef5021" for "-t, --tag" flag: invalid reference format
See 'docker build --help'.
docker build --tag youtube_operational_api .
Output:
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
            Install the buildx component to build images with BuildKit:
            https://docs.docker.com/go/buildx/

Sending build context to Docker daemon  65.42MB
Step 1/14 : FROM php:apache AS builder
 ---> 40286d9b5483
Step 2/14 : RUN apt-get update && apt-get install -y git protobuf-compiler
 ---> Using cache
 ---> 45f216865bb7
Step 3/14 : COPY --from=composer/composer:latest-bin /composer /usr/bin/composer
 ---> Using cache
 ---> ce0a5bbe2a4c
Step 4/14 : COPY . /app
 ---> Using cache
 ---> d078c0c82b20
Step 5/14 : WORKDIR /app
 ---> Using cache
 ---> 0dd9d7e3f177
Step 6/14 : RUN composer require google/protobuf     && protoc --php_out=proto/php/ --proto_path=proto/prototypes/ $(find proto/prototypes/ -type f)
 ---> Using cache
 ---> f69c5707f847
Step 7/14 : FROM php:apache
 ---> 40286d9b5483
Step 8/14 : RUN a2enmod rewrite
 ---> Using cache
 ---> b27d72bca464
Step 9/14 : COPY --from=builder /app /var/www/html/
 ---> Using cache
 ---> 1c2351dcd548
Step 10/14 : RUN sed -ri -e 'N;N;N;s/(<Directory \/var\/www\/>\n)(.*\n)(.*)AllowOverride None/\1\2\3AllowOverride All/;p;d;' /etc/apache2/apache2.conf
 ---> Using cache
 ---> a09d2df46f81
Step 11/14 : ARG VERSION
 ---> Using cache
 ---> 69e84ee5cea5
Step 12/14 : ENV VERSION=$VERSION
 ---> Using cache
 ---> 26cbc7eb84f4
Step 13/14 : EXPOSE 80
 ---> Using cache
 ---> 3e7a5ca2ea81
Step 14/14 : ENTRYPOINT ["apachectl", "-D", "FOREGROUND"]
 ---> Using cache
 ---> d13045f51342
Successfully built d13045f51342
Successfully tagged youtube_operational_api:latest
docker image ls
Output:
REPOSITORY                TAG          IMAGE ID       CREATED         SIZE
youtube_operational_api   latest       10f07326a38a   6 seconds ago   591MB
<none>                    <none>       a4259b5c61db   8 seconds ago   684MB
php                       apache       40286d9b5483   2 days ago      525MB
composer/composer         latest-bin   ba42955de964   9 days ago      3.12MB

latest could be understood locally.

docker build --tag "youtube_operational_api:`git rev-parse --short HEAD`" .
Output:
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
            Install the buildx component to build images with BuildKit:
            https://docs.docker.com/go/buildx/

Sending build context to Docker daemon  65.42MB
Step 1/14 : FROM php:apache AS builder
apache: Pulling from library/php
9a6263cdeaa5: Already exists 
ef1ee6d029e6: Already exists 
a472e922e809: Already exists 
48fe053e93cb: Already exists 
fc43ae40cfaf: Already exists 
68c0c909ee69: Already exists 
a5af3640212f: Already exists 
d1daf55e39b8: Already exists 
0aa06473af9f: Already exists 
b009c6bfbc2e: Already exists 
d7b879e84d79: Already exists 
ce23f515033b: Already exists 
7b848ff217f1: Already exists 
a341f2f20c41: Already exists 
4f4fb700ef54: Already exists 
Digest: sha256:fc535e6bf80041c11d99380d2a5a3ff4ceaafac7efbd4f8d53c876ca4751c7c2
Status: Downloaded newer image for php:apache
 ---> 40286d9b5483
Step 2/14 : RUN apt-get update && apt-get install -y git protobuf-compiler
 ---> Running in e064459026f3
Hit:1 http://deb.debian.org/debian trixie InRelease
Get:2 http://deb.debian.org/debian trixie-updates InRelease [47.1 kB]
Get:3 http://deb.debian.org/debian-security trixie-security InRelease [43.4 kB]
Get:4 http://deb.debian.org/debian trixie/main arm64 Packages [9604 kB]
Get:5 http://deb.debian.org/debian trixie-updates/main arm64 Packages [2432 B]
Get:6 http://deb.debian.org/debian-security trixie-security/main arm64 Packages [33.6 kB]
Fetched 9730 kB in 1s (9154 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
  git-man less libcbor0.10 libcurl3t64-gnutls libedit2 liberror-perl
  libfido2-1 libngtcp2-16 libngtcp2-crypto-gnutls8 libprotobuf-dev
  libprotobuf-lite32t64 libprotobuf32t64 libprotoc32t64 libx11-6 libx11-data
  libxau6 libxcb1 libxdmcp6 libxext6 libxmuu1 openssh-client xauth zlib1g-dev
Suggested packages:
  gettext-base git-doc git-email git-gui gitk gitweb git-cvs git-mediawiki
  git-svn keychain libpam-ssh monkeysphere ssh-askpass protobuf-mode-el
The following NEW packages will be installed:
  git git-man less libcbor0.10 libcurl3t64-gnutls libedit2 liberror-perl
  libfido2-1 libngtcp2-16 libngtcp2-crypto-gnutls8 libprotobuf-dev
  libprotobuf-lite32t64 libprotobuf32t64 libprotoc32t64 libx11-6 libx11-data
  libxau6 libxcb1 libxdmcp6 libxext6 libxmuu1 openssh-client protobuf-compiler
  xauth zlib1g-dev
0 upgraded, 25 newly installed, 0 to remove and 1 not upgraded.
Need to get 18.3 MB of archives.
After this operation, 87.4 MB of additional disk space will be used.
Get:1 http://deb.debian.org/debian trixie/main arm64 less arm64 668-1 [156 kB]
Get:2 http://deb.debian.org/debian trixie/main arm64 libedit2 arm64 3.1-20250104-1 [89.3 kB]
Get:3 http://deb.debian.org/debian trixie/main arm64 libcbor0.10 arm64 0.10.2-2 [27.4 kB]
Get:4 http://deb.debian.org/debian trixie/main arm64 libfido2-1 arm64 1.15.0-1+b1 [74.3 kB]
Get:5 http://deb.debian.org/debian trixie/main arm64 openssh-client arm64 1:10.0p1-7 [925 kB]
Get:6 http://deb.debian.org/debian trixie/main arm64 libngtcp2-16 arm64 1.11.0-1 [121 kB]
Get:7 http://deb.debian.org/debian trixie/main arm64 libngtcp2-crypto-gnutls8 arm64 1.11.0-1 [28.2 kB]
Get:8 http://deb.debian.org/debian trixie/main arm64 libcurl3t64-gnutls arm64 8.14.1-2 [353 kB]
Get:9 http://deb.debian.org/debian trixie/main arm64 liberror-perl all 0.17030-1 [26.9 kB]
Get:10 http://deb.debian.org/debian trixie/main arm64 git-man all 1:2.47.2-0.2 [2205 kB]
Get:11 http://deb.debian.org/debian trixie/main arm64 git arm64 1:2.47.2-0.2 [8724 kB]
Get:12 http://deb.debian.org/debian trixie/main arm64 zlib1g-dev arm64 1:1.3.dfsg+really1.3.1-1+b1 [917 kB]
Get:13 http://deb.debian.org/debian trixie/main arm64 libprotobuf32t64 arm64 3.21.12-11 [858 kB]
Get:14 http://deb.debian.org/debian trixie/main arm64 libprotobuf-lite32t64 arm64 3.21.12-11 [250 kB]
Get:15 http://deb.debian.org/debian trixie/main arm64 libprotobuf-dev arm64 3.21.12-11 [1261 kB]
Get:16 http://deb.debian.org/debian trixie/main arm64 libprotoc32t64 arm64 3.21.12-11 [790 kB]
Get:17 http://deb.debian.org/debian trixie/main arm64 libxau6 arm64 1:1.0.11-1 [20.6 kB]
Get:18 http://deb.debian.org/debian trixie/main arm64 libxdmcp6 arm64 1:1.1.5-1 [27.8 kB]
Get:19 http://deb.debian.org/debian trixie/main arm64 libxcb1 arm64 1.17.0-2+b1 [143 kB]
Get:20 http://deb.debian.org/debian trixie/main arm64 libx11-data all 2:1.8.12-1 [343 kB]
Get:21 http://deb.debian.org/debian trixie/main arm64 libx11-6 arm64 2:1.8.12-1 [795 kB]
Get:22 http://deb.debian.org/debian trixie/main arm64 libxext6 arm64 2:1.3.4-1+b3 [49.2 kB]
Get:23 http://deb.debian.org/debian trixie/main arm64 libxmuu1 arm64 2:1.1.3-3+b4 [22.0 kB]
Get:24 http://deb.debian.org/debian trixie/main arm64 protobuf-compiler arm64 3.21.12-11 [84.7 kB]
Get:25 http://deb.debian.org/debian trixie/main arm64 xauth arm64 1:1.1.2-1.1 [35.4 kB]
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (This frontend requires a controlling tty.)
debconf: falling back to frontend: Teletype
debconf: unable to initialize frontend: Teletype
debconf: (This frontend requires a controlling tty.)
debconf: falling back to frontend: Noninteractive
Fetched 18.3 MB in 0s (85.0 MB/s)
Selecting previously unselected package less.
(Reading database ... 15697 files and directories currently installed.)
Preparing to unpack .../00-less_668-1_arm64.deb ...
Unpacking less (668-1) ...
Selecting previously unselected package libedit2:arm64.
Preparing to unpack .../01-libedit2_3.1-20250104-1_arm64.deb ...
Unpacking libedit2:arm64 (3.1-20250104-1) ...
Selecting previously unselected package libcbor0.10:arm64.
Preparing to unpack .../02-libcbor0.10_0.10.2-2_arm64.deb ...
Unpacking libcbor0.10:arm64 (0.10.2-2) ...
Selecting previously unselected package libfido2-1:arm64.
Preparing to unpack .../03-libfido2-1_1.15.0-1+b1_arm64.deb ...
Unpacking libfido2-1:arm64 (1.15.0-1+b1) ...
Selecting previously unselected package openssh-client.
Preparing to unpack .../04-openssh-client_1%3a10.0p1-7_arm64.deb ...
Unpacking openssh-client (1:10.0p1-7) ...
Selecting previously unselected package libngtcp2-16:arm64.
Preparing to unpack .../05-libngtcp2-16_1.11.0-1_arm64.deb ...
Unpacking libngtcp2-16:arm64 (1.11.0-1) ...
Selecting previously unselected package libngtcp2-crypto-gnutls8:arm64.
Preparing to unpack .../06-libngtcp2-crypto-gnutls8_1.11.0-1_arm64.deb ...
Unpacking libngtcp2-crypto-gnutls8:arm64 (1.11.0-1) ...
Selecting previously unselected package libcurl3t64-gnutls:arm64.
Preparing to unpack .../07-libcurl3t64-gnutls_8.14.1-2_arm64.deb ...
Unpacking libcurl3t64-gnutls:arm64 (8.14.1-2) ...
Selecting previously unselected package liberror-perl.
Preparing to unpack .../08-liberror-perl_0.17030-1_all.deb ...
Unpacking liberror-perl (0.17030-1) ...
Selecting previously unselected package git-man.
Preparing to unpack .../09-git-man_1%3a2.47.2-0.2_all.deb ...
Unpacking git-man (1:2.47.2-0.2) ...
Selecting previously unselected package git.
Preparing to unpack .../10-git_1%3a2.47.2-0.2_arm64.deb ...
Unpacking git (1:2.47.2-0.2) ...
Selecting previously unselected package zlib1g-dev:arm64.
Preparing to unpack .../11-zlib1g-dev_1%3a1.3.dfsg+really1.3.1-1+b1_arm64.deb ...
Unpacking zlib1g-dev:arm64 (1:1.3.dfsg+really1.3.1-1+b1) ...
Selecting previously unselected package libprotobuf32t64:arm64.
Preparing to unpack .../12-libprotobuf32t64_3.21.12-11_arm64.deb ...
Unpacking libprotobuf32t64:arm64 (3.21.12-11) ...
Selecting previously unselected package libprotobuf-lite32t64:arm64.
Preparing to unpack .../13-libprotobuf-lite32t64_3.21.12-11_arm64.deb ...
Unpacking libprotobuf-lite32t64:arm64 (3.21.12-11) ...
Selecting previously unselected package libprotobuf-dev:arm64.
Preparing to unpack .../14-libprotobuf-dev_3.21.12-11_arm64.deb ...
Unpacking libprotobuf-dev:arm64 (3.21.12-11) ...
Selecting previously unselected package libprotoc32t64:arm64.
Preparing to unpack .../15-libprotoc32t64_3.21.12-11_arm64.deb ...
Unpacking libprotoc32t64:arm64 (3.21.12-11) ...
Selecting previously unselected package libxau6:arm64.
Preparing to unpack .../16-libxau6_1%3a1.0.11-1_arm64.deb ...
Unpacking libxau6:arm64 (1:1.0.11-1) ...
Selecting previously unselected package libxdmcp6:arm64.
Preparing to unpack .../17-libxdmcp6_1%3a1.1.5-1_arm64.deb ...
Unpacking libxdmcp6:arm64 (1:1.1.5-1) ...
Selecting previously unselected package libxcb1:arm64.
Preparing to unpack .../18-libxcb1_1.17.0-2+b1_arm64.deb ...
Unpacking libxcb1:arm64 (1.17.0-2+b1) ...
Selecting previously unselected package libx11-data.
Preparing to unpack .../19-libx11-data_2%3a1.8.12-1_all.deb ...
Unpacking libx11-data (2:1.8.12-1) ...
Selecting previously unselected package libx11-6:arm64.
Preparing to unpack .../20-libx11-6_2%3a1.8.12-1_arm64.deb ...
Unpacking libx11-6:arm64 (2:1.8.12-1) ...
Selecting previously unselected package libxext6:arm64.
Preparing to unpack .../21-libxext6_2%3a1.3.4-1+b3_arm64.deb ...
Unpacking libxext6:arm64 (2:1.3.4-1+b3) ...
Selecting previously unselected package libxmuu1:arm64.
Preparing to unpack .../22-libxmuu1_2%3a1.1.3-3+b4_arm64.deb ...
Unpacking libxmuu1:arm64 (2:1.1.3-3+b4) ...
Selecting previously unselected package protobuf-compiler.
Preparing to unpack .../23-protobuf-compiler_3.21.12-11_arm64.deb ...
Unpacking protobuf-compiler (3.21.12-11) ...
Selecting previously unselected package xauth.
Preparing to unpack .../24-xauth_1%3a1.1.2-1.1_arm64.deb ...
Unpacking xauth (1:1.1.2-1.1) ...
Setting up libprotobuf-lite32t64:arm64 (3.21.12-11) ...
Setting up libprotobuf32t64:arm64 (3.21.12-11) ...
Setting up libxau6:arm64 (1:1.0.11-1) ...
Setting up libxdmcp6:arm64 (1:1.1.5-1) ...
Setting up libxcb1:arm64 (1.17.0-2+b1) ...
Setting up libcbor0.10:arm64 (0.10.2-2) ...
Setting up libedit2:arm64 (3.1-20250104-1) ...
Setting up less (668-1) ...
Setting up liberror-perl (0.17030-1) ...
Setting up libx11-data (2:1.8.12-1) ...
Setting up zlib1g-dev:arm64 (1:1.3.dfsg+really1.3.1-1+b1) ...
Setting up git-man (1:2.47.2-0.2) ...
Setting up libx11-6:arm64 (2:1.8.12-1) ...
Setting up libngtcp2-16:arm64 (1.11.0-1) ...
Setting up libprotoc32t64:arm64 (3.21.12-11) ...
Setting up libfido2-1:arm64 (1.15.0-1+b1) ...
Setting up libxmuu1:arm64 (2:1.1.3-3+b4) ...
Setting up libngtcp2-crypto-gnutls8:arm64 (1.11.0-1) ...
Setting up protobuf-compiler (3.21.12-11) ...
Setting up openssh-client (1:10.0p1-7) ...
Setting up libcurl3t64-gnutls:arm64 (8.14.1-2) ...
Setting up libxext6:arm64 (2:1.3.4-1+b3) ...
Setting up libprotobuf-dev:arm64 (3.21.12-11) ...
Setting up git (1:2.47.2-0.2) ...
Setting up xauth (1:1.1.2-1.1) ...
Processing triggers for libc-bin (2.41-12) ...
 ---> Removed intermediate container e064459026f3
 ---> 8e33234e52ee
Step 3/14 : COPY --from=composer/composer:latest-bin /composer /usr/bin/composer
latest-bin: Pulling from composer/composer
03385178446b: Already exists 
Digest: sha256:abd63db39eb2565a5af2bece27befd9bdf1041938b5caf200852f3458b8b3592
Status: Downloaded newer image for composer/composer:latest-bin
 ---> a35f53fe2e62
Step 4/14 : COPY . /app
 ---> 0ed90dcf92bf
Step 5/14 : WORKDIR /app
 ---> Running in a4f03e3d927a
 ---> Removed intermediate container a4f03e3d927a
 ---> 3c2512e8a3bc
Step 6/14 : RUN composer require google/protobuf     && protoc --php_out=proto/php/ --proto_path=proto/prototypes/ $(find proto/prototypes/ -type f)
 ---> Running in 1e036267bb0b
./composer.json has been created
Running composer update google/protobuf
Loading composer repositories with package information
Updating dependencies
Lock file operations: 1 install, 0 updates, 0 removals
  - Locking google/protobuf (v4.32.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
    Failed to download google/protobuf from dist: The zip extension and unzip/7z commands are both missing, skipping.
Your command-line PHP is using multiple ini files. Run `php --ini` to show them.
    Now trying to download from source
  - Syncing google/protobuf (v4.32.0) into cache
  - Installing google/protobuf (v4.32.0): Cloning 9a9a92ecbe from cache
1 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
No security vulnerability advisories found.
Using version ^4.32 for google/protobuf
 ---> Removed intermediate container 1e036267bb0b
 ---> d061aa52d405
Step 7/14 : FROM php:apache
 ---> 40286d9b5483
Step 8/14 : RUN a2enmod rewrite
 ---> Running in 50ce7f5f7587
Enabling module rewrite.
To activate the new configuration, you need to run:
  service apache2 restart
 ---> Removed intermediate container 50ce7f5f7587
 ---> 8c2bfe3d5735
Step 9/14 : COPY --from=builder /app /var/www/html/
 ---> 402ddbc3b616
Step 10/14 : RUN sed -ri -e 'N;N;N;s/(<Directory \/var\/www\/>\n)(.*\n)(.*)AllowOverride None/\1\2\3AllowOverride All/;p;d;' /etc/apache2/apache2.conf
 ---> Running in a76c84848c67
 ---> Removed intermediate container a76c84848c67
 ---> ad8c9bd235b4
Step 11/14 : ARG VERSION
 ---> Running in ead8be5df6e2
 ---> Removed intermediate container ead8be5df6e2
 ---> b1ce341891f8
Step 12/14 : ENV VERSION=$VERSION
 ---> Running in 0b9712509462
 ---> Removed intermediate container 0b9712509462
 ---> 4d737a58cd20
Step 13/14 : EXPOSE 80
 ---> Running in 015e8ce9554c
 ---> Removed intermediate container 015e8ce9554c
 ---> 988ba8b290c6
Step 14/14 : ENTRYPOINT ["apachectl", "-D", "FOREGROUND"]
 ---> Running in 5893cacae960
 ---> Removed intermediate container 5893cacae960
 ---> 382e8e3dba4b
Successfully built 382e8e3dba4b
Successfully tagged youtube_operational_api:1ef5021
docker image ls
Output:
REPOSITORY                TAG          IMAGE ID       CREATED          SIZE
youtube_operational_api   1ef5021      382e8e3dba4b   21 seconds ago   591MB
<none>                    <none>       d061aa52d405   23 seconds ago   684MB
php                       apache       40286d9b5483   2 days ago       525MB
composer/composer         latest-bin   ba42955de964   9 days ago       3.12MB

How to update multiple docker contains at a given point in time?

docker update
Output:
"docker update" requires at least 1 argument.
See 'docker update --help'.

Usage:  docker update [OPTIONS] CONTAINER [CONTAINER...]

Update configuration of one or more containers
docker update .
you must provide one or more flags when using this command
docker update --help
Output:

Usage:  docker update [OPTIONS] CONTAINER [CONTAINER...]

Update configuration of one or more containers

Aliases:
  docker container update, docker update

Options:
      --blkio-weight uint16        Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0)
      --cpu-period int             Limit CPU CFS (Completely Fair Scheduler) period
      --cpu-quota int              Limit CPU CFS (Completely Fair Scheduler) quota
      --cpu-rt-period int          Limit the CPU real-time period in microseconds
      --cpu-rt-runtime int         Limit the CPU real-time runtime in microseconds
  -c, --cpu-shares int             CPU shares (relative weight)
      --cpus decimal               Number of CPUs
      --cpuset-cpus string         CPUs in which to allow execution (0-3, 0,1)
      --cpuset-mems string         MEMs in which to allow execution (0-3, 0,1)
  -m, --memory bytes               Memory limit
      --memory-reservation bytes   Memory soft limit
      --memory-swap bytes          Swap limit equal to memory plus swap: -1 to enable unlimited swap
      --pids-limit int             Tune container pids limit (set -1 for unlimited)
      --restart string             Restart policy to apply when a container exits
docker build --rm .
Output:
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
            Install the buildx component to build images with BuildKit:
            https://docs.docker.com/go/buildx/

Sending build context to Docker daemon  65.42MB
Step 1/14 : FROM php:apache AS builder
apache: Pulling from library/php
9a6263cdeaa5: Already exists 
ef1ee6d029e6: Already exists 
a472e922e809: Already exists 
48fe053e93cb: Already exists 
fc43ae40cfaf: Already exists 
68c0c909ee69: Already exists 
a5af3640212f: Already exists 
d1daf55e39b8: Already exists 
0aa06473af9f: Already exists 
b009c6bfbc2e: Already exists 
d7b879e84d79: Already exists 
ce23f515033b: Already exists 
7b848ff217f1: Already exists 
a341f2f20c41: Already exists 
4f4fb700ef54: Already exists 
Digest: sha256:fc535e6bf80041c11d99380d2a5a3ff4ceaafac7efbd4f8d53c876ca4751c7c2
Status: Downloaded newer image for php:apache
 ---> 40286d9b5483
Step 2/14 : RUN apt-get update && apt-get install -y git protobuf-compiler
 ---> Running in 2d755eb6d197
Hit:1 http://deb.debian.org/debian trixie InRelease
Get:2 http://deb.debian.org/debian trixie-updates InRelease [47.1 kB]
Get:3 http://deb.debian.org/debian-security trixie-security InRelease [43.4 kB]
Get:4 http://deb.debian.org/debian trixie/main arm64 Packages [9604 kB]
Get:5 http://deb.debian.org/debian trixie-updates/main arm64 Packages [2432 B]
Get:6 http://deb.debian.org/debian-security trixie-security/main arm64 Packages [33.6 kB]
Fetched 9730 kB in 1s (10.2 MB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
  git-man less libcbor0.10 libcurl3t64-gnutls libedit2 liberror-perl
  libfido2-1 libngtcp2-16 libngtcp2-crypto-gnutls8 libprotobuf-dev
  libprotobuf-lite32t64 libprotobuf32t64 libprotoc32t64 libx11-6 libx11-data
  libxau6 libxcb1 libxdmcp6 libxext6 libxmuu1 openssh-client xauth zlib1g-dev
Suggested packages:
  gettext-base git-doc git-email git-gui gitk gitweb git-cvs git-mediawiki
  git-svn keychain libpam-ssh monkeysphere ssh-askpass protobuf-mode-el
The following NEW packages will be installed:
  git git-man less libcbor0.10 libcurl3t64-gnutls libedit2 liberror-perl
  libfido2-1 libngtcp2-16 libngtcp2-crypto-gnutls8 libprotobuf-dev
  libprotobuf-lite32t64 libprotobuf32t64 libprotoc32t64 libx11-6 libx11-data
  libxau6 libxcb1 libxdmcp6 libxext6 libxmuu1 openssh-client protobuf-compiler
  xauth zlib1g-dev
0 upgraded, 25 newly installed, 0 to remove and 1 not upgraded.
Need to get 18.3 MB of archives.
After this operation, 87.4 MB of additional disk space will be used.
Get:1 http://deb.debian.org/debian trixie/main arm64 less arm64 668-1 [156 kB]
Get:2 http://deb.debian.org/debian trixie/main arm64 libedit2 arm64 3.1-20250104-1 [89.3 kB]
Get:3 http://deb.debian.org/debian trixie/main arm64 libcbor0.10 arm64 0.10.2-2 [27.4 kB]
Get:4 http://deb.debian.org/debian trixie/main arm64 libfido2-1 arm64 1.15.0-1+b1 [74.3 kB]
Get:5 http://deb.debian.org/debian trixie/main arm64 openssh-client arm64 1:10.0p1-7 [925 kB]
Get:6 http://deb.debian.org/debian trixie/main arm64 libngtcp2-16 arm64 1.11.0-1 [121 kB]
Get:7 http://deb.debian.org/debian trixie/main arm64 libngtcp2-crypto-gnutls8 arm64 1.11.0-1 [28.2 kB]
Get:8 http://deb.debian.org/debian trixie/main arm64 libcurl3t64-gnutls arm64 8.14.1-2 [353 kB]
Get:9 http://deb.debian.org/debian trixie/main arm64 liberror-perl all 0.17030-1 [26.9 kB]
Get:10 http://deb.debian.org/debian trixie/main arm64 git-man all 1:2.47.2-0.2 [2205 kB]
Get:11 http://deb.debian.org/debian trixie/main arm64 git arm64 1:2.47.2-0.2 [8724 kB]
Get:12 http://deb.debian.org/debian trixie/main arm64 zlib1g-dev arm64 1:1.3.dfsg+really1.3.1-1+b1 [917 kB]
Get:13 http://deb.debian.org/debian trixie/main arm64 libprotobuf32t64 arm64 3.21.12-11 [858 kB]
Get:14 http://deb.debian.org/debian trixie/main arm64 libprotobuf-lite32t64 arm64 3.21.12-11 [250 kB]
Get:15 http://deb.debian.org/debian trixie/main arm64 libprotobuf-dev arm64 3.21.12-11 [1261 kB]
Get:16 http://deb.debian.org/debian trixie/main arm64 libprotoc32t64 arm64 3.21.12-11 [790 kB]
Get:17 http://deb.debian.org/debian trixie/main arm64 libxau6 arm64 1:1.0.11-1 [20.6 kB]
Get:18 http://deb.debian.org/debian trixie/main arm64 libxdmcp6 arm64 1:1.1.5-1 [27.8 kB]
Get:19 http://deb.debian.org/debian trixie/main arm64 libxcb1 arm64 1.17.0-2+b1 [143 kB]
Get:20 http://deb.debian.org/debian trixie/main arm64 libx11-data all 2:1.8.12-1 [343 kB]
Get:21 http://deb.debian.org/debian trixie/main arm64 libx11-6 arm64 2:1.8.12-1 [795 kB]
Get:22 http://deb.debian.org/debian trixie/main arm64 libxext6 arm64 2:1.3.4-1+b3 [49.2 kB]
Get:23 http://deb.debian.org/debian trixie/main arm64 libxmuu1 arm64 2:1.1.3-3+b4 [22.0 kB]
Get:24 http://deb.debian.org/debian trixie/main arm64 protobuf-compiler arm64 3.21.12-11 [84.7 kB]
Get:25 http://deb.debian.org/debian trixie/main arm64 xauth arm64 1:1.1.2-1.1 [35.4 kB]
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (This frontend requires a controlling tty.)
debconf: falling back to frontend: Teletype
debconf: unable to initialize frontend: Teletype
debconf: (This frontend requires a controlling tty.)
debconf: falling back to frontend: Noninteractive
Fetched 18.3 MB in 0s (49.0 MB/s)
Selecting previously unselected package less.
(Reading database ... 15697 files and directories currently installed.)
Preparing to unpack .../00-less_668-1_arm64.deb ...
Unpacking less (668-1) ...
Selecting previously unselected package libedit2:arm64.
Preparing to unpack .../01-libedit2_3.1-20250104-1_arm64.deb ...
Unpacking libedit2:arm64 (3.1-20250104-1) ...
Selecting previously unselected package libcbor0.10:arm64.
Preparing to unpack .../02-libcbor0.10_0.10.2-2_arm64.deb ...
Unpacking libcbor0.10:arm64 (0.10.2-2) ...
Selecting previously unselected package libfido2-1:arm64.
Preparing to unpack .../03-libfido2-1_1.15.0-1+b1_arm64.deb ...
Unpacking libfido2-1:arm64 (1.15.0-1+b1) ...
Selecting previously unselected package openssh-client.
Preparing to unpack .../04-openssh-client_1%3a10.0p1-7_arm64.deb ...
Unpacking openssh-client (1:10.0p1-7) ...
Selecting previously unselected package libngtcp2-16:arm64.
Preparing to unpack .../05-libngtcp2-16_1.11.0-1_arm64.deb ...
Unpacking libngtcp2-16:arm64 (1.11.0-1) ...
Selecting previously unselected package libngtcp2-crypto-gnutls8:arm64.
Preparing to unpack .../06-libngtcp2-crypto-gnutls8_1.11.0-1_arm64.deb ...
Unpacking libngtcp2-crypto-gnutls8:arm64 (1.11.0-1) ...
Selecting previously unselected package libcurl3t64-gnutls:arm64.
Preparing to unpack .../07-libcurl3t64-gnutls_8.14.1-2_arm64.deb ...
Unpacking libcurl3t64-gnutls:arm64 (8.14.1-2) ...
Selecting previously unselected package liberror-perl.
Preparing to unpack .../08-liberror-perl_0.17030-1_all.deb ...
Unpacking liberror-perl (0.17030-1) ...
Selecting previously unselected package git-man.
Preparing to unpack .../09-git-man_1%3a2.47.2-0.2_all.deb ...
Unpacking git-man (1:2.47.2-0.2) ...
Selecting previously unselected package git.
Preparing to unpack .../10-git_1%3a2.47.2-0.2_arm64.deb ...
Unpacking git (1:2.47.2-0.2) ...
Selecting previously unselected package zlib1g-dev:arm64.
Preparing to unpack .../11-zlib1g-dev_1%3a1.3.dfsg+really1.3.1-1+b1_arm64.deb ...
Unpacking zlib1g-dev:arm64 (1:1.3.dfsg+really1.3.1-1+b1) ...
Selecting previously unselected package libprotobuf32t64:arm64.
Preparing to unpack .../12-libprotobuf32t64_3.21.12-11_arm64.deb ...
Unpacking libprotobuf32t64:arm64 (3.21.12-11) ...
Selecting previously unselected package libprotobuf-lite32t64:arm64.
Preparing to unpack .../13-libprotobuf-lite32t64_3.21.12-11_arm64.deb ...
Unpacking libprotobuf-lite32t64:arm64 (3.21.12-11) ...
Selecting previously unselected package libprotobuf-dev:arm64.
Preparing to unpack .../14-libprotobuf-dev_3.21.12-11_arm64.deb ...
Unpacking libprotobuf-dev:arm64 (3.21.12-11) ...
Selecting previously unselected package libprotoc32t64:arm64.
Preparing to unpack .../15-libprotoc32t64_3.21.12-11_arm64.deb ...
Unpacking libprotoc32t64:arm64 (3.21.12-11) ...
Selecting previously unselected package libxau6:arm64.
Preparing to unpack .../16-libxau6_1%3a1.0.11-1_arm64.deb ...
Unpacking libxau6:arm64 (1:1.0.11-1) ...
Selecting previously unselected package libxdmcp6:arm64.
Preparing to unpack .../17-libxdmcp6_1%3a1.1.5-1_arm64.deb ...
Unpacking libxdmcp6:arm64 (1:1.1.5-1) ...
Selecting previously unselected package libxcb1:arm64.
Preparing to unpack .../18-libxcb1_1.17.0-2+b1_arm64.deb ...
Unpacking libxcb1:arm64 (1.17.0-2+b1) ...
Selecting previously unselected package libx11-data.
Preparing to unpack .../19-libx11-data_2%3a1.8.12-1_all.deb ...
Unpacking libx11-data (2:1.8.12-1) ...
Selecting previously unselected package libx11-6:arm64.
Preparing to unpack .../20-libx11-6_2%3a1.8.12-1_arm64.deb ...
Unpacking libx11-6:arm64 (2:1.8.12-1) ...
Selecting previously unselected package libxext6:arm64.
Preparing to unpack .../21-libxext6_2%3a1.3.4-1+b3_arm64.deb ...
Unpacking libxext6:arm64 (2:1.3.4-1+b3) ...
Selecting previously unselected package libxmuu1:arm64.
Preparing to unpack .../22-libxmuu1_2%3a1.1.3-3+b4_arm64.deb ...
Unpacking libxmuu1:arm64 (2:1.1.3-3+b4) ...
Selecting previously unselected package protobuf-compiler.
Preparing to unpack .../23-protobuf-compiler_3.21.12-11_arm64.deb ...
Unpacking protobuf-compiler (3.21.12-11) ...
Selecting previously unselected package xauth.
Preparing to unpack .../24-xauth_1%3a1.1.2-1.1_arm64.deb ...
Unpacking xauth (1:1.1.2-1.1) ...
Setting up libprotobuf-lite32t64:arm64 (3.21.12-11) ...
Setting up libprotobuf32t64:arm64 (3.21.12-11) ...
Setting up libxau6:arm64 (1:1.0.11-1) ...
Setting up libxdmcp6:arm64 (1:1.1.5-1) ...
Setting up libxcb1:arm64 (1.17.0-2+b1) ...
Setting up libcbor0.10:arm64 (0.10.2-2) ...
Setting up libedit2:arm64 (3.1-20250104-1) ...
Setting up less (668-1) ...
Setting up liberror-perl (0.17030-1) ...
Setting up libx11-data (2:1.8.12-1) ...
Setting up zlib1g-dev:arm64 (1:1.3.dfsg+really1.3.1-1+b1) ...
Setting up git-man (1:2.47.2-0.2) ...
Setting up libx11-6:arm64 (2:1.8.12-1) ...
Setting up libngtcp2-16:arm64 (1.11.0-1) ...
Setting up libprotoc32t64:arm64 (3.21.12-11) ...
Setting up libfido2-1:arm64 (1.15.0-1+b1) ...
Setting up libxmuu1:arm64 (2:1.1.3-3+b4) ...
Setting up libngtcp2-crypto-gnutls8:arm64 (1.11.0-1) ...
Setting up protobuf-compiler (3.21.12-11) ...
Setting up openssh-client (1:10.0p1-7) ...
Setting up libcurl3t64-gnutls:arm64 (8.14.1-2) ...
Setting up libxext6:arm64 (2:1.3.4-1+b3) ...
Setting up libprotobuf-dev:arm64 (3.21.12-11) ...
Setting up git (1:2.47.2-0.2) ...
Setting up xauth (1:1.1.2-1.1) ...
Processing triggers for libc-bin (2.41-12) ...
 ---> Removed intermediate container 2d755eb6d197
 ---> 48a38b321576
Step 3/14 : COPY --from=composer/composer:latest-bin /composer /usr/bin/composer
latest-bin: Pulling from composer/composer
03385178446b: Already exists 
Digest: sha256:abd63db39eb2565a5af2bece27befd9bdf1041938b5caf200852f3458b8b3592
Status: Downloaded newer image for composer/composer:latest-bin
 ---> 5807d22dfebf
Step 4/14 : COPY . /app
 ---> ddce30a54855
Step 5/14 : WORKDIR /app
 ---> Running in ff370decff36
 ---> Removed intermediate container ff370decff36
 ---> 6bc5d846053a
Step 6/14 : RUN composer require google/protobuf     && protoc --php_out=proto/php/ --proto_path=proto/prototypes/ $(find proto/prototypes/ -type f)
 ---> Running in 035394b8cd17
./composer.json has been created
Running composer update google/protobuf
Loading composer repositories with package information
Updating dependencies
Lock file operations: 1 install, 0 updates, 0 removals
  - Locking google/protobuf (v4.32.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
    Failed to download google/protobuf from dist: The zip extension and unzip/7z commands are both missing, skipping.
Your command-line PHP is using multiple ini files. Run `php --ini` to show them.
    Now trying to download from source
  - Syncing google/protobuf (v4.32.0) into cache
  - Installing google/protobuf (v4.32.0): Cloning 9a9a92ecbe from cache
1 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
No security vulnerability advisories found.
Using version ^4.32 for google/protobuf
 ---> Removed intermediate container 035394b8cd17
 ---> 825962e7c370
Step 7/14 : FROM php:apache
 ---> 40286d9b5483
Step 8/14 : RUN a2enmod rewrite
 ---> Running in d358242eac79
Enabling module rewrite.
To activate the new configuration, you need to run:
  service apache2 restart
 ---> Removed intermediate container d358242eac79
 ---> 84e028b3de19
Step 9/14 : COPY --from=builder /app /var/www/html/
 ---> e44f8fc475bd
Step 10/14 : RUN sed -ri -e 'N;N;N;s/(<Directory \/var\/www\/>\n)(.*\n)(.*)AllowOverride None/\1\2\3AllowOverride All/;p;d;' /etc/apache2/apache2.conf
 ---> Running in 9dbb6c54c22d
 ---> Removed intermediate container 9dbb6c54c22d
 ---> 60eaf6915e1c
Step 11/14 : ARG VERSION
 ---> Running in 0b420faff8bb
 ---> Removed intermediate container 0b420faff8bb
 ---> 327896ad8953
Step 12/14 : ENV VERSION=$VERSION
 ---> Running in c7cd5e4bf10f
 ---> Removed intermediate container c7cd5e4bf10f
 ---> 6e738303f9fb
Step 13/14 : EXPOSE 80
 ---> Running in 669583e11fa3
 ---> Removed intermediate container 669583e11fa3
 ---> a69700db23c9
Step 14/14 : ENTRYPOINT ["apachectl", "-D", "FOREGROUND"]
 ---> Running in 4669b657be59
 ---> Removed intermediate container 4669b657be59
 ---> 7b64d83eba31
Successfully built 7b64d83eba31
docker image ls
Output:
REPOSITORY          TAG          IMAGE ID       CREATED         SIZE
<none>              <none>       7b64d83eba31   2 seconds ago   591MB
<none>              <none>       825962e7c370   4 seconds ago   684MB
php                 apache       40286d9b5483   2 days ago      525MB
composer/composer   latest-bin   ba42955de964   9 days ago      3.12MB

If properly managed in theory php is stored and YouTube operational API is a very light overlay over it, so size are absolute ones, but should not be actual ones, so remove dependencies should not be a matter.

It seems like a bad practice to reach a point where want to update all containers.

Maybe at a point in time want to update a given container and in such case a syntax like docker update youtube_operational NEW_COMMIT_HASH would be nice and should quite easily be doable, otherwise cd to the given folder and git update NEW_COMMIT_HASH should be fine.

DuckDuckGo and Google search docker build given git repository.

docker run https://github.com/Benjamin-Loison/YouTube-operational-API
Output:
docker: invalid reference format: repository name (/github.com/Benjamin-Loison/YouTube-operational-API) must be lowercase.
See 'docker run --help'.
docker run --help
Output:

Usage:  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Create and run a new container from an image

Aliases:
  docker container run, docker run

Options:
      --add-host list                    Add a custom host-to-IP mapping (host:ip)
      --annotation map                   Add an annotation to the container (passed through to the OCI runtime) (default map[])
  -a, --attach list                      Attach to STDIN, STDOUT or STDERR
      --blkio-weight uint16              Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0)
      --blkio-weight-device list         Block IO weight (relative device weight) (default [])
      --cap-add list                     Add Linux capabilities
      --cap-drop list                    Drop Linux capabilities
      --cgroup-parent string             Optional parent cgroup for the container
      --cgroupns string                  Cgroup namespace to use (host|private)
                                         'host':    Run the container in the Docker host's cgroup namespace
                                         'private': Run the container in its own private cgroup namespace
                                         '':        Use the cgroup namespace as configured by the
                                                    default-cgroupns-mode option on the daemon (default)
      --cidfile string                   Write the container ID to the file
      --cpu-period int                   Limit CPU CFS (Completely Fair Scheduler) period
      --cpu-quota int                    Limit CPU CFS (Completely Fair Scheduler) quota
      --cpu-rt-period int                Limit CPU real-time period in microseconds
      --cpu-rt-runtime int               Limit CPU real-time runtime in microseconds
  -c, --cpu-shares int                   CPU shares (relative weight)
      --cpus decimal                     Number of CPUs
      --cpuset-cpus string               CPUs in which to allow execution (0-3, 0,1)
      --cpuset-mems string               MEMs in which to allow execution (0-3, 0,1)
  -d, --detach                           Run container in background and print container ID
      --detach-keys string               Override the key sequence for detaching a container
      --device list                      Add a host device to the container
      --device-cgroup-rule list          Add a rule to the cgroup allowed devices list
      --device-read-bps list             Limit read rate (bytes per second) from a device (default [])
      --device-read-iops list            Limit read rate (IO per second) from a device (default [])
      --device-write-bps list            Limit write rate (bytes per second) to a device (default [])
      --device-write-iops list           Limit write rate (IO per second) to a device (default [])
      --disable-content-trust            Skip image verification (default true)
      --dns list                         Set custom DNS servers
      --dns-option list                  Set DNS options
      --dns-search list                  Set custom DNS search domains
      --domainname string                Container NIS domain name
      --entrypoint string                Overwrite the default ENTRYPOINT of the image
  -e, --env list                         Set environment variables
      --env-file list                    Read in a file of environment variables
      --expose list                      Expose a port or a range of ports
      --gpus gpu-request                 GPU devices to add to the container ('all' to pass all GPUs)
      --group-add list                   Add additional groups to join
      --health-cmd string                Command to run to check health
      --health-interval duration         Time between running the check (ms|s|m|h) (default 0s)
      --health-retries int               Consecutive failures needed to report unhealthy
      --health-start-interval duration   Time between running the check during the start period (ms|s|m|h) (default 0s)
      --health-start-period duration     Start period for the container to initialize before starting health-retries countdown
                                         (ms|s|m|h) (default 0s)
      --health-timeout duration          Maximum time to allow one check to run (ms|s|m|h) (default 0s)
      --help                             Print usage
  -h, --hostname string                  Container host name
      --init                             Run an init inside the container that forwards signals and reaps processes
  -i, --interactive                      Keep STDIN open even if not attached
      --ip string                        IPv4 address (e.g., 172.30.100.104)
      --ip6 string                       IPv6 address (e.g., 2001:db8::33)
      --ipc string                       IPC mode to use
      --isolation string                 Container isolation technology
      --kernel-memory bytes              Kernel memory limit
  -l, --label list                       Set meta data on a container
      --label-file list                  Read in a line delimited file of labels
      --link list                        Add link to another container
      --link-local-ip list               Container IPv4/IPv6 link-local addresses
      --log-driver string                Logging driver for the container
      --log-opt list                     Log driver options
      --mac-address string               Container MAC address (e.g., 92:d0:c6:0a:29:33)
  -m, --memory bytes                     Memory limit
      --memory-reservation bytes         Memory soft limit
      --memory-swap bytes                Swap limit equal to memory plus swap: '-1' to enable unlimited swap
      --memory-swappiness int            Tune container memory swappiness (0 to 100) (default -1)
      --mount mount                      Attach a filesystem mount to the container
      --name string                      Assign a name to the container
      --network network                  Connect a container to a network
      --network-alias list               Add network-scoped alias for the container
      --no-healthcheck                   Disable any container-specified HEALTHCHECK
      --oom-kill-disable                 Disable OOM Killer
      --oom-score-adj int                Tune host's OOM preferences (-1000 to 1000)
      --pid string                       PID namespace to use
      --pids-limit int                   Tune container pids limit (set -1 for unlimited)
      --platform string                  Set platform if server is multi-platform capable
      --privileged                       Give extended privileges to this container
  -p, --publish list                     Publish a container's port(s) to the host
  -P, --publish-all                      Publish all exposed ports to random ports
      --pull string                      Pull image before running ("always", "missing", "never") (default "missing")
  -q, --quiet                            Suppress the pull output
      --read-only                        Mount the container's root filesystem as read only
      --restart string                   Restart policy to apply when a container exits (default "no")
      --rm                               Automatically remove the container and its associated anonymous volumes when it exits
      --runtime string                   Runtime to use for this container
      --security-opt list                Security Options
      --shm-size bytes                   Size of /dev/shm
      --sig-proxy                        Proxy received signals to the process (default true)
      --stop-signal string               Signal to stop the container
      --stop-timeout int                 Timeout (in seconds) to stop a container
      --storage-opt list                 Storage driver options for the container
      --sysctl map                       Sysctl options (default map[])
      --tmpfs list                       Mount a tmpfs directory
  -t, --tty                              Allocate a pseudo-TTY
      --ulimit ulimit                    Ulimit options (default [])
  -u, --user string                      Username or UID (format: <name|uid>[:<group|gid>])
      --userns string                    User namespace to use
      --uts string                       UTS namespace to use
  -v, --volume list                      Bind mount a volume
      --volume-driver string             Optional volume driver for the container
      --volumes-from list                Mount volumes from the specified container(s)
  -w, --workdir string                   Working directory inside the container

Google search docker run Git repository.

docker build https://github.com/Benjamin-Loison/YouTube-operational-API
Output:
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
            Install the buildx component to build images with BuildKit:
            https://docs.docker.com/go/buildx/

Downloading build context from remote url: https://github.com/Benjamin-Loison/YouTube-operational-API  338.2kB
Sending build context to Docker daemon    340kB
Error response from daemon: failed to parse Dockerfile: dockerfile line greater than max allowed size of 65535

Same if executed again.

DuckDuckGo and Google search "dockerfile line greater than max allowed size of 65535".

./buildx-v0.27.0.linux-arm64 run
Output:
Extended build capabilities with BuildKit

Usage:
  buildx-v0.27.0.linux-arm64
  buildx-v0.27.0.linux-arm64 [command]

Available Commands:
  bake        Build from a file
  build       Start a build
  create      Create a new builder instance
  dial-stdio  Proxy current stdio streams to builder instance
  du          Disk usage
  help        Help about any command
  history     Commands to work on build records
  imagetools  Commands to work on images in registry
  inspect     Inspect current builder instance
  ls          List builder instances
  prune       Remove build cache
  rm          Remove one or more builder instances
  stop        Stop builder instance
  use         Set the current builder instance
  version     Show buildx version information

Flags:
      --builder string   Override the configured builder instance
  -D, --debug            Enable debug logging
  -h, --help             help for buildx-v0.27.0.linux-arm64

Use "buildx-v0.27.0.linux-arm64 [command] --help" for more information about a command.

Experimental commands and flags are hidden. Set BUILDX_EXPERIMENTAL=1 to show them.
ERROR: unknown command: "run"
./buildx-v0.27.0.linux-arm64 build https://github.com/Benjamin-Loison/YouTube-operational-API

output.txt

buildx-v0.27.0.linux-arm64 build github.com/Benjamin-Loison/YouTube-operational-API
Output:
[+] Building 12.7s (14/14) FINISHED                                                                                         docker:default
 => [internal] load git source github.com/Benjamin-Loison/YouTube-operational-API                                                     1.6s
 => [internal] load metadata for docker.io/composer/composer:latest-bin                                                               1.3s
 => [internal] load metadata for docker.io/library/php:apache                                                                         1.4s
 => [stage-0 1/9] FROM docker.io/library/php:apache@sha256:fc535e6bf80041c11d99380d2a5a3ff4ceaafac7efbd4f8d53c876ca4751c7c2           0.0s 
 => => resolve docker.io/library/php:apache@sha256:fc535e6bf80041c11d99380d2a5a3ff4ceaafac7efbd4f8d53c876ca4751c7c2                   0.0s 
 => CACHED FROM docker.io/composer/composer:latest-bin@sha256:abd63db39eb2565a5af2bece27befd9bdf1041938b5caf200852f3458b8b3592        0.0s 
 => => resolve docker.io/composer/composer:latest-bin@sha256:abd63db39eb2565a5af2bece27befd9bdf1041938b5caf200852f3458b8b3592         0.0s 
 => CACHED [stage-0 2/9] RUN a2enmod rewrite                                                                                          0.0s
 => [stage-0 3/9] COPY . /var/www/html/                                                                                               0.0s
 => [stage-0 4/9] RUN sed -ri -e 'N;N;N;s/(<Directory \/var\/www\/>\n)(.*\n)(.*)AllowOverride None/\1\2\3AllowOverride All/;p;d;' /e  0.2s
 => [stage-0 5/9] COPY --from=composer/composer:latest-bin /composer /usr/bin/composer                                                0.1s
 => [stage-0 6/9] RUN apt update                                                                                                      2.2s
 => [stage-0 7/9] RUN apt install -y git protobuf-compiler                                                                            5.2s 
 => [stage-0 8/9] RUN composer require google/protobuf                                                                                1.3s 
 => [stage-0 9/9] RUN protoc --php_out=proto/php/ --proto_path=proto/prototypes/ $(find proto/prototypes/ -type f)                    0.2s 
 => exporting to image                                                                                                                0.3s 
 => => exporting layers                                                                                                               0.3s 
 => => writing image sha256:152d1c5b7f3b9e579139d0d56685c0fc1e52eb94bb8e2f053c7882e64edfe6bb                                          0.0s 
                                                                                                                                           
 1 warning found (use docker --debug to expand):                                                                                           
 - JSONArgsRecommended: JSON arguments recommended for CMD to prevent unintended behavior related to OS signals (line 17)

Source: the Stack Overflow question 26753030

docker image ls
Output:
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
<none>       <none>    152d1c5b7f3b   39 seconds ago   619MB
docker container ls
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
./buildx-v0.27.0.linux-arm64 build github.com/Benjamin-Loison/YouTube-operational-API
Output:
[+] Building 1.2s (14/14) FINISHED                                                                                          docker:default
 => CACHED [internal] load git source github.com/Benjamin-Loison/YouTube-operational-API                                              0.7s
 => [internal] load metadata for docker.io/composer/composer:latest-bin                                                               0.4s
 => [internal] load metadata for docker.io/library/php:apache                                                                         0.4s
 => [stage-0 1/9] FROM docker.io/library/php:apache@sha256:fc535e6bf80041c11d99380d2a5a3ff4ceaafac7efbd4f8d53c876ca4751c7c2           0.0s 
 => => resolve docker.io/library/php:apache@sha256:fc535e6bf80041c11d99380d2a5a3ff4ceaafac7efbd4f8d53c876ca4751c7c2                   0.0s
 => FROM docker.io/composer/composer:latest-bin@sha256:abd63db39eb2565a5af2bece27befd9bdf1041938b5caf200852f3458b8b3592               0.0s
 => => resolve docker.io/composer/composer:latest-bin@sha256:abd63db39eb2565a5af2bece27befd9bdf1041938b5caf200852f3458b8b3592         0.0s
 => CACHED [stage-0 2/9] RUN a2enmod rewrite                                                                                          0.0s
 => CACHED [stage-0 3/9] COPY . /var/www/html/                                                                                        0.0s
 => CACHED [stage-0 4/9] RUN sed -ri -e 'N;N;N;s/(<Directory \/var\/www\/>\n)(.*\n)(.*)AllowOverride None/\1\2\3AllowOverride All/;p  0.0s
 => CACHED [stage-0 5/9] COPY --from=composer/composer:latest-bin /composer /usr/bin/composer                                         0.0s
 => CACHED [stage-0 6/9] RUN apt update                                                                                               0.0s
 => CACHED [stage-0 7/9] RUN apt install -y git protobuf-compiler                                                                     0.0s
 => CACHED [stage-0 8/9] RUN composer require google/protobuf                                                                         0.0s
 => CACHED [stage-0 9/9] RUN protoc --php_out=proto/php/ --proto_path=proto/prototypes/ $(find proto/prototypes/ -type f)             0.0s
 => exporting to image                                                                                                                0.0s
 => => exporting layers                                                                                                               0.0s
 => => writing image sha256:152d1c5b7f3b9e579139d0d56685c0fc1e52eb94bb8e2f053c7882e64edfe6bb                                          0.0s

 1 warning found (use docker --debug to expand):
 - JSONArgsRecommended: JSON arguments recommended for CMD to prevent unintended behavior related to OS signals (line 17)

ls -lah does not list any change.

docker run github.com/Benjamin-Loison/YouTube-operational-API
Output:
docker: invalid reference format: repository name (Benjamin-Loison/YouTube-operational-API) must be lowercase.
See 'docker run --help'.
docker image ls
Output:
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
<none>       <none>    152d1c5b7f3b   2 minutes ago   619MB
docker run github.com/benjamin-loison/youtube-operational-api
Output:
Unable to find image 'github.com/benjamin-loison/youtube-operational-api:latest' locally
docker: Error response from daemon: error parsing HTTP 404 response body: no error details found in HTTP response body: "{\"error\":\"Not Found\"}".
See 'docker run --help'.

In my opinion the repository should be filled automatically.

buildx-v0.27.0.linux-arm64 build --tag youtube_operational_api github.com/Benjamin-Loison/YouTube-operational-API
Output:
[+] Building 1.5s (14/14) FINISHED                                                                                          docker:default
 => CACHED [internal] load git source github.com/Benjamin-Loison/YouTube-operational-API                                              0.7s
 => [internal] load metadata for docker.io/composer/composer:latest-bin                                                               0.7s
 => [internal] load metadata for docker.io/library/php:apache                                                                         0.6s
 => [stage-0 1/9] FROM docker.io/library/php:apache@sha256:fc535e6bf80041c11d99380d2a5a3ff4ceaafac7efbd4f8d53c876ca4751c7c2           0.0s 
 => => resolve docker.io/library/php:apache@sha256:fc535e6bf80041c11d99380d2a5a3ff4ceaafac7efbd4f8d53c876ca4751c7c2                   0.0s
 => FROM docker.io/composer/composer:latest-bin@sha256:abd63db39eb2565a5af2bece27befd9bdf1041938b5caf200852f3458b8b3592               0.0s
 => => resolve docker.io/composer/composer:latest-bin@sha256:abd63db39eb2565a5af2bece27befd9bdf1041938b5caf200852f3458b8b3592         0.0s
 => CACHED [stage-0 2/9] RUN a2enmod rewrite                                                                                          0.0s
 => CACHED [stage-0 3/9] COPY . /var/www/html/                                                                                        0.0s
 => CACHED [stage-0 4/9] RUN sed -ri -e 'N;N;N;s/(<Directory \/var\/www\/>\n)(.*\n)(.*)AllowOverride None/\1\2\3AllowOverride All/;p  0.0s
 => CACHED [stage-0 5/9] COPY --from=composer/composer:latest-bin /composer /usr/bin/composer                                         0.0s
 => CACHED [stage-0 6/9] RUN apt update                                                                                               0.0s
 => CACHED [stage-0 7/9] RUN apt install -y git protobuf-compiler                                                                     0.0s
 => CACHED [stage-0 8/9] RUN composer require google/protobuf                                                                         0.0s
 => CACHED [stage-0 9/9] RUN protoc --php_out=proto/php/ --proto_path=proto/prototypes/ $(find proto/prototypes/ -type f)             0.0s
 => exporting to image                                                                                                                0.0s
 => => exporting layers                                                                                                               0.0s
 => => writing image sha256:152d1c5b7f3b9e579139d0d56685c0fc1e52eb94bb8e2f053c7882e64edfe6bb                                          0.0s
 => => naming to docker.io/library/youtube_operational_api                                                                            0.0s

 1 warning found (use docker --debug to expand):
 - JSONArgsRecommended: JSON arguments recommended for CMD to prevent unintended behavior related to OS signals (line 17)
docker image ls
Output:
REPOSITORY                TAG       IMAGE ID       CREATED         SIZE
youtube_operational_api   latest    152d1c5b7f3b   6 minutes ago   619MB

https://docs.docker.com/reference/build-checks/json-args-recommended/

./buildx-v0.27.0.linux-arm64 ['build', '--tag', 'youtube_operational_api', 'github.com/Benjamin-Loison/YouTube-operational-API']
ERROR: unknown flag: --tag,

" does not help.

Well it is blaming Dockerfile.

DuckDuckGo and Google search "docker run github.com".

docker run `../Andromeda606_YouTube-operational-API/buildx-v0.27.0.linux-arm64 build --tag youtube_operational_api -q github.com/Benjamin-Loison/YouTube-operational-API`
Output:
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
[Sat Aug 30 21:53:41.924601 2025] [mpm_prefork:notice] [pid 9:tid 9] AH00163: Apache/2.4.65 (Debian) PHP/8.4.12 configured -- resuming normal operations
[Sat Aug 30 21:53:41.924649 2025] [core:notice] [pid 9:tid 9] AH00094: Command line: '/usr/sbin/apache2 -D FOREGROUND'

docker run -p 8080:80 `docker build --tag youtube_operational_api -q github.com/Benjamin-Loison/YouTube-operational-API`

https://hub.docker.com/billing

Improve_websites_thanks_to_open_source/issues/2212 would help.

docker container ls
Output:
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                                     NAMES
29e833065d58   de02d9009c0e   "docker-php-entrypoi…"   58 seconds ago   Up 57 seconds   0.0.0.0:8080->80/tcp, [::]:8080->80/tcp   upbeat_hopper
docker stop 29e833065d58
29e833065d58

Source: https://forums.docker.com/t/docker-run-cannot-be-killed-with-ctrl-c/13108/3

as ctrl + c even twice does not gracefully exit, and 3 as far as I know force quit, but the container is still running it seems.

docker container ls
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
docker image ls
Output:
REPOSITORY                TAG       IMAGE ID       CREATED          SIZE
youtube_operational_api   latest    9be509d1a92f   18 seconds ago   619MB
<none>                    <none>    de02d9009c0e   3 minutes ago    619MB

It keeps old image for an unknown reason.

DuckDuckGo search Docker remove none image.

Could buildx build github.com/Benjamin-Loison/YouTube-operational-API --tag youtube_operational_api && docker rmi $(docker images --filter "dangling=true" -q --no-trunc) && docker run -p 8080:80 youtube_operational_api. The title of the webpage is correctly updated according to my tests.

docker image prune
Output:
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N]
docker image prune --help
Output:

Usage:  docker image prune [OPTIONS]

Remove unused images

Options:
  -a, --all             Remove all unused images, not just dangling ones
      --filter filter   Provide filter values (e.g. "until=<timestamp>")
  -f, --force           Do not prompt for confirmation
docker image prune --all -f
Total reclaimed space: 0B
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
Deleted: sha256:de02d9009c0eda7a0fa1baeaeb1deb5e64e28330a8003f8c5a7b7a1d48dba7c5

Source: the Stack Overflow answer 33913711

buildx build github.com/BTKBot/YouTube-operational-API --tag youtube_operational_api && docker rmi $(docker images --filter "dangling=true" -q --no-trunc); docker run -p 8080:80 youtube_operational_api
Output:
[+] Building 11.4s (14/14) FINISHED                                                                                         docker:default
 => [internal] load git source github.com/BTKBot/YouTube-operational-API                                                              1.6s
 => [internal] load metadata for docker.io/composer/composer:latest-bin                                                               0.3s
 => [internal] load metadata for docker.io/library/php:apache                                                                         0.3s
 => [stage-0 1/9] FROM docker.io/library/php:apache@sha256:fc535e6bf80041c11d99380d2a5a3ff4ceaafac7efbd4f8d53c876ca4751c7c2           0.0s 
 => => resolve docker.io/library/php:apache@sha256:fc535e6bf80041c11d99380d2a5a3ff4ceaafac7efbd4f8d53c876ca4751c7c2                   0.0s 
 => CACHED FROM docker.io/composer/composer:latest-bin@sha256:abd63db39eb2565a5af2bece27befd9bdf1041938b5caf200852f3458b8b3592        0.0s 
 => => resolve docker.io/composer/composer:latest-bin@sha256:abd63db39eb2565a5af2bece27befd9bdf1041938b5caf200852f3458b8b3592         0.0s 
 => CACHED [stage-0 2/9] RUN a2enmod rewrite                                                                                          0.0s
 => [stage-0 3/9] COPY . /var/www/html/                                                                                               0.1s
 => [stage-0 4/9] RUN sed -ri -e 'N;N;N;s/(<Directory \/var\/www\/>\n)(.*\n)(.*)AllowOverride None/\1\2\3AllowOverride All/;p;d;' /e  0.2s
 => [stage-0 5/9] COPY --from=composer/composer:latest-bin /composer /usr/bin/composer                                                0.1s
 => [stage-0 6/9] RUN apt update                                                                                                      2.2s
 => [stage-0 7/9] RUN apt install -y git protobuf-compiler                                                                            5.1s 
 => [stage-0 8/9] RUN composer require google/protobuf                                                                                1.3s 
 => [stage-0 9/9] RUN protoc --php_out=proto/php/ --proto_path=proto/prototypes/ $(find proto/prototypes/ -type f)                    0.2s 
 => exporting to image                                                                                                                0.3s 
 => => exporting layers                                                                                                               0.3s 
 => => writing image sha256:1dd233c7eb607398aae366f6e4ff01d317afe81b217c3825b7aa0994b820af9f                                          0.0s 
 => => naming to docker.io/library/youtube_operational_api                                                                            0.0s 
                                                                                                                                           
 1 warning found (use docker --debug to expand):
 - JSONArgsRecommended: JSON arguments recommended for CMD to prevent unintended behavior related to OS signals (line 17)
Error response from daemon: conflict: unable to delete 7b096e096234 (must be forced) - image is being used by stopped container 139bda70ed13
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
[Sat Aug 30 22:40:37.284981 2025] [mpm_prefork:notice] [pid 9:tid 9] AH00163: Apache/2.4.65 (Debian) PHP/8.4.12 configured -- resuming normal operations
[Sat Aug 30 22:40:37.285030 2025] [core:notice] [pid 9:tid 9] AH00094: Command line: '/usr/sbin/apache2 -D FOREGROUND'

while docker container ls was returning nothing before above command.

buildx build github.com/BTKBot/YouTube-operational-API --tag youtube_operational_api && docker rmi --force $(docker images --filter "dangling=true" -q --no-trunc); docker run -p 8080:80 youtube_operational_api
Output:
[+] Building 11.9s (14/14) FINISHED                                                                                         docker:default
 => [internal] load git source github.com/BTKBot/YouTube-operational-API                                                              1.6s
 => [internal] load metadata for docker.io/composer/composer:latest-bin                                                               0.6s
 => [internal] load metadata for docker.io/library/php:apache                                                                         0.7s
 => [stage-0 1/9] FROM docker.io/library/php:apache@sha256:fc535e6bf80041c11d99380d2a5a3ff4ceaafac7efbd4f8d53c876ca4751c7c2           0.0s 
 => => resolve docker.io/library/php:apache@sha256:fc535e6bf80041c11d99380d2a5a3ff4ceaafac7efbd4f8d53c876ca4751c7c2                   0.0s 
 => CACHED FROM docker.io/composer/composer:latest-bin@sha256:abd63db39eb2565a5af2bece27befd9bdf1041938b5caf200852f3458b8b3592        0.0s 
 => => resolve docker.io/composer/composer:latest-bin@sha256:abd63db39eb2565a5af2bece27befd9bdf1041938b5caf200852f3458b8b3592         0.0s 
 => CACHED [stage-0 2/9] RUN a2enmod rewrite                                                                                          0.0s
 => [stage-0 3/9] COPY . /var/www/html/                                                                                               0.0s
 => [stage-0 4/9] RUN sed -ri -e 'N;N;N;s/(<Directory \/var\/www\/>\n)(.*\n)(.*)AllowOverride None/\1\2\3AllowOverride All/;p;d;' /e  0.2s
 => [stage-0 5/9] COPY --from=composer/composer:latest-bin /composer /usr/bin/composer                                                0.1s
 => [stage-0 6/9] RUN apt update                                                                                                      2.3s
 => [stage-0 7/9] RUN apt install -y git protobuf-compiler                                                                            5.0s 
 => [stage-0 8/9] RUN composer require google/protobuf                                                                                1.3s 
 => [stage-0 9/9] RUN protoc --php_out=proto/php/ --proto_path=proto/prototypes/ $(find proto/prototypes/ -type f)                    0.2s 
 => exporting to image                                                                                                                0.3s 
 => => exporting layers                                                                                                               0.3s 
 => => writing image sha256:48a872ae4644bc24200aa385eaeac4b185c0ebc8301dcaea785a8330f1ee9bf8                                          0.0s 
 => => naming to docker.io/library/youtube_operational_api                                                                            0.0s 
                                                                                                                                           
 1 warning found (use docker --debug to expand):
 - JSONArgsRecommended: JSON arguments recommended for CMD to prevent unintended behavior related to OS signals (line 17)
Deleted: sha256:1dd233c7eb607398aae366f6e4ff01d317afe81b217c3825b7aa0994b820af9f
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
[Sat Aug 30 22:42:43.216140 2025] [mpm_prefork:notice] [pid 9:tid 9] AH00163: Apache/2.4.65 (Debian) PHP/8.4.12 configured -- resuming normal operations
[Sat Aug 30 22:42:43.216256 2025] [core:notice] [pid 9:tid 9] AH00094: Command line: '/usr/sbin/apache2 -D FOREGROUND'

What do you think about it? I don't see a strong advantage to go towards Docker Hub or any alternative knowing that.

I prefer now thinking deep about adding a new type of Docker dependency (Docker Hub or similar) support, to avoid later on dropping the support if I realize that it is inappropriate. People could ask me support for apt (similarly to yt-dlp), pacman and so on, but in my opinion with current commit as release design, there is no need to adapt my project to these software managers, they should just be compatible with git and that's all.

Personal notes:
docker build --tag youtube_operational_api github.com/Benjamin-Loison/YouTube-operational-API && docker run -p 8080:80 youtube_operational_api
Output:
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
            Install the buildx component to build images with BuildKit:
            https://docs.docker.com/go/buildx/

unable to prepare context: unable to 'git clone' to temporary context directory: error fetching: fatal: couldn't find remote ref master
: exit status 128

DuckDuckGo search docker build specify branch.

docker build --tag youtube_operational_api github.com/Benjamin-Loison/YouTube-operational-API:main && docker run -p 8080:80 youtube_operational_api
Output:
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
            Install the buildx component to build images with BuildKit:
            https://docs.docker.com/go/buildx/

unable to prepare context: unable to 'git clone' to temporary context directory: error fetching: remote: Repository not found.
fatal: repository 'https://github.com/Benjamin-Loison/YouTube-operational-API:main/' not found
: exit status 128

DuckDuckGo search docker build specify remote branch.

The Stack Overflow answer 37547297:

docker build --tag youtube_operational_api github.com/Benjamin-Loison/YouTube-operational-API#main && docker run -p 8080:80 youtube_operational_api
Output:
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
            Install the buildx component to build images with BuildKit:
            https://docs.docker.com/go/buildx/

Sending build context to Docker daemon    384kB
Step 1/10 : FROM php:apache
 ---> 3bbddfeb9299
Step 2/10 : RUN a2enmod rewrite
 ---> Running in 8dc1795cfa10
Enabling module rewrite.
To activate the new configuration, you need to run:
  service apache2 restart
 ---> Removed intermediate container 8dc1795cfa10
 ---> 09a53ab362c5
Step 3/10 : COPY . /var/www/html/
 ---> 70f24b86191b
Step 4/10 : RUN sed -ri -e 'N;N;N;s/(<Directory \/var\/www\/>\n)(.*\n)(.*)AllowOverride None/\1\2\3AllowOverride All/;p;d;' /etc/apache2/apache2.conf
 ---> Running in 793e262b6a68
 ---> Removed intermediate container 793e262b6a68
 ---> 85cc5860706a
Step 5/10 : COPY --from=composer/composer:latest-bin /composer /usr/bin/composer
 ---> 57dcf2abe9c1
Step 6/10 : RUN apt update
 ---> Running in d1ed9300820c

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Get:1 http://deb.debian.org/debian bookworm InRelease [151 kB]
Get:2 http://deb.debian.org/debian bookworm-updates InRelease [55.4 kB]
Get:3 http://deb.debian.org/debian-security bookworm-security InRelease [48.0 kB]
Get:4 http://deb.debian.org/debian bookworm/main amd64 Packages [8791 kB]
Get:5 http://deb.debian.org/debian bookworm-updates/main amd64 Packages [6924 B]
Get:6 http://deb.debian.org/debian-security bookworm-security/main amd64 Packages [278 kB]
Fetched 9331 kB in 2s (4414 kB/s)
Reading package lists...
Building dependency tree...
Reading state information...
77 packages can be upgraded. Run 'apt list --upgradable' to see them.
 ---> Removed intermediate container d1ed9300820c
 ---> f2a2d9ff5b88
Step 7/10 : RUN apt install -y git protobuf-compiler
 ---> Running in 5e14bd554c94

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
  curl git-man less libbsd0 libcbor0.8 libcurl3-gnutls libcurl4 libedit2
  liberror-perl libfido2-1 libprotobuf-dev libprotobuf-lite32 libprotobuf32
  libprotoc32 libssl3 libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxext6
  libxmuu1 openssh-client openssl xauth zlib1g-dev
Suggested packages:
  gettext-base git-daemon-run | git-daemon-sysvinit git-doc git-email git-gui
  gitk gitweb git-cvs git-mediawiki git-svn keychain libpam-ssh monkeysphere
  ssh-askpass protobuf-mode-el
The following NEW packages will be installed:
  git git-man less libbsd0 libcbor0.8 libcurl3-gnutls libedit2 liberror-perl
  libfido2-1 libprotobuf-dev libprotobuf-lite32 libprotobuf32 libprotoc32
  libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxext6 libxmuu1
  openssh-client protobuf-compiler xauth zlib1g-dev
The following packages will be upgraded:
  curl libcurl4 libssl3 openssl
4 upgraded, 24 newly installed, 0 to remove and 73 not upgraded.
Need to get 21.0 MB of archives.
After this operation, 81.0 MB of additional disk space will be used.
Get:1 http://deb.debian.org/debian bookworm/main amd64 less amd64 590-2.1~deb12u2 [132 kB]
Get:2 http://deb.debian.org/debian bookworm/main amd64 libbsd0 amd64 0.11.7-2 [117 kB]
Get:3 http://deb.debian.org/debian bookworm/main amd64 libedit2 amd64 3.1-20221030-2 [93.0 kB]
Get:4 http://deb.debian.org/debian bookworm/main amd64 libcbor0.8 amd64 0.8.0-2+b1 [27.4 kB]
Get:5 http://deb.debian.org/debian bookworm/main amd64 libssl3 amd64 3.0.17-1~deb12u2 [2027 kB]
Get:6 http://deb.debian.org/debian bookworm/main amd64 libfido2-1 amd64 1.12.0-2+b1 [77.2 kB]
Get:7 http://deb.debian.org/debian bookworm/main amd64 openssh-client amd64 1:9.2p1-2+deb12u7 [992 kB]
Get:8 http://deb.debian.org/debian bookworm/main amd64 curl amd64 7.88.1-10+deb12u14 [316 kB]
Get:9 http://deb.debian.org/debian bookworm/main amd64 libcurl4 amd64 7.88.1-10+deb12u14 [392 kB]
Get:10 http://deb.debian.org/debian bookworm/main amd64 libcurl3-gnutls amd64 7.88.1-10+deb12u14 [386 kB]
Get:11 http://deb.debian.org/debian bookworm/main amd64 liberror-perl all 0.17029-2 [29.0 kB]
Get:12 http://deb.debian.org/debian bookworm/main amd64 git-man all 1:2.39.5-0+deb12u2 [2053 kB]
Get:13 http://deb.debian.org/debian bookworm/main amd64 git amd64 1:2.39.5-0+deb12u2 [7260 kB]
Get:14 http://deb.debian.org/debian bookworm/main amd64 zlib1g-dev amd64 1:1.2.13.dfsg-1 [916 kB]
Get:15 http://deb.debian.org/debian bookworm/main amd64 libprotobuf32 amd64 3.21.12-3 [932 kB]
Get:16 http://deb.debian.org/debian bookworm/main amd64 libprotobuf-lite32 amd64 3.21.12-3 [261 kB]
Get:17 http://deb.debian.org/debian bookworm/main amd64 libprotobuf-dev amd64 3.21.12-3 [1283 kB]
Get:18 http://deb.debian.org/debian bookworm/main amd64 libprotoc32 amd64 3.21.12-3 [829 kB]
Get:19 http://deb.debian.org/debian bookworm/main amd64 libxau6 amd64 1:1.0.9-1 [19.7 kB]
Get:20 http://deb.debian.org/debian bookworm/main amd64 libxdmcp6 amd64 1:1.1.2-3 [26.3 kB]
Get:21 http://deb.debian.org/debian bookworm/main amd64 libxcb1 amd64 1.15-1 [144 kB]
Get:22 http://deb.debian.org/debian bookworm/main amd64 libx11-data all 2:1.8.4-2+deb12u2 [292 kB]
Get:23 http://deb.debian.org/debian bookworm/main amd64 libx11-6 amd64 2:1.8.4-2+deb12u2 [760 kB]
Get:24 http://deb.debian.org/debian bookworm/main amd64 libxext6 amd64 2:1.3.4-1+b1 [52.9 kB]
Get:25 http://deb.debian.org/debian bookworm/main amd64 libxmuu1 amd64 2:1.1.3-3 [23.9 kB]
Get:26 http://deb.debian.org/debian bookworm/main amd64 openssl amd64 3.0.17-1~deb12u2 [1430 kB]
Get:27 http://deb.debian.org/debian bookworm/main amd64 protobuf-compiler amd64 3.21.12-3 [83.9 kB]
Get:28 http://deb.debian.org/debian bookworm/main amd64 xauth amd64 1:1.1.2-1 [36.0 kB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 21.0 MB in 2s (8790 kB/s)
Selecting previously unselected package less.
(Reading database ... 14167 files and directories currently installed.)
Preparing to unpack .../00-less_590-2.1~deb12u2_amd64.deb ...
Unpacking less (590-2.1~deb12u2) ...
Selecting previously unselected package libbsd0:amd64.
Preparing to unpack .../01-libbsd0_0.11.7-2_amd64.deb ...
Unpacking libbsd0:amd64 (0.11.7-2) ...
Selecting previously unselected package libedit2:amd64.
Preparing to unpack .../02-libedit2_3.1-20221030-2_amd64.deb ...
Unpacking libedit2:amd64 (3.1-20221030-2) ...
Selecting previously unselected package libcbor0.8:amd64.
Preparing to unpack .../03-libcbor0.8_0.8.0-2+b1_amd64.deb ...
Unpacking libcbor0.8:amd64 (0.8.0-2+b1) ...
Preparing to unpack .../04-libssl3_3.0.17-1~deb12u2_amd64.deb ...
Unpacking libssl3:amd64 (3.0.17-1~deb12u2) over (3.0.11-1~deb12u2) ...
Selecting previously unselected package libfido2-1:amd64.
Preparing to unpack .../05-libfido2-1_1.12.0-2+b1_amd64.deb ...
Unpacking libfido2-1:amd64 (1.12.0-2+b1) ...
Selecting previously unselected package openssh-client.
Preparing to unpack .../06-openssh-client_1%3a9.2p1-2+deb12u7_amd64.deb ...
Unpacking openssh-client (1:9.2p1-2+deb12u7) ...
Preparing to unpack .../07-curl_7.88.1-10+deb12u14_amd64.deb ...
Unpacking curl (7.88.1-10+deb12u14) over (7.88.1-10+deb12u4) ...
Preparing to unpack .../08-libcurl4_7.88.1-10+deb12u14_amd64.deb ...
Unpacking libcurl4:amd64 (7.88.1-10+deb12u14) over (7.88.1-10+deb12u4) ...
Selecting previously unselected package libcurl3-gnutls:amd64.
Preparing to unpack .../09-libcurl3-gnutls_7.88.1-10+deb12u14_amd64.deb ...
Unpacking libcurl3-gnutls:amd64 (7.88.1-10+deb12u14) ...
Selecting previously unselected package liberror-perl.
Preparing to unpack .../10-liberror-perl_0.17029-2_all.deb ...
Unpacking liberror-perl (0.17029-2) ...
Selecting previously unselected package git-man.
Preparing to unpack .../11-git-man_1%3a2.39.5-0+deb12u2_all.deb ...
Unpacking git-man (1:2.39.5-0+deb12u2) ...
Selecting previously unselected package git.
Preparing to unpack .../12-git_1%3a2.39.5-0+deb12u2_amd64.deb ...
Unpacking git (1:2.39.5-0+deb12u2) ...
Selecting previously unselected package zlib1g-dev:amd64.
Preparing to unpack .../13-zlib1g-dev_1%3a1.2.13.dfsg-1_amd64.deb ...
Unpacking zlib1g-dev:amd64 (1:1.2.13.dfsg-1) ...
Selecting previously unselected package libprotobuf32:amd64.
Preparing to unpack .../14-libprotobuf32_3.21.12-3_amd64.deb ...
Unpacking libprotobuf32:amd64 (3.21.12-3) ...
Selecting previously unselected package libprotobuf-lite32:amd64.
Preparing to unpack .../15-libprotobuf-lite32_3.21.12-3_amd64.deb ...
Unpacking libprotobuf-lite32:amd64 (3.21.12-3) ...
Selecting previously unselected package libprotobuf-dev:amd64.
Preparing to unpack .../16-libprotobuf-dev_3.21.12-3_amd64.deb ...
Unpacking libprotobuf-dev:amd64 (3.21.12-3) ...
Selecting previously unselected package libprotoc32:amd64.
Preparing to unpack .../17-libprotoc32_3.21.12-3_amd64.deb ...
Unpacking libprotoc32:amd64 (3.21.12-3) ...
Selecting previously unselected package libxau6:amd64.
Preparing to unpack .../18-libxau6_1%3a1.0.9-1_amd64.deb ...
Unpacking libxau6:amd64 (1:1.0.9-1) ...
Selecting previously unselected package libxdmcp6:amd64.
Preparing to unpack .../19-libxdmcp6_1%3a1.1.2-3_amd64.deb ...
Unpacking libxdmcp6:amd64 (1:1.1.2-3) ...
Selecting previously unselected package libxcb1:amd64.
Preparing to unpack .../20-libxcb1_1.15-1_amd64.deb ...
Unpacking libxcb1:amd64 (1.15-1) ...
Selecting previously unselected package libx11-data.
Preparing to unpack .../21-libx11-data_2%3a1.8.4-2+deb12u2_all.deb ...
Unpacking libx11-data (2:1.8.4-2+deb12u2) ...
Selecting previously unselected package libx11-6:amd64.
Preparing to unpack .../22-libx11-6_2%3a1.8.4-2+deb12u2_amd64.deb ...
Unpacking libx11-6:amd64 (2:1.8.4-2+deb12u2) ...
Selecting previously unselected package libxext6:amd64.
Preparing to unpack .../23-libxext6_2%3a1.3.4-1+b1_amd64.deb ...
Unpacking libxext6:amd64 (2:1.3.4-1+b1) ...
Selecting previously unselected package libxmuu1:amd64.
Preparing to unpack .../24-libxmuu1_2%3a1.1.3-3_amd64.deb ...
Unpacking libxmuu1:amd64 (2:1.1.3-3) ...
Preparing to unpack .../25-openssl_3.0.17-1~deb12u2_amd64.deb ...
Unpacking openssl (3.0.17-1~deb12u2) over (3.0.11-1~deb12u2) ...
Selecting previously unselected package protobuf-compiler.
Preparing to unpack .../26-protobuf-compiler_3.21.12-3_amd64.deb ...
Unpacking protobuf-compiler (3.21.12-3) ...
Selecting previously unselected package xauth.
Preparing to unpack .../27-xauth_1%3a1.1.2-1_amd64.deb ...
Unpacking xauth (1:1.1.2-1) ...
Setting up libxau6:amd64 (1:1.0.9-1) ...
Setting up libcbor0.8:amd64 (0.8.0-2+b1) ...
Setting up libssl3:amd64 (3.0.17-1~deb12u2) ...
Setting up less (590-2.1~deb12u2) ...
Setting up libcurl3-gnutls:amd64 (7.88.1-10+deb12u14) ...
Setting up liberror-perl (0.17029-2) ...
Setting up libx11-data (2:1.8.4-2+deb12u2) ...
Setting up zlib1g-dev:amd64 (1:1.2.13.dfsg-1) ...
Setting up libprotobuf32:amd64 (3.21.12-3) ...
Setting up libprotobuf-lite32:amd64 (3.21.12-3) ...
Setting up libcurl4:amd64 (7.88.1-10+deb12u14) ...
Setting up git-man (1:2.39.5-0+deb12u2) ...
Setting up curl (7.88.1-10+deb12u14) ...
Setting up libfido2-1:amd64 (1.12.0-2+b1) ...
Setting up openssl (3.0.17-1~deb12u2) ...
Setting up libbsd0:amd64 (0.11.7-2) ...
Setting up libprotoc32:amd64 (3.21.12-3) ...
Setting up libxdmcp6:amd64 (1:1.1.2-3) ...
Setting up libxcb1:amd64 (1.15-1) ...
Setting up protobuf-compiler (3.21.12-3) ...
Setting up libedit2:amd64 (3.1-20221030-2) ...
Setting up libprotobuf-dev:amd64 (3.21.12-3) ...
Setting up git (1:2.39.5-0+deb12u2) ...
Setting up libx11-6:amd64 (2:1.8.4-2+deb12u2) ...
Setting up libxmuu1:amd64 (2:1.1.3-3) ...
Setting up openssh-client (1:9.2p1-2+deb12u7) ...
Setting up libxext6:amd64 (2:1.3.4-1+b1) ...
Setting up xauth (1:1.1.2-1) ...
Processing triggers for libc-bin (2.36-9+deb12u3) ...
 ---> Removed intermediate container 5e14bd554c94
 ---> df785a641288
Step 8/10 : RUN composer require google/protobuf
 ---> Running in e2a1840800b5
The repository at "/var/www/html" does not have the correct ownership and git refuses to use it:

fatal: detected dubious ownership in repository at '/var/www/html'
To add an exception for this directory, call:

	git config --global --add safe.directory /var/www/html

./composer.json has been created
The repository at "/var/www/html" does not have the correct ownership and git refuses to use it:

fatal: detected dubious ownership in repository at '/var/www/html'
To add an exception for this directory, call:

	git config --global --add safe.directory /var/www/html

Running composer update google/protobuf
Loading composer repositories with package information
Updating dependencies
Lock file operations: 1 install, 0 updates, 0 removals
  - Locking google/protobuf (v4.32.1)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
    Failed to download google/protobuf from dist: The zip extension and unzip/7z commands are both missing, skipping.
The php.ini used by your command-line PHP is: /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
    Now trying to download from source
  - Syncing google/protobuf (v4.32.1) into cache
  - Installing google/protobuf (v4.32.1): Cloning c4ed1c1f9b from cache
1 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
No security vulnerability advisories found.
Using version ^4.32 for google/protobuf
 ---> Removed intermediate container e2a1840800b5
 ---> 70398573c8b9
Step 9/10 : RUN protoc --php_out=proto/php/ --proto_path=proto/prototypes/ $(find proto/prototypes/ -type f)
 ---> Running in e3920428fb81
 ---> Removed intermediate container e3920428fb81
 ---> 6ae6367dd605
Step 10/10 : CMD apachectl -D FOREGROUND
 ---> Running in 15b15ffbe82c
 ---> Removed intermediate container 15b15ffbe82c
 ---> da74d9b740d0
Successfully built da74d9b740d0
Successfully tagged youtube_operational_api:latest
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
[Sat Sep 20 21:33:14.306587 2025] [mpm_prefork:notice] [pid 9] AH00163: Apache/2.4.57 (Debian) PHP/8.3.0 configured -- resuming normal operations
[Sat Sep 20 21:33:14.306722 2025] [core:notice] [pid 9] AH00094: Command line: '/usr/sbin/apache2 -D FOREGROUND'
curl -s http://localhost:8080 | grep 'This instance'
<br/><br/>This instance (my instance) uses version: <a href="https://github.com/Benjamin-Loison/YouTube-operational-API/commit/0d2768a5fcf560288eb3a9fa573056bdd5dba3d2

Benjamin-Loison avatar Aug 30 '25 22:08 Benjamin-Loison

Of course, but it's not right to simply say, "I run a command, it's the same thing." This is definitely not a healthy way to manage dozens, even hundreds, of different systems with the same architecture. Will I include the server in every image creation process to connect this project to Kubernetes? So, what do we need to do for a serverless architecture?

Andromeda606 avatar Aug 31 '25 09:08 Andromeda606