I got this error trying to create a site:
peer@bv-dev:~$ fm create he --frappe-branch version-15 --apps erpnext:version-15
✅ Halting other sites: Done
✅ Ports Check : Passed
⚠ Pulling Docker Images: Failed
❌ Starting Docker Containers: Failed
peer@bv-dev:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
peer@bv-dev:~/frappe/logs$ docker compose
docker: 'compose' is not a docker command.
See 'docker --help'
peer@bv-dev:~/frappe/logs$ apt search docker compose
Sortierung… Fertig
Volltextsuche… Fertig
docker-buildx/jammy-updates 0.12.1-0ubuntu1~22.04.1 amd64
Docker CLI plugin for extended build capabilities with BuildKit
docker-compose/jammy,now 1.29.2-1 all [installiert]
define and run multi-container Docker applications with YAML
docker-compose-v2/jammy-updates 2.24.6+ds1-0ubuntu1~22.04.1 amd64
tool for running multi-container applications on Docker
python3-ck/jammy 1.9.4-1.1 all
Python3 light-weight knowledge manager
resource-agents-extra/jammy-updates 1:4.7.0-1ubuntu7.2 amd64
Cluster Resource Agents
So it’s clear that docker compose is not installed.
But it kind of silently fails (see above), since the real reason of the failure is not stated. It would help the user to say that docker compose is missing and how it can be installed – and which version.
This is somewhat similar to the “docker doesn’t run” message when the user lacks permissions. That error message technically was a lie because the docker demon ran. So it somewhat confuses the user. A solution to this is known (see above, adding user to docker group), which is a choice the admin can make.
Here, a clear error message simply is absent. But I guess clearer message directing the admin to or even stating a solution can be integrated, which would be my wish.
My immediate question now is: There are two versions of docker compose to install.
docker-compose/jammy,now 1.29.2-1 all [installiert]
define and run multi-container Docker applications with YAML
docker-compose-v2/jammy-updates 2.24.6+ds1-0ubuntu1~22.04.1 amd64
tool for running multi-container applications on Docker
Which one to choose?
The install-script for debian frontendet OSs wants to install some “docker-compose-plugin” which doesn’t exist on ubuntu:
For your convenience, here are parts of the log messages which might help you see how the situation looks like from fm’s point of view:
[2024-06-27 06:36:31,327] INFO: ::::::::::::::::::::FM Invoked::::::::::::::::::::
[2024-06-27 06:36:31,327] INFO:
[2024-06-27 06:36:31,327] INFO: RUNNING COMMAND: logs he
[2024-06-27 06:36:31,327] INFO: --------------------
[2024-06-27 06:36:31,342] DEBUG: - -- -- -- -- -- -- -- -- -- -
[2024-06-27 06:36:31,342] DEBUG: DOCKER COMMAND: docker version --format json
[2024-06-27 06:36:31,361] DEBUG: {"Client":{"Version":"24.0.7","ApiVersion":"1.43","DefaultAPIVersion":"1.43","GitCommit":"24.0.7-0ubuntu2~22.04.1","GoVersion":"go1.21.1","Os":"linux","Arch":"amd64","BuildTime":"Wed Mar 13 20:23:54 2024","Context":"default"},"Server":{"Platform":{"Name":""},"Components":[{"Name":"Engine","Version":"24.0.7","Details":{"ApiVersion":"1.43","Arch":"amd64","BuildTime":"Wed Mar 13 20:23:54 2024","Experimental":"false","GitCommit":"24.0.7-0ubuntu2~22.04.1","GoVersion":"go1.21.1","KernelVersion":"5.15.0-113-generic","MinAPIVersion":"1.12","Os":"linux"}},{"Name":"containerd","Version":"1.7.12","Details":{"GitCommit":""}},{"Name":"runc","Version":"1.1.12-0ubuntu2~22.04.1","Details":{"GitCommit":""}},{"Name":"docker-init","Version":"0.19.0","Details":{"GitCommit":""}}],"Version":"24.0.7","ApiVersion":"1.43","MinAPIVersion":"1.12","GitCommit":"24.0.7-0ubuntu2~22.04.1","GoVersion":"go1.21.1","Os":"linux","Arch":"amd64","KernelVersion":"5.15.0-113-generic","BuildTime":"2024-03-13T20:23:54.000000000+00:00"}}
[2024-06-27 06:36:31,362] DEBUG: RETURN CODE: 0
[2024-06-27 06:36:31,362] DEBUG: - -- -- -- -- -- -- -- -- -- -
[2024-06-27 06:36:31,363] DEBUG: - -- -- -- -- -- -- -- -- -- -
[2024-06-27 06:36:31,363] DEBUG: DOCKER COMMAND: docker compose -f /home/peer/frappe/sites/he.localhost/docker-compose.yml ps --format json
[2024-06-27 06:36:31,377] DEBUG: unknown shorthand flag: 'f' in -f
[2024-06-27 06:36:31,377] DEBUG: See 'docker --help'.
[2024-06-27 06:36:31,377] DEBUG:
[2024-06-27 06:36:31,377] DEBUG: Usage: docker [OPTIONS] COMMAND
[2024-06-27 06:36:31,377] DEBUG:
[2024-06-27 06:36:31,377] DEBUG: A self-sufficient runtime for containers
[2024-06-27 06:36:31,377] DEBUG:
[2024-06-27 06:36:31,377] DEBUG: Common Commands:
[2024-06-27 06:36:31,377] DEBUG: run Create and run a new container from an image
[2024-06-27 06:36:31,377] DEBUG: exec Execute a command in a running container
[2024-06-27 06:36:31,377] DEBUG: ps List containers
[2024-06-27 06:36:31,377] DEBUG: build Build an image from a Dockerfile
[2024-06-27 06:36:31,377] DEBUG: pull Download an image from a registry
[2024-06-27 06:36:31,377] DEBUG: push Upload an image to a registry
[2024-06-27 06:36:31,377] DEBUG: images List images
[2024-06-27 06:36:31,377] DEBUG: login Log in to a registry
[2024-06-27 06:36:31,377] DEBUG: logout Log out from a registry
[2024-06-27 06:36:31,377] DEBUG: search Search Docker Hub for images
[2024-06-27 06:36:31,377] DEBUG: version Show the Docker version information
[2024-06-27 06:36:31,377] DEBUG: info Display system-wide information
[2024-06-27 06:36:31,377] DEBUG:
[2024-06-27 06:36:31,378] DEBUG: Management Commands:
[2024-06-27 06:36:31,378] DEBUG: builder Manage builds
[2024-06-27 06:36:31,378] DEBUG: container Manage containers
[2024-06-27 06:36:31,378] DEBUG: context Manage contexts
[2024-06-27 06:36:31,378] DEBUG: image Manage images
[2024-06-27 06:36:31,378] DEBUG: manifest Manage Docker image manifests and manifest lists
[2024-06-27 06:36:31,378] DEBUG: network Manage networks
[2024-06-27 06:36:31,378] DEBUG: plugin Manage plugins
[2024-06-27 06:36:31,378] DEBUG: system Manage Docker
[2024-06-27 06:36:31,378] DEBUG: trust Manage trust on Docker images
[2024-06-27 06:36:31,378] DEBUG: volume Manage volumes
[2024-06-27 06:36:31,378] DEBUG:
[2024-06-27 06:36:31,378] DEBUG: Swarm Commands:
[2024-06-27 06:36:31,378] DEBUG: swarm Manage Swarm
[2024-06-27 06:36:31,378] DEBUG:
[2024-06-27 06:36:31,378] DEBUG: Commands:
[2024-06-27 06:36:31,378] DEBUG: attach Attach local standard input, output, and error streams to a running container
[2024-06-27 06:36:31,378] DEBUG: commit Create a new image from a container's changes
[2024-06-27 06:36:31,378] DEBUG: cp Copy files/folders between a container and the local filesystem
[2024-06-27 06:36:31,379] DEBUG: create Create a new container
[2024-06-27 06:36:31,379] DEBUG: diff Inspect changes to files or directories on a container's filesystem
[2024-06-27 06:36:31,379] DEBUG: events Get real time events from the server
[2024-06-27 06:36:31,379] DEBUG: export Export a container's filesystem as a tar archive
[2024-06-27 06:36:31,379] DEBUG: history Show the history of an image
[2024-06-27 06:36:31,379] DEBUG: import Import the contents from a tarball to create a filesystem image
[2024-06-27 06:36:31,379] DEBUG: inspect Return low-level information on Docker objects
[2024-06-27 06:36:31,379] DEBUG: kill Kill one or more running containers
[2024-06-27 06:36:31,379] DEBUG: load Load an image from a tar archive or STDIN
[2024-06-27 06:36:31,379] DEBUG: logs Fetch the logs of a container
[2024-06-27 06:36:31,379] DEBUG: pause Pause all processes within one or more containers
[2024-06-27 06:36:31,379] DEBUG: port List port mappings or a specific mapping for the container
[2024-06-27 06:36:31,379] DEBUG: rename Rename a container
[2024-06-27 06:36:31,379] DEBUG: restart Restart one or more containers
[2024-06-27 06:36:31,380] DEBUG: rm Remove one or more containers
[2024-06-27 06:36:31,380] DEBUG: rmi Remove one or more images
[2024-06-27 06:36:31,380] DEBUG: save Save one or more images to a tar archive (streamed to STDOUT by default)
[2024-06-27 06:36:31,380] DEBUG: start Start one or more stopped containers
[2024-06-27 06:36:31,380] DEBUG: stats Display a live stream of container(s) resource usage statistics
[2024-06-27 06:36:31,380] DEBUG: stop Stop one or more running containers
[2024-06-27 06:36:31,380] DEBUG: tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
[2024-06-27 06:36:31,380] DEBUG: top Display the running processes of a container
[2024-06-27 06:36:31,380] DEBUG: unpause Unpause all processes within one or more containers
[2024-06-27 06:36:31,381] DEBUG: update Update configuration of one or more containers
[2024-06-27 06:36:31,381] DEBUG: wait Block until one or more containers stop, then print their exit codes
[2024-06-27 06:36:31,381] DEBUG:
[2024-06-27 06:36:31,381] DEBUG: Global Options:
[2024-06-27 06:36:31,381] DEBUG: --config string Location of client config files (default "/home/peer/.docker")
[2024-06-27 06:36:31,381] DEBUG: -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")
[2024-06-27 06:36:31,381] DEBUG: -D, --debug Enable debug mode
[2024-06-27 06:36:31,381] DEBUG: -H, --host list Daemon socket to connect to
[2024-06-27 06:36:31,381] DEBUG: -l, --log-level string Set the logging level ("debug", "info", "warn", "error", "fatal") (default "info")
[2024-06-27 06:36:31,381] DEBUG: --tls Use TLS; implied by --tlsverify
[2024-06-27 06:36:31,381] DEBUG: --tlscacert string Trust certs signed only by this CA (default "/home/peer/.docker/ca.pem")
[2024-06-27 06:36:31,382] DEBUG: --tlscert string Path to TLS certificate file (default "/home/peer/.docker/cert.pem")
[2024-06-27 06:36:31,382] DEBUG: --tlskey string Path to TLS key file (default "/home/peer/.docker/key.pem")
[2024-06-27 06:36:31,382] DEBUG: --tlsverify Use TLS and verify the remote
[2024-06-27 06:36:31,382] DEBUG: -v, --version Print version information and quit
[2024-06-27 06:36:31,382] DEBUG:
[2024-06-27 06:36:31,382] DEBUG: Run 'docker COMMAND --help' for more information on a command.
[2024-06-27 06:36:31,382] DEBUG:
[2024-06-27 06:36:31,382] DEBUG: For more help on how to use Docker, head to https://docs.docker.com/go/guides/
[2024-06-27 06:36:31,382] DEBUG:
[2024-06-27 06:36:31,383] DEBUG: RETURN CODE: 125
[2024-06-27 06:36:31,383] DEBUG: - -- -- -- -- -- -- -- -- -- -
Anyway, it’s a very nice tool made with love, and that’s great.