Broken Yii3 Docker installation on Ubuntu?

Hi. I tried to install Yii3 through Docker on desktop Ubuntu 24.04 LTS and on the latest 25.10, with “docker.io” and “make” installed from the repositories. I was following the documentation:

docker run --rm -it -v "$(pwd):/app" --user $(id -u):$(id -g) composer/composer create-project yiisoft/app yii3-docker
sudo chown -R $(id -u):$(id -g) yii3-docker
cd yii3-docker

Then I tried to run it:

make up

And I got an error:

docker compose -f docker/compose.yml -f docker/dev/compose.yml up -d --remove-orphans
unknown shorthand flag: 'f' in -f

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

Run 'docker --help' for more information
make: *** [Makefile:36: up] Error 125

Is it a bug or am I doing something wrong?

I think it might be something to do with your Docker version. Which one do you have?

Thank you for your response. The latest Ubuntu 25.10 have Docker 28.2.2 and GNU Make 4.4.1. You can check it on https://packages.ubuntu.com/ (keyword: docker.io, distribution: questing (25.10)).

I installed in development Ubuntu 26.04 Nightly (2026-02-02), which will be the next LTS version and for now it have Docker 29.1.3 and GNU Make 4.4.1. I followed instructions from the documentation.

docker run --rm -it -v "$(pwd):/app" --user $(id -u):$(id -g) composer/composer create-project yiisoft/app yii3-docker
sudo chown -R $(id -u):$(id -g) yii3-docker
cd yii3-docker

After running recently added “make composer update” command, I have got almost the same error (see below) as before and after running “make up” command, the error was exactly the same on in development 26.04 Nightly as on the lastest Ubuntu 25.10:

make composer update # added recently
docker compose -f docker/compose.yml -f docker/dev/compose.yml up -d --remove-orphans
unknown shorthand flag: 'f' in -f

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

Run 'docker --help' for more information
make: *** [Makefile:67: composer] Error 125

make up
docker compose -f docker/compose.yml -f docker/dev/compose.yml up -d --remove-orphans
unknown shorthand flag: 'f' in -f

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

Run 'docker --help' for more information
make: *** [Makefile:36: up] Error 125

The Docker documentation recommends uninstalling old versions.

The unofficial packages to uninstall are:
docker.io
docker-compose
docker-compose-v2
docker-doc
podman-docker

1 Like

What’s the output of docker compose version and type docker?

Samdark, we are moving forward. I had to install package “docker-compose-v2” and “docker-buildx”, which is not installed with “docker.io” directly.

Ubuntu 25.10:

docker compose version
Docker Compose version 2.37.1+ds1-0ubuntu2

Ubuntu 26.04 Nightly:

docker compose version
Docker Compose version 2.40.3+ds1-0ubuntu1

Same for Ubuntu 25.10 and 26.04 Nightly:

docker
Usage:  docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Common Commands:
  run         Create and run a new container from an image
  exec        Execute a command in a running container
  ps          List containers
  build       Build an image from a Dockerfile
  bake        Build from a file
  pull        Download an image from a registry
  push        Upload an image to a registry
  images      List images
  login       Authenticate to a registry
  logout      Log out from a registry
  search      Search Docker Hub for images
  version     Show the Docker version information
  info        Display system-wide information

Management Commands:
  builder     Manage builds
  buildx*     Docker Buildx
  checkpoint  Manage checkpoints
  compose*    Docker Compose
  container   Manage containers
  context     Manage contexts
  image       Manage images
  manifest    Manage Docker image manifests and manifest lists
  network     Manage networks
  plugin      Manage plugins
  system      Manage Docker
  trust*      Manage trust on Docker images
  volume      Manage volumes

Swarm Commands:
  config      Manage Swarm configs
  node        Manage Swarm nodes
  secret      Manage Swarm secrets
  service     Manage Swarm services
  stack       Manage Swarm stacks
  swarm       Manage Swarm

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  import      Import the contents from a tarball to create a filesystem image
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  wait        Block until one or more containers stop, then print their exit codes

Global Options:
      --config string      Location of client config files (default
                           "/home/jan/.docker")
  -c, --context string     Name of the context to use to connect to the
                           daemon (overrides DOCKER_HOST env var and
                           default context set with "docker context use")
  -D, --debug              Enable debug mode
  -H, --host string        Daemon socket to connect to
  -l, --log-level string   Set the logging level ("debug", "info",
                           "warn", "error", "fatal") (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default
                           "/home/jan/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default
                           "/home/jan/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default
                           "/home/jan/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Run 'docker COMMAND --help' for more information on a command.

For more help on how to use Docker, head to https://docs.docker.com/go/guides/

Then I had to ran Compose update as sudo:

sudo make composer update
docker compose -f docker/compose.yml -f docker/dev/compose.yml run --rm app composer update
[+] Building 1.5s (12/12) FINISHED                                              
 => [internal] load local bake definitions                                 0.0s
 => => reading from stdin 578B                                             0.0s
 => [internal] load build definition from Dockerfile                       0.0s
 => => transferring dockerfile: 1.44kB                                     0.0s
 => [internal] load metadata for docker.io/dunglas/frankenphp:1-php8.2-bo  0.5s
 => [internal] load metadata for docker.io/composer/composer:2-bin         0.5s
 => [internal] load .dockerignore                                          0.0s
 => => transferring context: 154B                                          0.0s
 => [base 1/3] FROM docker.io/dunglas/frankenphp:1-php8.2-bookworm@sha256  0.1s
 => => resolve docker.io/dunglas/frankenphp:1-php8.2-bookworm@sha256:7d26  0.0s
 => [composer 1/1] FROM docker.io/composer/composer:2-bin@sha256:5107a53c  0.1s
 => => resolve docker.io/composer/composer:2-bin@sha256:5107a53c864a9fb25  0.1s
 => CACHED [base 2/3] RUN apt update && apt -y install     unzip           0.0s
 => CACHED [base 3/3] RUN install-php-extensions     opcache     mbstring  0.0s
 => CACHED [dev 1/3] RUN install-php-extensions     xdebug                 0.0s
 => CACHED [dev 2/3] COPY --from=composer /composer /usr/bin/composer      0.0s
 => ERROR [dev 3/3] RUN  groupadd --gid 0 appuser;     useradd --gid 0 --  0.5s
------                                                                          
 > [dev 3/3] RUN        groupadd --gid 0 appuser;     useradd --gid 0 --uid 0 appuser;  setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/frankenphp;     chown -R appuser:appuser /data/caddy && chown -R appuser:appuser /config/caddy:
0.263 groupadd: GID '0' already exists
0.305 useradd: UID 0 is not unique
0.404 chown: invalid user: 'appuser:appuser'
------
Dockerfile:38

--------------------

  37 |     # Based on https://frankenphp.dev/docs/docker/#running-as-a-non-root-user

  38 | >>> RUN \

  39 | >>> 	groupadd --gid ${GROUP_ID} ${GROUP_NAME}; \

  40 | >>>     useradd --gid ${GROUP_ID} --uid ${USER_ID} ${GROUP_NAME}; \

  41 | >>> 	# Add additional capability to bind to port 80 and 443 \

  42 | >>> 	setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/frankenphp; \

  43 | >>> 	# Give write access to /data/caddy and /config/caddy \

  44 | >>> 	chown -R ${USER_NAME}:${GROUP_NAME} /data/caddy && chown -R ${USER_NAME}:${GROUP_NAME} /config/caddy

  45 |     USER ${USER_NAME}

--------------------

failed to solve: process "/bin/sh -c groupadd --gid ${GROUP_ID} ${GROUP_NAME};     useradd --gid ${GROUP_ID} --uid ${USER_ID} ${GROUP_NAME}; \tsetcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/frankenphp; \tchown -R ${USER_NAME}:${GROUP_NAME} /data/caddy && chown -R ${USER_NAME}:${GROUP_NAME} /config/caddy" did not complete successfully: exit code: 1

make: *** [Makefile:67: composer] Error 1

sudo make up
docker compose -f docker/compose.yml -f docker/dev/compose.yml up -d --remove-orphans
[+] Building 1.5s (12/12) FINISHED                                              
 => [internal] load local bake definitions                                 0.0s
 => => reading from stdin 578B                                             0.0s
 => [internal] load build definition from Dockerfile                       0.0s
 => => transferring dockerfile: 1.44kB                                     0.0s
 => [internal] load metadata for docker.io/composer/composer:2-bin         0.5s
 => [internal] load metadata for docker.io/dunglas/frankenphp:1-php8.2-bo  0.5s
 => [internal] load .dockerignore                                          0.0s
 => => transferring context: 154B                                          0.0s
 => [base 1/3] FROM docker.io/dunglas/frankenphp:1-php8.2-bookworm@sha256  0.1s
 => => resolve docker.io/dunglas/frankenphp:1-php8.2-bookworm@sha256:7d26  0.1s
 => [composer 1/1] FROM docker.io/composer/composer:2-bin@sha256:5107a53c  0.1s
 => => resolve docker.io/composer/composer:2-bin@sha256:5107a53c864a9fb25  0.1s
 => CACHED [base 2/3] RUN apt update && apt -y install     unzip           0.0s
 => CACHED [base 3/3] RUN install-php-extensions     opcache     mbstring  0.0s
 => CACHED [dev 1/3] RUN install-php-extensions     xdebug                 0.0s
 => CACHED [dev 2/3] COPY --from=composer /composer /usr/bin/composer      0.0s
 => ERROR [dev 3/3] RUN  groupadd --gid 0 appuser;     useradd --gid 0 --  0.5s
------                                                                          
 > [dev 3/3] RUN        groupadd --gid 0 appuser;     useradd --gid 0 --uid 0 appuser;  setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/frankenphp;     chown -R appuser:appuser /data/caddy && chown -R appuser:appuser /config/caddy:
0.300 groupadd: GID '0' already exists
0.344 useradd: UID 0 is not unique
0.458 chown: invalid user: 'appuser:appuser'
------
Dockerfile:38

--------------------

  37 |     # Based on https://frankenphp.dev/docs/docker/#running-as-a-non-root-user

  38 | >>> RUN \

  39 | >>> 	groupadd --gid ${GROUP_ID} ${GROUP_NAME}; \

  40 | >>>     useradd --gid ${GROUP_ID} --uid ${USER_ID} ${GROUP_NAME}; \

  41 | >>> 	# Add additional capability to bind to port 80 and 443 \

  42 | >>> 	setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/frankenphp; \

  43 | >>> 	# Give write access to /data/caddy and /config/caddy \

  44 | >>> 	chown -R ${USER_NAME}:${GROUP_NAME} /data/caddy && chown -R ${USER_NAME}:${GROUP_NAME} /config/caddy

  45 |     USER ${USER_NAME}

--------------------

failed to solve: process "/bin/sh -c groupadd --gid ${GROUP_ID} ${GROUP_NAME};     useradd --gid ${GROUP_ID} --uid ${USER_ID} ${GROUP_NAME}; \tsetcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/frankenphp; \tchown -R ${USER_NAME}:${GROUP_NAME} /data/caddy && chown -R ${USER_NAME}:${GROUP_NAME} /config/caddy" did not complete successfully: exit code: 1

make: *** [Makefile:36: up] Error 1

It looks like I am still missing something.

Kirill42, thank you for your suggestion. I successfully installed an official Docker Engine through APT on fresh Ubuntu 25.10 installation. Docker version 29.2.1, Docker Compose version 5.0.2.

docker
Usage:  docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Common Commands:
  run         Create and run a new container from an image
  exec        Execute a command in a running container
  ps          List containers
  build       Build an image from a Dockerfile
  bake        Build from a file
  pull        Download an image from a registry
  push        Upload an image to a registry
  images      List images
  login       Authenticate to a registry
  logout      Log out from a registry
  search      Search Docker Hub for images
  version     Show the Docker version information
  info        Display system-wide information

Management Commands:
  builder     Manage builds
  buildx*     Docker Buildx
  checkpoint  Manage checkpoints
  compose*    Docker Compose
  container   Manage containers
  context     Manage contexts
  image       Manage images
  manifest    Manage Docker image manifests and manifest lists
  network     Manage networks
  plugin      Manage plugins
  system      Manage Docker
  volume      Manage volumes

Swarm Commands:
  config      Manage Swarm configs
  node        Manage Swarm nodes
  secret      Manage Swarm secrets
  service     Manage Swarm services
  stack       Manage Swarm stacks
  swarm       Manage Swarm

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  import      Import the contents from a tarball to create a filesystem image
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  wait        Block until one or more containers stop, then print their exit codes

Global Options:
      --config string      Location of client config files (default
                           "/home/jan/.docker")
  -c, --context string     Name of the context to use to connect to the
                           daemon (overrides DOCKER_HOST env var and default
                           context set with "docker context use")
  -D, --debug              Enable debug mode
  -H, --host string        Daemon socket to connect to
  -l, --log-level string   Set the logging level ("debug", "info", "warn",
                           "error", "fatal") (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default
                           "/home/jan/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default
                           "/home/jan/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default
                           "/home/jan/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Run 'docker COMMAND --help' for more information on a command.

sudo make composer update
docker compose -f docker/compose.yml -f docker/dev/compose.yml run --rm app composer update
Image app-app Building 
[+] Building 2.4s (12/12) FINISHED                                                                                                                                        
 => [internal] load local bake definitions                                                                                                                           0.0s
 => => reading from stdin 577B                                                                                                                                       0.0s
 => [internal] load build definition from Dockerfile                                                                                                                 0.0s
 => => transferring dockerfile: 1.44kB                                                                                                                               0.0s
 => [internal] load metadata for docker.io/composer/composer:2-bin                                                                                                   1.3s
 => [internal] load metadata for docker.io/dunglas/frankenphp:1-php8.2-bookworm                                                                                      1.4s
 => [internal] load .dockerignore                                                                                                                                    0.0s
 => => transferring context: 154B                                                                                                                                    0.0s
 => [base 1/3] FROM docker.io/dunglas/frankenphp:1-php8.2-bookworm@sha256:7d264b23926338c1851417bc181bf91be1f1f70672cb9c5f5e7cc343d9ca9172                           0.0s
 => => resolve docker.io/dunglas/frankenphp:1-php8.2-bookworm@sha256:7d264b23926338c1851417bc181bf91be1f1f70672cb9c5f5e7cc343d9ca9172                                0.0s
 => [composer 1/1] FROM docker.io/composer/composer:2-bin@sha256:5107a53c864a9fb2579406968b95c4746a906db9c018779e1b63a40ec96a145c                                    0.1s
 => => resolve docker.io/composer/composer:2-bin@sha256:5107a53c864a9fb2579406968b95c4746a906db9c018779e1b63a40ec96a145c                                             0.0s
 => CACHED [base 2/3] RUN apt update && apt -y install     unzip                                                                                                     0.0s
 => CACHED [base 3/3] RUN install-php-extensions     opcache     mbstring     intl     dom     ctype     curl     phar     openssl     xml     xmlwriter     simple  0.0s
 => CACHED [dev 1/3] RUN install-php-extensions     xdebug                                                                                                           0.0s
 => CACHED [dev 2/3] COPY --from=composer /composer /usr/bin/composer                                                                                                0.0s
 => ERROR [dev 3/3] RUN  groupadd --gid 0 appuser;     useradd --gid 0 --uid 0 appuser;  setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/frankenphp;  chown -R appu  0.7s
------                                                                                                                                                                    
 > [dev 3/3] RUN        groupadd --gid 0 appuser;     useradd --gid 0 --uid 0 appuser;  setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/frankenphp;     chown -R appuser:appuser /data/caddy && chown -R appuser:appuser /config/caddy:                                                                                                             
0.371 groupadd: GID '0' already exists
0.419 useradd: UID 0 is not unique
0.579 chown: invalid user: 'appuser:appuser'
------
Dockerfile:38

--------------------

  37 |     # Based on https://frankenphp.dev/docs/docker/#running-as-a-non-root-user

  38 | >>> RUN \

  39 | >>> 	groupadd --gid ${GROUP_ID} ${GROUP_NAME}; \

  40 | >>>     useradd --gid ${GROUP_ID} --uid ${USER_ID} ${GROUP_NAME}; \

  41 | >>> 	# Add additional capability to bind to port 80 and 443 \

  42 | >>> 	setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/frankenphp; \

  43 | >>> 	# Give write access to /data/caddy and /config/caddy \

  44 | >>> 	chown -R ${USER_NAME}:${GROUP_NAME} /data/caddy && chown -R ${USER_NAME}:${GROUP_NAME} /config/caddy

  45 |     USER ${USER_NAME}

--------------------

failed to solve: process "/bin/sh -c groupadd --gid ${GROUP_ID} ${GROUP_NAME};     useradd --gid ${GROUP_ID} --uid ${USER_ID} ${GROUP_NAME}; \tsetcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/frankenphp; \tchown -R ${USER_NAME}:${GROUP_NAME} /data/caddy && chown -R ${USER_NAME}:${GROUP_NAME} /config/caddy" did not complete successfully: exit code: 1

make: *** [Makefile:67: composer] Error 1

sudo make up
docker compose -f docker/compose.yml -f docker/dev/compose.yml up -d --remove-orphans
[+] Building 1.6s (12/12) FINISHED                                                                                                                                        
 => [internal] load local bake definitions                                                                                                                           0.0s
 => => reading from stdin 577B                                                                                                                                       0.0s
 => [internal] load build definition from Dockerfile                                                                                                                 0.0s
 => => transferring dockerfile: 1.44kB                                                                                                                               0.0s
 => [internal] load metadata for docker.io/composer/composer:2-bin                                                                                                   0.5s
 => [internal] load metadata for docker.io/dunglas/frankenphp:1-php8.2-bookworm                                                                                      0.5s
 => [internal] load .dockerignore                                                                                                                                    0.0s
 => => transferring context: 154B                                                                                                                                    0.0s
 => [base 1/3] FROM docker.io/dunglas/frankenphp:1-php8.2-bookworm@sha256:7d264b23926338c1851417bc181bf91be1f1f70672cb9c5f5e7cc343d9ca9172                           0.1s
 => => resolve docker.io/dunglas/frankenphp:1-php8.2-bookworm@sha256:7d264b23926338c1851417bc181bf91be1f1f70672cb9c5f5e7cc343d9ca9172                                0.1s
 => [composer 1/1] FROM docker.io/composer/composer:2-bin@sha256:5107a53c864a9fb2579406968b95c4746a906db9c018779e1b63a40ec96a145c                                    0.1s
 => => resolve docker.io/composer/composer:2-bin@sha256:5107a53c864a9fb2579406968b95c4746a906db9c018779e1b63a40ec96a145c                                             0.1s
 => CACHED [base 2/3] RUN apt update && apt -y install     unzip                                                                                                     0.0s
 => CACHED [base 3/3] RUN install-php-extensions     opcache     mbstring     intl     dom     ctype     curl     phar     openssl     xml     xmlwriter     simple  0.0s
 => CACHED [dev 1/3] RUN install-php-extensions     xdebug                                                                                                           0.0s
 => CACHED [dev 2/3] COPY --from=composer /composer /usr/bin/composer                                                                                                0.0s
 => ERROR [dev 3/3] RUN  groupadd --gid 0 appuser;     useradd --gid 0 --uid 0 appuser;  setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/frankenphp;  chown -R appu  0.7s
------                                                                                                                                                                    
 > [dev 3/3] RUN        groupadd --gid 0 appuser;     useradd --gid 0 --uid 0 appuser;  setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/frankenphp;     chown -R appuser:appuser /data/caddy && chown -R appuser:appuser /config/caddy:                                                                                                             
0.324 groupadd: GID '0' already exists
0.370 useradd: UID 0 is not unique
0.648 chown: invalid user: 'appuser:appuser'
------
[+] up 0/1
 ⠙ Image app-app Building                                                                                                                                             1.7s
Dockerfile:38

--------------------

  37 |     # Based on https://frankenphp.dev/docs/docker/#running-as-a-non-root-user

  38 | >>> RUN \

  39 | >>> 	groupadd --gid ${GROUP_ID} ${GROUP_NAME}; \

  40 | >>>     useradd --gid ${GROUP_ID} --uid ${USER_ID} ${GROUP_NAME}; \

  41 | >>> 	# Add additional capability to bind to port 80 and 443 \

  42 | >>> 	setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/frankenphp; \

  43 | >>> 	# Give write access to /data/caddy and /config/caddy \

  44 | >>> 	chown -R ${USER_NAME}:${GROUP_NAME} /data/caddy && chown -R ${USER_NAME}:${GROUP_NAME} /config/caddy

  45 |     USER ${USER_NAME}

--------------------

failed to solve: process "/bin/sh -c groupadd --gid ${GROUP_ID} ${GROUP_NAME};     useradd --gid ${GROUP_ID} --uid ${USER_ID} ${GROUP_NAME}; \tsetcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/frankenphp; \tchown -R ${USER_NAME}:${GROUP_NAME} /data/caddy && chown -R ${USER_NAME}:${GROUP_NAME} /config/caddy" did not complete successfully: exit code: 1

make: *** [Makefile:36: up] Error 1

Similar results as with distribution packages.

I get the same error when I use sudo.
Failed execution:
sudo make composer update

Successfully executed:
make composer update

Kirill42, without sudo I am getting an error:

make composer update
docker compose -f docker/compose.yml -f docker/dev/compose.yml run --rm app composer update
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.51/networks?filters=%7B%22name%22%3A%7B%22app_default%22%3Atrue%7D%7D": dial unix /var/run/docker.sock: connect: permission denied
make: *** [Makefile:67: composer] Error 1

I did not mention, that I had to use sudo with the first Yii3 installation command, otherwise I was unable to continue:

sudo docker run --rm -it -v "$(pwd):/app" --user $(id -u):$(id -g) composer/composer create-project yiisoft/app yii3-docker

It looks like it is related.

I guess this documentation can help: Manage Docker as a non-root user

1 Like

Kirill42, thank you very much. It is working both ways. :star_struck:

Docker from Ubuntu repositories
(Advantage: You do not need third party repository.)

  1. Install Docker from Ubuntu repositories:
sudo apt update
sudo apt install make docker.io docker-buildx docker-compose-v2
  1. Add your user to docker group (detailed documentation):
sudo groupadd docker # should be already added
sudo usermod -aG docker $USER
  1. Restart computer or virtual machine.

  2. Follow an official Yii3 installation:
    Creating a project | Yii3 Documentation

(Tested on fresh fully updated Ubuntu 25.10 installation)

Docker from Docker repositories
(Advantage: You will have the latest Docker version.)

  1. Install Docker from Docker repositories (or any other method there):
    Ubuntu | Docker Docs

  2. Add your user to docker group:
    Post-installation steps | Docker Docs

  3. Restart computer or virtual machine.

  4. Follow an official Yii3 installation.

(Tested on fresh fully updated Ubuntu 25.10 installation)

Samdark, thank you for releasing Yii3. Please consider adding relevant informations from this topic to the official documentation, so another newbie like me does not have to struggle with it anymore.